9 Feb 2026
About a month ago, my PC’s boot drive died. I had been running Windows 11 with moderate dissatisfaction for a few months, so I decided to switch over to Linux as my primary OS. These are some notes on that process. My motivation is to give an accurate portrayal of what to expect out of the switching process and the day-to-day operation.
TLDR: The Linux desktop is way better in 2026 than it was in 2016. Native app support is far more common, and Proton is really good. If dual booting was not still necessary for edge cases, I would wholeheartedly recommend it.
I knew immediately that I’d be dual booting. My memory told me that some apps just would not work well, and the virtualization tax is high, so I’d want a native Windows install. So I made my first mistake: I installed Linux, then Windows. The opposite order is far more streamlined. So I just overwrote my install with Win11. I left half my drive as unallocated space for the Linux install.
After rebooting normally to make sure Windows was really working, it was time to install Linux. My new install would not let me get into BIOS - my keyboard inputs did not work. There are one-time flags you can set via shell (PowerShell and BASH) to do various boot-related tasks without keyboard input. To get into BIOS:
shutdown /r /fw /t 0sudo systemctl reboot --firmware-setupMy keyboard did work once in the BIOS, so I was then able to enter my
Linux bootable USB. I had some trouble getting the bootable USB to work.
I had to install the media via Rufus’s dd mode instead of
the default.
I installed my distro as normal in the unallocated space, then rebooted. GRUB showed up, showing my Linux install as default and the Windows boot manager below. Somewhat unsurprisingly, my keyboard didn’t work in GRUB. I heard that disabling fast boot and xhci handoff in the BIOS can help, but this only temporarily helped before the issue resurfaced and then resolved itself. My current config has fast boot off and xhci handoff off.
My solution to the pre-BIOS/GRUB keyboard issue is just to use shell
commands to reboot. To get from Windows to Linux, I just reboot as
normal since Linux has prio by default in my install. To go from Linux
to Windows, I installed efibootmgr, ran it to get the
numeric ID of the Windows boot manager (0000), then crafted this one
liner:
sudo efibootmgr --bootnext 0000 && rebootI use ctrl+R to find it every time I need to reboot.
I’m using the Ubuntu 2024 LTS as my distro. My first point of confusion getting started was the apparent surfeit of package managers: apt (the standard), snap (canonical’s thing), and flatpak (some semi popular community thing). snap and flatpak are sandboxed by default, which is really just a massive fucking pain in the ass for GUI apps. So I use apt wherever possible, and raw .deb files for the rest.
Audio’s a little scuffed, but seems like we’ve mostly gotten on the pulse audio train (thank God).
For whatever reason, my motherboard’s audio output sets itself to 39%
volume. I have to use alsamixer to increase this to
100%.
I used pavucontrol to disable irrelevant speakers and
mics s.a. monitor speakers.
Firefox comes pre-installed on Ubuntu. Firefox is slowly going the way of Windows, but Just The Browser has some easy one liners to de-shittify it. Waterfox is also interesting, but I haven’t tried it yet.
I used the raw .deb to install Discord. It will ask you to manually update every few days. I wrote this shell script to speed that up:
#!/usr/bin/env bash
# updisc: update discord
set -o errexit
set -o xtrace
cd $HOME/Downloads
wget --content-disposition "https://discord.com/api/download/stable?platform=linux&format=deb"
latest=$(ls -v | grep discord | tail -n1)
sudo dpkg -i "$latest"The snap works fine for this. Installed it through the App Center (Canonical’s app store).
(Preachy note: Spotify kind of sucks. Avoid using their auto generated playlists. Spotify has something called the Perfect Fit Program which commissions and pushes music to listeners based on non-public preference data. Artists involved in this program are not well compensated. Read about it in Liz Pelly’s expose.)
I use the raw .deb to install Steam. I tried the flatpak at first, but the sandboxing doesn’t play nicely with proton. Steam will keep itself up to date so the raw .deb is fine.
I had some issues with graphics drivers in certain games and had to
roll back my driver from 590 to 570. You can list your driver with
nvidia-smi, and install some other version (e.g. 570) with
sudo apt install nvidia-driver-570. It will ask for a
password - this only has to be entered once after reboot, after which
the driver will be trusted forever.
If your game uses Easy Anti Cheat and Proton, you’ll need to install the Proton EasyAntiCheat runtime. It should be listed in your library by default.
Proton has a heavy FPS hit vs. Windows native (like 30%), but I’m not a competitive gamer and my computer is very over-built, so I don’t care.
I downloaded the LTS .tar.xz from the website and put it in my bin directory. I think it’s probably smarter to use Steam for this. Do not use the snap version - it won’t let you install addons from the web.
If you use an NDOF input device like a spacemouse, install spacenavd via apt. You might have to relaunch blender.
Otherwise, pretty much identical experience.
Superficially, Unity basically just works. Install the hub using the official Unity3D documentation.
My problems with Unity so far are:
You can use ALCOM/vrc-get to create VRChat projects. Get it from github.
Linux is way, way more polished than I remember it. Back in college I was fucking around with Arch (and didn’t know what I was doing) so I was expecting a far more painful setup process. Instead it was very seamless. Audio works well. There are very few weird audio/graphical bugs. NVIDIA drivers are easy to install. Gaming basically just works - I have yet to encounter a game which I can’t play (I’ve only tried maybe a dozen).
The amount of native app support is really heartwarming. Skipping over the big apps like Firefox and Steam, here are some smaller apps I was surprised to see native support for:
Canonical uses the “yes/maybe later” pattern which degrades the notion of consent. Nearly every large firm does it now since Google about-faced a couple years ago, but it is still a grave degradation of user rights that shouldn’t be glossed over.
SteamVR does not work for me. My knuckles did not have an internally consistent coordinate system, preventing me from completing room calibratino. I was never able to figure this out. This, along with Unity’s crashy behavior on Vulkan, are what’s keeping me from just deleting Windows.
The Linux desktop is really good. You should give it a try.