_                   _                      _   
 _| | __ _____ ___ ___|_|___ _____    ___ ___| |_ 
| . ||. |     | . |   | |_ -|     |_ |   | -_|  _|
|___|___|_|_|_|___|_|_|_|___|_|_|_|_||_|_|___| |  
                                             |__| 
A stream of consciousness.

The Year of Linux on the Desktop - Part 4: What does work

Linux The Year of Linux on the Desktop

I’ve been living the Linux desktop lifestyle for a couple of months now. Not full time, and not exclusively, but what desktop computing I do I’ve tried to do under Linux (still the ARM Ubuntu desktop running as a virtual machine under UTM on the M2 Pro Mac Mini). And it’s mostly been… fine?

So rather than just complaining, I figured I’d document some solutions I’ve come up with and how they’re working for me.

As I’d noted earlier, Firefox for web browsing and Neomutt and Newsboat running in Alacritty have been continuing to do a decent job. The ARM build of Newsboat only seems available in Snap format, which is a bit limiting1, but it basically works. Firefox, which I had not used regularly for decades, is also surprisingly good, and Firefox Sync brings a bit of the cross-device feel of Safari in the Apple ecosystem.

Let the music play

I’d complained last time about the difficulty of doing things like loading music onto my iPhone. The solution I’ve found for that is running Jellyfin (which is an open source media server) on my Synology2 and pointing it at a folder full of MP3 files.

There are a number of decent iOS clients I’ve tried, including Manet, which has a good CarPlay interface, and AmpFin, which has an okay iPad version. Both Manet and AmpFin support downloading tracks to the device, so you can take your music with you, but it also works fine streaming with the Synology and the iPhone both on a common Tailscale network. This is a nice enough solution that even if I abandoned my Linux experiment I’d stick with it.

There are also a bunch of desktop Jellyfin-compatible music players that are also… fine. I haven’t yet found one that supports Airplay from the Mac, but Feishin works fine on Linux Jellyfin Media Player works on a Mac and supports streaming to Sonos speakers using DLNA. Feishin is an electron app (I suspect Jellyfin Media Player is as well), with all the ugliness and non-nativeness that implies, but that’s pretty much as good as it gets in the Linux world.

Workish work

I don’t do “work” work on my home computer, but I do some workish things.

One of the things that only partly worked was doing my taxes. This task uses a bunch of different applications: email, PDFs, spreadsheets, web browsers. I was able to use the web-based version of Excel via Microsoft 356 with Firefox with no problem. Searching emails and PDFing receipts was a bit too hard with Mutt, so I did that on the Mac – I’m sure it was possible, but tax time is painful enough that I wasn’t in the mood to take any longer than strictly necessary doing it. Weirdly, the Tax Office website didn’t seem to want to work with Firefox on Linux. Again, I didn’t spend a lot of time debugging that; I just went onto the Mac to do that.

Why use Excel on the web when I could have used LibreOffice? Mostly because I knew how to do what I wanted to do in Excel. I did, however, have to submit a job application recently, and I used LibreOffice Writer for that. Once I’d installed the standard Microsoft fonts3, it was straightforward enough to compose, PDF and send the required documents (including my Resume, which has some non-standard formatting). My main complaint about LibreOffice is it still looks like a word processor from the 1990s (and not one of the good ones from the 1990s).4

One issue I did come across here is I’d traditionally kept all of these sorts of documents on iCloud Drive, synced across my devices. After contemplating a couple of different cloud-based sync solutions, I eventually decided to go old-school. I copied all of the files across to a Synology-hosted SMB-shared home drive, which I can access from any computer on my network. I can even access the share remotely from all my iOS devices using Secure ShellFish, an sftp iOS Files client.

When I have some more time or inclination I’ll look a bit more closely at things like file system search/indexing, PDF reading and creation and so on, but I assume there is probably some fine but not great Linux solutions for those sorts of things. And I don’t need them every day, so if they’re “Linux ugly” I can probably cope with that.

For the occasional light worky work, I’d say that Linux is probably “good enough”. It won’t fill you with joy, but it should be possible. And I guess that’s sufficient (if there is actually some way to get the ATO e-tax website working on Firefox).

Cross-platform apps

There are a couple of what should be easy wins – apps that I’ve used on the Mac that are cross-platform anyway. Even that isn’t necessarily straight-forward, it turns out.

A good example of this is note-taking app Obsidian. As an Electron app, Obsidian looks equally bad everywhere, but pretty much everything about it is cross-platform, so you can extend it with plugins that work on the desktop and on your Apple mobile devices. Except, if like me you start out on Apple mobile devices, you may be using iCloud for syncing your library. And iCloud doesn’t work on Linux.

The solution here was a plugin called Remotely Save, which can sync your library with a variety of third party cloud services. I’m using WebDAV to sync, and it seems to work okay (and it’s one of the few free options offered), but it also feels a little like it’s a house of cards that could come toppling down any moment.

The other thing with Obsidian is that Linux on ARM is only supported as an AppImage package. Weird-arse mutually incompatible packaging formats is something that Linux has really leaned into as the solution to dependency hell.5 I’m not a fan.

AppImages are pretty janky under modern Ubuntu. They’re essentially everything that is wrong with Linux for normal people. That’s probably okay – normal people shouldn’t really be running Linux on ARM at the moment. But it’s symptomatic of the death by a thousand paper cuts that keeps normal people away. I think this would be less of a problem if I was running Linux on x86, but not entirely not a problem.

This is just the end of the beginning

Everyone does different things on their computers, but the sorts of things that I’ve found are possible (if not always pleasant) on Linux are the sorts of things that most people will probably find themselves doing at some point. It actually does give me some kind of hope that I probably could (mostly) use Linux as an everyday desktop OS. There are some unsolved issues, but not insurmountable ones, I suspect.

Clearly some of the issues I’m having are down to me using ARM Linux on a VM on a Mac.6 ARM Linux isn’t particularly mature and VMs can cause their own problems. So at some point in this project I want to have a go at doing all this on an x86 machine, to the extent that I’m starting to scope out what my “pointless projects” budget might be able to absorb in the way of mini PCs. One thing that doesn’t work well under the UTM VM is Remote Desktop, so I can’t easily tell whether that will be a good solution or whether I’m going to have to find a PC that works well with the Apple Studio Display (which only supports USB-C/Thunderbolt input). Anyway, stay tuned.


  1. The snap Newsboat build is sandboxed so you can’t easily do things like load up a text mode browser to read a post (you can open a post in Firefox, but that’s about it), or even automatically pull the username and password out of Bitwarden (which is natively supported in the config file for the non-Snap version). ↩︎

  2. Pro tip: Jellyfin is awful on spinning rust hard disks. You really need to use an SSD or you’ll be in a world of pain. Luckily, this solution worked well to get a couple of unsupported SSD running as a volume on the Synology, and now it flies. ↩︎

  3. No, I don’t love the Microsoft fonts, but if the application process says “submit a two page application” you really need to be using the same fonts as the rest of the business world does to ensure that your application is really two pages. ↩︎

  4. Fun fact: because I’m very old, I’m not only old enough to remember when StarOffice was opened sourced to become Open Office (and then LibreOffice), I’m so old I worked in a place that used StarOffice on SunOS workstations, before it was open sourced. ↩︎

  5. Snaps and AppImage are the two main offenders I’ve encountered. Neither solution works either like traditional (apt get install) Linux or macOS (drag and drop into the Applications folder) installs. They’re basically the worst of all worlds. AppImages may run on a double-click from the Files app, but only if you’ve unzipped them and set them as executable, but when you do you can’t pin them to the Dock, and it’s unclear where on the file system you should be storing them. Snaps store all their data in ~/snap, which complicates dot file management and just basically keeping your home folder clean and organised. ↩︎

  6. I did have some weird crashing issues with UTM where the VM seemed to be running (you could SSH into it) but the display was unresponsive (the mouse cursor would move but nothing would respond to input). I’ve had better luck using the virtio-ramfb-gl OpenGL display drivers in UTM with required using renderer = "gles2pure" in my Alacritty config to get Alacrity working. ↩︎