The Year of Linux on the Desktop - Part 2: All Email Clients Suck
Linux The Year of Linux on the DesktopIn our previous episode I described how I undertook a new adventure in Linux to see whether it was workable for me these days as a desktop operating system.
But if you’ve ever played around with Linux you’ll know that there isn’t one Linux. Linux comes as distributions and different distributions have their own philosophies and included software and desktop environments and default apps. Your own experience of Linux might not be the same as any other persons'.
In this post I’m going to go through some of the options I’ve explored and choices that I’ve made so far.
The Distro
Linux mainly comes packages as ‘distributions’, or distros. This is the base Linux system1 plus a bunch of packages and probably a default desktop environment and these days windowing system and so on. Distros usually come with a set of defaults that someone thinks works well but most of them will let you customise them to a point where they are essentially unrecognisable.
The other baggage a distro will bring with it is usually a packaging system – a way for you to get software onto the system, with all its correct dependencies. These all use incompatible commands and incompatible file formats and incompatible software repositories to all do essentially the same thing. This is something of a recurring theme in Linux.
As I noted last time, my initial VM was running Ubuntu 24.04 ARM64. I tried a couple of different distros before I ended up with Ubuntu. I have had Linux Mint recommended to me, but it’s too much like Windows for my tastes.
One of the things I’ve always recommended to new Mac users is to try and use the Mac like it has been designed to be used, rather than attempting to make it work like Windows. Embracing the Linuxness of Linux is more difficult to do, because there isn’t just one way to do a Linux desktop. The problem is that a lot of the ways are pretty half-arsed immitations of something else.
One way I’ve tried to lean into the Linuxness of it is using a tiling window manager. I have been trying out Forge, which is a Gnome extension (Ubuntu’s desktop is built on top of Gnome). It works fine for light use, but once you go past one virtual desktop it starts to fall apart, and the project seems to be maybe abandoned. In any case, it’s far from a smooth experience.
The main reason I started playing around with tiling was just one of those quality-of-life things where new applications that were opened on the Ubuntu desktop all stacked their windows on top of one another, and when you move them they don’t remember where they were next time they’re launched. Coming from a Mac, this is quite jarring. A little thing, but any time you have to start googling for the solution to an annoyance you begin to wonder whether this is really the solution for you. A tiling window manager is an extreme answer to this problem, but it’s an answer.
In the end the solution will probably be to try a few different window managers and desktop environments. The applications I’m most interested in using generally aren’t tied to one desktop environment. This is, of course, the reason why it will never actually be the year of Linux on the desktop – too many half-arsed solutions and while one might work for you, getting to that point will require a lot of trial and error.
One of the beauties of a VM is that if you don’t like one distribution you can fire up another and try it, and all it will cost is a bit of disk space and a bit of time. My plan is to spin up a vanilla Debian install next – back to where it all started for me. From there I can try a few different window mangers and desktop environments and see what sticks.
Something that hopefully will make this easy, and will be the topic of a later post, is I’ve migrated all of my dotfiles to chezmoi. In theory this should mean I’ll be able to spin up a new VM and have my desired configuration up and running in a matter of minutes. We’ll see how well that works in practice.
Loading up (Neo)Mutt again is like coming back to an old friend, and realising you forgot he had a meth problem and liked starting fights with cops.
Because I am Very Old my email history started with FidoNet clients on dial-up BBSs (ask your grandparents). From there I migrated to Pine on dial-up Unix systems (fun fact: my first university email address was on a VAX/VMS system), and by the time I was using Linux as my full-time desktop OS I was using Mutt.
This was well before Thunderbird was a thing, and I still don’t like Thunderbird. It reminds me too much of Outlook and Outlook reminds me too much of work. An email client should be quick and efficient and should get out of your way when you’re not using it. And who really uses email that much in their personal life these days? I can count the number of personal emails I’ve got in the last month on one hand (no, this isn’t because I don’t have friends, but because most communication humans do these days is via phone-based messaging services).
Getting back into Mutt was quite the adventure. Mutt doesn’t want you as a user. Mutt certainly doesn’t want to hold your hand. Mutt wants you to suffer because through suffering we gain enlightenment. Or something.
Back when I last regularly used Mutt the way you did email on Linux was to run a separate client to download all your email locally and use your mail client to operate on your local mailbox. Then you had another application to handle sending email, and your client spoke to that. These days you want a client that speaks IMAP and SMTP itself, and Mutt does, which is good. It’s clunky, but if it wasn’t clunky it wouldn’t be Mutt.
Making Mutt work was a fun experience for a number of reasons. One is that Mutt’s key bindings are kind of all over the shop, to the extent that one common approach is to include a 260 line config file that individually turns off each of Mutt’s keybindings. I actually tried that myself and somehow managed to disable the function that let me view a message, which wasn’t all that helpful. Another is how Mutt handles multiple accounts.
But one thing I hadn’t really expected was how broken email formatting is these days. To keep a long story short, an email will let you include multiple formats as “attachments”, so you can have a plain text version and a HTML version. Mutt will let you preference one over the other (Mutt will let you use a text mode web browser to parse the HTML versions, which works surprisingly well). But it turns out a lot of email clients (possibly only or mainly mass emailers for promotional emails) make the text version basically unreadable, but either putting unparsable formatting codes or long tracking URLs throughout the text. Clearly they can get away with that because no-one uses plain text email any more, which makes me a bit sad.
Anyway, after much trial and error I now have Mutt set up to work with several of my IMAP-based email accounts (including Apple iCloud, which works surprisingly well as a normal IMAP server) and it seems to work acceptably well (when I can remember the keyboard shortcuts).
RSS Reading
A lot of my time that I spend on computing-type devices is spent reading the hundreds of RSS feeds that I’ve subscribed to over the years.
I’m not sure this is a good thing. It satisfies my need for novelty, but is probably functionally equivalent to “doom scrolling” in that it’s a thing I do which fills the time but basically only results in me knowing things it probably isn’t useful or necessary for me to know. Knowing a lot makes you feel informed, but probably not happy.
Anyway, it is what it is, and it’s what I do.
Most of my RSS reading is mediated via Feedbin, which is a paid service I’ve been using maybe since Google killed Reader. I’ve occasionally considered migrating away from Feedbin, maybe to a self-hosted service (mostly to relieve myself of one more recurring subscription, but not because it’s not worth the money), but the one thing that keeps my on Feedbin is its email integration. You can subscribe to an email newsletter, or even a promotional email, and it will show up in your RSS feeds. None of the self-hosted or open source services seem to offer this feature.
Feedbin has a pretty good web interface. No-frills, but workable. It also integrates as a back-end for a lot of different RSS readers.
On iOS (and the Mac, but less-so) I use a combination of FieryFeeds and Reeder. Neither is perfect, but both are fine.
One feature they both have, which I use a lot, is that they can load the full page text from sites that have only a page extract (or no page content) in their feeds. This means I rarely have to leave the reader app (great for me, not so great for the site’s page impressions).
So far the best RSS reader I’ve found for Linux is Newsboat. It does have some quirks, though. While it works with Feedbin, the integration is a bit weird.2 It also doesn’t have any obvious way (yet?) to get the full page text. But it does do quite a lot of what I want, so I’m giving it a go.
Also, at the time of writing, there doesn’t seem to be a native ARM64 Ubuntu package, and the Snap version has a few limitations (you can’t call out to a third-party program to supply your password, for example). That’s annoying, but not a show-stopper.
One other RSS reader I did try was NewsFlash, and it’s basically everything that is wrong about FOSS/Linux software. The UI is a direct rip-off (tribute, if we’re generous) of Reeder, but the UX is basically awful. It looks shiny, but where Reeder is a pleasure to use, with a refined and carefully thought-out interface, NewsFlash is basically garbage.
Otherwise, while there are other Linux RSS readers, apps that integrate with Feedbin seem to be a lot rarer.
The rest
Most of the rest of my setup is pretty boring. I’m using Firefox for web browsing, and it’s fine. I use Safari on the Mac so continuing not to use Chrome for most of my web browsing makes sense.
Most of the rest of my setup is identical to what I’ve been using on the Mac:
- Alacritty as a terminal, with the Z Shell and tmux. This is where I spend the majority of the time I’m not in a web browser. I don’t need anything fancy like tabs in my terminal, because I use tmux for tabs and clipboard and all that good stuff.
- Emacs and Vim, depending on what I’m doing and how painful I want it to be.
- BitWarden for my passwords (there doesn’t seem to be an ARM64 build of BitWarden but the CLI client can be made to build via NPM and the browser plugins work fine)
There are also a bunch of things I haven’t looked into a solution for yet. Some of these I can do in a web browser. Others, like photos and music, will take a bit more thinking about, and will be the subject of a future post.
All in all, it’s mostly fine. There are a bunch of things which will take a bit more research (copying from Firefox and pasting into Emacs, for example, currently use completely different keys, suggesting more tweaking of my Emacs config files are needed), but as I’ve said before this is less about the destination than the journey.
-
It’s actually a bit more complicated than that in the world of systemd etc., but old hands also remember that this has always been the case and that there is nothing new under the sun. ↩︎
-
I haven’t looked deeply into the Feedbin API, but I would imagine it tells the client what feeds have new items, but Newsboat seems to check every feed for new items anyway, which is quite slow. ↩︎