Switching to Linux

This has been a long time coming, with a lot of preparation and research involved, but it’s finally time. I’m switching to Linux for my everyday computing after using Windows almost exclusively on the desktop for the majority of my life. I’ll explain a bit more about why, but if you’re just curious about my new setup, here it is:

My Framework laptop looking majestic and showing the Fedora boot screen.

There’s very little so far that I haven’t been able to translate over from my old setup. A lot is very different, of course, and there have been some challenges to overcome. I think it’s all worth it in the long run though, and I already used a lot of free and open-source software before this, which makes the transition a lot easier.

How?

I bought a refurbished Framework laptop along with the SSD and RAM (separately to save money and just because I had specific preferences), slapped the latest version of Fedora on an ancient 16GB flash drive I had laying around, and got to tinkering. Setting up the laptop hardware was the easiest part. I think it took me about 15 minutes total including taking photos to document the process.

The inside of the laptop, showing how accessible the RAM and storage are for upgrades.

Installing Fedora was also fairly easy, with a few little hiccups that someone more experienced in setting up Linux systems probably wouldn’t have run into. The biggest one was from trying several different desktop environments, and even after uninstalling the ones I didn’t like, there were clearly residual pieces left over which I did not have the expertise to cleanly remove. I did a clean install of the Xfce spin which resolved those lingering issues.

Actually choosing the exact distribution to install was one of the things that gave me trouble since that landscape has changed a lot since I had my dual-boot desktop system in college. I knew I wanted to run a version of Fedora since it has a reputation for being more stable, secure, and privacy-oriented. However, the default GNOME “desktop” that comes with Fedora Workstation was a complete deal-breaker, so I looked into the “spins” that offer different shells out of the box. I’m sure there are people out there who tolerate the new GNOME, but I am not one of them. I’m just going to call it “the wish.com iOS clone for making computers less usable” and move on. I was a big fan of KDE Plasma back in the day, but I experienced some serious graphical glitches that made it unusable for me. Cinnamon was usable but not particularly customizable. I settled on Xfce since it’s clean, simple, customizable, and just gets out of my way and lets me actually use my computer the way I want.

I did run into some issues with Xfce too though. There is a known issue with X11 on Intel graphics that results in extreme screen tearing. The typical solution that most people recommend is to edit a graphics driver configuration file, but that caused such bad issues with screen updates that I could hardly do anything. I lived with the tearing for a little while until I found an article with advice on installing the compton compositor which cleared it up beautifully.

I still don’t have the fingerprint reader working acceptably, but that’s a relatively minor issue. I was able to start enrolling fingerprints with fprintd-enroll, but ran into issues using those fingerprints. Logging in to the laptop would require a fingerprint along with at least two entries of my password, so I disabled fingerprint authentication from a simple usability standpoint. I plan to troubleshoot that, but it seems like it will be a long-term project.

A lot of the software I use is already cross-platform and runs natively, like LibreOffice, Visual Studio Code, Vivaldi, GIMP, Inkscape, KiCad, and Steam. Steam has actually been an especially pleasant surprise since Valve has been working so hard on Linux compatibility for the Steam Deck. Many of my Steam games will even run natively, and for the ones that don’t, Steam has the Proton compatibility layer. Gaming on Linux is still not quite always plug-and-play, but it’s leaps and bounds better than it was even a few years ago.

Discord is one piece of software that is a little trickier. There is a browser client that I’m sure would work fine, but I prefer to run the native client when I can. If you’re on a Debian-based system, you’re golden since there is an official .deb package available. Everyone else gets a tarball with the executable and related files, and good luck to you when a new version is released. At least there is a Linux client at all, but having to manually download and install every update (especially with how frequently Discord seems to update) would not be very nice. That’s why I wrote a launcher for the Discord client which checks whether there’s a new version every time it’s launched, and if there is one, it downloads and installs it seamlessly.

I also started working on automating my data backup setup since I’m already using restic and backing up manually is a pain. I plan to update that repository frequently as I develop my backup strategy further, and I also want to write more about it here.

One final note: there are a lot of discussions I found about issues with the HDMI port from Framework, and it sonuds like that’s ongoing. Unfortunately I found out because I was researching why my HDMI port was so wonky, but I’m hopeful there might be a fix at some point. Long story short, getting an external display to work over the HDMI port in the laptop is very hit-and-miss, and getting sound over HDMI is even less likely. It didn’t work for my use case, which was to plug into our TV to watch streams from sources that don’t have Roku apps, but it might work for an external monitor depending on what exact monitor you have. For serious work with external displays, I still plan to use an eGPU at some point. More on that soon.

Why?

I have a lot of different reasons for wanting to change how I do my computing. Some of them are practical, like wanting to learn Docker and being frustrated with the artificial restrictions Microsoft places on the Windows Home editions preventing it from running without just the right workarounds. If I have to run it under WSL anyway, just cutting out the middleman and going directly to Linux is the next logical step. Linux is also a lot more developer-friendly overall, with a lot of common programming tasks being a lot easier than on Windows, especially with a more robust set of command-line tools.

Some of my reasons are more philosophical and have to do with the increasing divide in the technology industry between support and denial of right to repair. I consider Microsoft to be firmly anti-right-to-repair due to their long-standing history of locking things down with proprietary designs and DRM, and while that may be changing, they still have a long way to go. When the best advice for keeping your OS running after a hardware upgrade is still to contact support and hope they’ll let you reactivate, that’s about as far from ideal as you can get without being Apple.

And of course, some of my reasons are purely preferential. I’ve long been a critic of Microsoft’s tendency (along with most other big tech companies) to completely redesign user interfaces, keeping the underlying functionality mostly the same but making things harder to find. It goes way beyond that innocent (if annoying) pattern though: Microsoft makes extensive use of dark patterns in Windows and elsewhere, actively pushing users to use the Edge browser and use a Microsoft account to log in instead of a local one. It’s getting worse with Windows 11, and I don’t want to have to deal with that.

Finally, just having a laptop I can repair and upgrade is very appealing for a lot of reasons. I’ve used a laptop as my primary computer before, but it was not the best experience. It was a big, heavy, noisy multimedia machine with a slow mechanical hard drive (this was 2013 after all) that started to fail after about 2 years. Having a computer that’s more mobile was one of my goals since being tethered to a desk has some serious downsides. I built my last desktop in a Fractal Design Define R5, which is a great case if you want a quiet computer, but not so much if you want one that’s easy to move. This laptop is supremely light and easy to handle, so I can just bring it whereever I’m going instead of centering my computing around a fixed desk with a big heavy monolith of a PC. Being able to repair and upgrade my hardware is also a big reason why I chose the Framework laptop. There are other options starting to come to market (since there’s clearly demand given how well the Framework is selling), but none that are nearly as good. The Framework laptop is high-quality hardware that’s easy to use and I don’t have to give up too much of the modularity of a desktop machine. I plan to eventually build another desktop, but not until we’ve settled down more permanently. I’ve lugged the Define R5 through 3 moves, including one long-distance one, and it’s a bit much to manage.

My old laptop did have a discrete graphics card (a GeForce GTX 750M), so it was pretty decent at running the kind of relatively non-intensive games I enjoy. I’m finding that’s not as much of a requirement now — integrated graphics have come a long way, and the Iris Xe GPU in my new laptop handles my 2013 games very smoothly. There are a few that don’t work, notably Watch Dogs: Legion, but that’s more often due to invasive anti-cheat software that doesn’t work anywhere but on Windows. Since people have had luck getting Watch Dogs 2 running, maybe that will get better over time. I’ve finished both games on Windows, so it’s not the end of the world if I can’t play one again for a while. Another thing that’s improved drastically in the last 10 years is external GPU support. Thunderbolt/USB4 makes it possible to tunnel a PCIe connection over a type-C connection, which provides enough bandwidth to support a desktop GPU in an external enclosure with the right controller chips and power setup. I definitely plan to explore my options there and write about what I find.

So…

Anyway, I’m really excited about this and I’m looking forward to all the learning that’s in my future. I don’t expect this to be easy, and there were a few times I was tempted to give up and go back to Windows, but I’m glad I stuck with it. It’s good to be back on Linux, and I’m looking forward to being able to drop in a new motherboard, CPU, and RAM when it’s time to upgrade without worrying about whether my OS will revolt. It’s a great time to switch to Linux, and an even better time to switch away from Windows. I truly believe Microsoft is doing a lot of great things, but not with Windows. Fortunately there are plenty of other options out there, and there’s exciting hardware like the Framework laptop to explore those options on and make them even better.