Back in June 2020, I switched to using Linux. Ultimately, I found switching between contexts (Mac at work, Linux at home) too frustrating, and turned tail.

About a month ago, I had a growing urge to try again.

Why Linux

Two main reasons:

  1. The terminal is a first class citizen in Linux. I am spending most of my time in Neovim currently, and there is no context switching to concern me. The thing is, due to the ‘modal’ nature of Vim, ‘shortcuts’, or key mappings are the same, you don’t have the same “ctrl+c” (PC/Linux) or “cmd+c” (Mac) for copy to wrap your head around. Vim is vim, regardless of host operating system.

  2. Tiling window managers are a thing in Linux I want to be able to start my machine, and have certain programs open, assigned to certain ‘workspaces’, in certain positions. You can’t do that in macOS. You can in Linux. And it works amazingly! Switching between these workspaces is instant. super+1 for workspace/desktop 1 with Terminals, super+2 for browsers on workspace/desktop 2 etc. With none of the nonsense animations you get on macOS when using space switching in Mission Control. There used to be defaults write missioncontrol-animation-duration -float 0 but that doesn’t seem to do anything in Big Sur.

So having built a lovely PC to handle the task I had better summarise what is great about Linux. Before I explain why I’m giving up again.

The Good:

  • Speed – everything is instant. Arch Linux is a challenge to set up but you have pretty much only the things you add yourself. And that makes for a very fast system.
  • The Sway tiling window manager is as effective as I hoped it would be. Assign programs to start on login and move to their workspace (I had 1. Code, 2. Web, 3. OBS, 4. Edit, 5. Mail). You can have each workspace split up however it suits. Then, say you want to check your mail? It’s just super+5. No more alt+tab to cycle to where you want! When you are in a workspace, any new program you open gets a designated split of the screen. It’s simpler than it sounds and in the main I prefer it to the floating window system we are used to in macOS.
  • Customising your system UI is handled by just a couple of config files. I used Waybar. But you could have or write whatever you want to see in your menu bar, time and effort permitting, and I found that quite liberating
  • The Sway window manager handles HiDPI scaling effortlessly. On the 32” 4K display I have, I like a x1.25 scale. So 3840 physical pixels wide results in 3072 usable pixels. That’s the sweet spot for me. Setting that in Sway was as simple as output DP-1 scale 1.25 in the config file.
  • The Arch ‘Pacman’ package manager is great. And if you want anything beyond the core Arch stuff, ‘Yay’ was equally impressive
  • all the usual niceties like a quick launcher are catered for. I used uLauncher with Sway.
  • Arch Linux Wiki and forum users were excellent in helping with all my beginner setup woes. Massive kudos to them.
  • You may not have Time Machine on macOS but Syncthing is a solid alternative

So, at first, all was well, and I was starting to think I may be able to replace my M1 Mac Mini at home with this. However, having got my system working relatively well, I set about getting OBS setup so I could record some YouTube videos, and then DaVinci Resolve for the editing.

What you need to understand at this point, is Wayland. Wayland is Linux’s recent display server/compositer ‘thing’. It’s been out a few years now but half (complete guess) of Linux programs still don’t use it. Wayland is what enables apps to be able to handle HiDPI screens well, and it is why I chose Sway as the window manager – few other (any?) make use of Wayland.

Without Wayland you are using all manner of workarounds and sacrificial offerings to the Linux Gods to get anything close to ‘OK’ on a 4K screen.

Thankfully, OBS has just updated to use a Wayland capture thing. However, even if you can get it working, this only works ‘per monitor’. That means your are out of luck if you want to capture just a portion of your screen. Something I almost always want to do.

Then, lets suppose you have your *.mp4 file, you will want to edit it. DaVinci Resolve, the free version, does not deal with mp4 files. It does on Mac. So, I’m not against ponying up the money for decent software. But even then, it doesn’t deal with audio without first running it through FFMPEG.

Sure you can automate this stuff but still!

Then the killer blow. Turns out you need a dedicated discreet GPU for Resolve on Linux. That’s a further £300-400 investment! And no doubt a load of extra hassle getting it behaving.

So this brings me to the bad about Linux.

The Bad:

  • Flakey Bluetooth, my MX Master mouse lags horribly
  • USB audio occasionally didn’t work
  • HiDPI scaling (seems) a horrible mess outside of Wayland environments and Wayland environments don’t seem to play happily with the majority of tools
  • The free version of DaVinci Resolve doesn’t support MP4 formats. You need to look at setting up something that automatically converts your footage into something DaVinci can deal with.
  • OBS can only (theoretically) capture the entire monitor in Sway. Meaning, you can’t record areas of your screen. In my case I typically want my editor and browser at the top left 1920×1080 area so I can record that and still have notes off to the side.

Throwing in the towel

Tinkering is at the heart of Linux and for the most part I enjoyed it. However, there comes a point where you can’t indulge that anymore and need to actually get stuff done.

There is so much to recommend Linux, but for now, I had to pack it up, and move back, tail betwixt legs, to macOS.

Who knows, maybe it will be third time lucky. Until then, I’m off to try Yabai.