For the last month, I’ve moved my iMac out of the office and used Linux Ubuntu as my main day to day system.

I’ve only ever interacted with Linux on servers, running odd CLI commands I’d found off the net to accomplish some esoteric task. I’d never used it as my desktop system.

What follows are my notes having used Ubuntu for the last month. I’m a web developer so there’s a heavy slant in that direction.

TL;DR

Got a Mac? Unless you do heaps on the CLI, Linux isn’t going to offer you a nicer experience. macOS is peerless when it comes to slickness.

However, for about 40% the cost of an equivalent Mac (a Mac Mini would be closest to what I have) you can have a very capable and stable development system. Let’s say 90% of the Mac experience. I’ve had ups and downs but at this point, one month in, it’s a decision I’m happy I made.

Requirements

The general consensus is that Linux is very light in terms of hardware needs. I opted for an Intel NUC with i3 processor, added 32GB memory and a 240GB SSD. It’s more than enough!

Install

Installing Linux was ludicrously fast and straightforward. I downloaded an Ubuntu 20.04 LTS image onto a USB stick, booted my fresh system with it in and a few clicks and no more than 10 minutes later I was looking at the Ubuntu desktop.

I didn’t need to mess around with anything. No drivers to install. Everything (WiFi, Bluetooth, Ethernet, peripherals) just worked. The only oddity was getting the 4K screen I had attached (a HP Z27) to get the right resolution at 60HZ. It was a combination of choosing the correct resolution (3840×2160), refresh rate (60.00 Hz) and scale (150%). I also needed ‘Fractional Scaling’ enabled and the scale set to 150%.

Not long after getting all my essential applications installed, I had to swap out my hardware (turns out I had ordered the wrong NUC). Thankfully, I just moved my ram and SSD hard drive (I’d never had a NVMe drive before — can’t believe how tiny they are!) into the new hardware and it all started up again with zero issues! Can’t imagine that happening with Windows.

Random ‘gotchas’ coming from macOS

  • Muscle memory from macOS means initially, with a browser open, I keep pressing Super+L to get to the browser bar, and that puts the system to sleep!

  • To skip to the beginning/end of a line of text you have to use ‘Home’ and ‘End’ keys, there is no equivalent with the arrow keys as you would with Mac

  • Typing an em dash! Definitely a departure. On Mac you just do Shift+Alt+-. Not so in Linux land. There you hold down CTRL+Shift+U and then type the unicode symbol (in this case ‘2014’).

  • the general quality of Linux apps seems an order of magnitude lower than those on macOS. I’m not just talking visuals; the functionality and robustness seems poorer. Or perhaps I’m making poor choices.

Installing stuff WTF???

If you go to a download page for Linux you are often greeted by a bazillion different install options; flatpack, snap store, apt-get, sausage-install etc (yep, I did make one of those up).

Some places will point you to a downloadable file, which you would think you can double-click to install. No such luck. You have to give things all sorts of permissions and ultimately it’s a drag.

Ubuntu also has something called the ‘Snap Store’. As far as I can tell it’s their attempt of something like macOS’s App Store. I found it to be a shower of shit. Half the apps don’t work and when you want to remove something that doesn’t work, that seldom works either. I quickly gave up on it.

For example, I downloaded the ironically named ‘Remarkable’. It didn’t work, so I opened Snap Store and clicked ‘Remove’, it asks for confirmation and then… nothing. You wait, the app stays in the Snap Store list of installed applications. Has it gone? Is it still there? Who knows? Even after running sudo snap remove remarkable it still shows in the list of installed applications.

My current advice is this. Just use the command line and install everything with apt (apt stands for ‘Advanced Package Tool’).

And speaking of the command line…

CLI

Doing anything with the Terminal is incredibly fast. I never thought the CLI on macOS was slow, but compared to this it is glacial.

Running something as simple as sudo npm i on a project is blazingly fast in Linux. Installing applications this way seems odd at first but once you get used to it, it’s fantastic and incredibly quick.

The default Terminal is actually pretty decent. Getting Oh My ZSH and the like installed is also straightforward.

A colleague I hold in the highest esteem (Hi Pete) has tried to get me on the Tmux train but as my CLI needs are rudimentary, I’ve opted for Tilix, and using CTRL+Shift+T to bring it in Quake style, like a visor from the top of the screen.

So, yes, Terminal and CLI on Linux is hands-down unbeatable.

Browsers

Firefox seems to have the nicest looking and fastest rendering on Linux. It’s also the browser that comes installed by default. Chrome is a distant second place. With Chrome you can scroll quickly up and down a page and see the screen ‘tear’ as it re-draws. I’m unsure why Chrome is so poor in this regard. Maybe it doesn’t have GPU rendering enabled??

Firefox on the other hand is great in terms of rendering speed. I have more stuff saved (passwords) in Chrome so I am still spending most time there but if the next few updates don’t improve matters I’ll be swerving hard towards Firefox.

For trouble-shooting Safari bugs, the Epiphany browser is conveniently behind the curve. It’s a Linux browser based on WebKit (the same engine that Safari runs on). This means I was able to trouble-shoot a problem in Safari 11 simply because that was where Epiphany was at in WebKit terms; as I write this, desktop Safari is at version 13.

True macOS/Safari testing can apparently be sorted by using Sosumi but having tried to get it up and running I eventually removed it. Hopefully future versions will be more straightforward or my Linux skills will have improved!

Applications and utilities

uLauncher is my Alfred replacement Nope! Moved to Albert. Everything seems to pretty much work as I expect in Albert, calculator, getting a clipboard history feature (you need to install ‘CopyQ’ and enable the python option in Alfred).

Sublime Text oddities

At first, skipping up and down a page in Sublime didn’t seem anywhere near as nice and smooth as on a Mac. However, Sublime Text 4 has a new hardware-acceleration setting and setting that to "opengl" seemed to solve the issue.

WordPress dev environment

When doing any work on this site with macOS I would use MAMP to spin up what I needed for WordPress. The equivalent in Linux world is XAMPP. Installing XAMPP was an awful experience. With a 4K display you can barely understand the interface! Getting WordPress running in that environment was equally odd.

Getting WordPress running locally

Aside from the resolution problem of the XAMPP interface not dealing well with 4K displays, there are more issues when you opt to install WordPress the ‘easy’ way with a Bitnami module. The visual installer is essentially useless on a 4K display.

Long story short. Run the Bitnami installer from the CLI instead!

  • Spin up XAMPP with sudo /opt/lampp/lampp start
  • Log into the PHPMyAdmin and set a password for the root DB user. Follow steps 1-6 here
  • Run the binami setup. Assuming you have downloaded the Bitnami file to your ‘Downloads’ folder, go there in the CLI and run:
chmod 755 bitnami-APPNAME-VERSION-linux.run
./bitnami-APPNAME-VERSION-linux.run --mode text

This will, mercifully, start a text only version of the installer. Follow that through and eventually you should be able to hit https://127.0.0.1/wordpress/ and see your default WordPress install. Phew!

Mail client

Thunderbird! I’d not used Thunderbird since about 2004! Visually, it hasn’t changed! However, that fact can be greatly improved. I added a ‘DeepDark’ add-on and it looked acceptable. Toggling off some of the default view options also lowered the immediate noise of a standard mail view. It remains a great mail client for those of use that would rather deal with mail locally.

I also tried ‘Geary’ as the press spoke favourably of it but I didn’t feel it offered anything above and beyond Thunderbird.

Summary

Everything I use day to day, which is a whole load of Node/NPM related stuff (parcel, Gulp, Express etc) a text editor and various browsers works beautifully.

After a little friction, Linux starts to feel as normal as anything else. The reality is, for most devs, we spend so little time actually dealing with the Operating System it makes little difference.

With a first class CLI such as the one Linux enjoys, the visual shortcomings of the OS soon fade to irrelevance. Not sure I would feel like that if I wasn’t using it for web dev. I’d miss things like Photos on the Mac or iMovie but my use of those applications is a rarity these days.

There was a point I didn’t think I would be keeping the Linux box but perseverance is paying off. Making things like the mail client palatable and using Noto font instead of the stock Ubuntu for the system font made a disproportionate difference in my happiness.

Hopefully, this Linux set-up will be for life, not just for lockdown.