“Have you heard the good news?! 2021 is the year of the Linux Desktop!”
This is, of course, the line that I have been hearing for more then a decade; ever since Dell started shipping laptops with the option of having pre-installed Ubuntu in 2007. Since then, Linux affectionadios have been shouting from the rooftops about how “this year will be the year that Linux breaks into the consumer desktop market.”
While Linux has thus far failed to break into the consumer market in a large way, it has been steadily gaining device share over the years. With Steam announcing Linux support in 2013 and distributions like Linux Mint providing a more simplified desktop environment for non-technical users; the operating system has grown to power around 2% of desktop operating systems worldwide, by comparison Apple’s OSX has an estimated market share of around 10%.
On a personal level, I have experienced a fair amount of Linux fanaticism, and over the years I had tried (and failed) several times to switch to Linux as my only desktop operating system. Unfortunately, every time I thought I had things “just right” I would inevitably find some deficiency and end up switching back to the latest Windows flavor of the day. In mid-2019 I decided to once again take the plunge and try to kick Microsoft Windows from my computing life.
Why this time was different
Given that I had tried, and failed, several times in the past to adopt Linux, why were things any different this time around? Well, it all comes down to a change in how we interact with computers, additional support for Linux from software vendors and the right motivation. It can all be summed up as follows:
- The way we are interacting with our computers is changing. Back in 2007, the vast majority of time spent on a computer was interacting with so called ‘fat’ applications – software that bay and large runs locally on your computer. By 2019, the vast majority of computer interactions was using so called ‘thin’ applications. That is, most work is being performed on remote servers and accessed locally using a web browser or much simpler application. This means that there is less work to develop applications for Linux, and for many workloads, a web browser is more then sufficient making dedicated applications unnecessary.
- Vendors are increasingly supporting Linux. The prime example is Steam. The largest barrier preventing average consumers from switching to Linux (or Mac OS, for that matter) has always been games and the gaming ecosystem. Games have traditionally been the realm of Microsoft Windows, and even hardcore Linux fans would have to run a dual-boot setup if they wanted to play. In 2013, Steam announced that Linux would become a first class citizen on their platform, and today many Steam games will run nativly on Linux. Games without native support can usually be persuaded to run via a compatibly layer called Proton. While there are still many games that won’t run under Linux, the Steam ecosystem is enough to keep me amused in my spare time.
Microsoft too is even jumping on the Linux bandwagon, making their popular Powershell scripting language available for the OS in 2018. In theory, scripts which had been written for Windows machines in Powershell, should be able to be run on Linux – without the need for a rewrite.
- Linux software is getting better. I remember back around the 2013 era I was looking for video editing software to run on a Linux PC and got increasingly frustrated by the lack of options. Eventually, I was forced back into the Windows ecosystem to continue running the Adobe Master collection suite of software for my editing needs. Fast-forward to present day, and the number of decent video editors for Linux has grown, and I find myself able to use the popular KDenlive software as my daily driver without issue. Other Linux native applications such as Libre Office and GIMP have become more user friendly and powerful.
- Microsoft is giving me the right motivation. With the release of Windows 10, Microsoft has been pushing Windows in a new direction, one that I am increasingly dissatisfied with. Enforced updates, poor quality control and undocumented regressions have left me feeling increasingly displeased with the overall user experience of Microsoft Windows. I’m also convinced that as Microsoft moves more of their software to a subscription model Windows is going to become a “pay per month” product and I would eventually be forced onto Linux anyway, so getting ahead of the curve made the most sense.
With all of these factors in my favor, and a general improved familiarity with the Linux operating system as I was using it more and more in my day-job, I figured the stars and planets were best aligned to take the plunge into the world beyond Windows.
An Organized Transition
My past attempts to convert to a Linux-only environment basically consisted of a weekend where I said “screw it, let’s do this live!” which is honestly why it probably ended in failure. But this time was older, more experienced, and maybe a bit wiser so I decided to take an orderly approach to replacing my computing infrastructure.
My first step was to take a look at all my ‘daily driver’ computing devices and break down the software and workflows I used. It boiled down to this:
- Laptop computer – Web browsing, email, some document editing, watching IPTV streams using custom powershell scripts, cloud file storage
- Desktop computer – Web browsing, email, document editing, IPTV, some gaming, video editing, photo editing, network file storage, coding, some video conferencing, some HAM radio software
I quickly identified that my laptop workflows would be easiest to replicate on Linux, so I decided to focus on first replacing the laptop and use it as a proving ground for the operating system. If Linux couldn’t cut it on my laptop then there was no way I’d be able to swing it on my desktop.
Choosing a Distribution
The best thing about Linux is that there are so many distributions and permutations to choose from. This also happens to be the worst thing about Linux. Linux’s open source nature lends itself to modification and tweaking meaning any time someone doesn’t like a particular feature they can fork it, creating a whole new distribution and way of doing things. By contrast, Microsoft Windows or Apple OSX have a single user interface and a single way of doing things, making a consistent user experience and creating a huge community of users to lean on for support. The danger on the Linux side is that new users can quickly become overwhelmed by the sheer number of choices and might end up using a dead-end distribution with no support. There are advantages to both approaches, but I had my research cut out for me when choosing a distribution and desktop environment.
After some extensive research, and reading all about KDE, Gnome, Cinnamon and other desktop environments, I ended up with Linux Mint.
I chose Mint because it’s based on Debian, which I am most familiar with on the server side, It ships with a simple desktop environment called Cinnamon (which is actually very similar to Windows), and it seems to be widely used, meaning there is a lot of support from a large community should something go wrong. There are so many other options to choose from, but Mint seemed to hit the sweet spot for me.
Replacing the Laptop
By the time I came to the decision to switch my computing life over to Linux, my laptop computer was already beginning to get long in the tooth and was due for a replacement anyway. I figured the best approach would be to push it’s replacement forward and run Linux on a brand new machine – enabling me to easily switch back if required and simplifying the process of migrating from the old OS.
Choosing the right laptop turned out to be a bit more of a challenge then I originally expected. In the past, I had taken an attitude of “It’s Linux, it’ll run on a toaster if you really want to” but in this case I wanted to find something with actual proven compatibility. This was particularity important in a mobile computing environment where efficient battery usage and effective use of sleep functionality would be critical – both things I had problems with in the past.
It turns out that several companies have begun selling laptops with Linux pre-loaded with manufacturers like System76 and Purism producing some really slick looking machines. In the end, I used the extensive Linux Mint hardware compatibility list and settled on a used Dell Latitude E7270 due to local availability. This laptop is one of Dell’s business-grade machines and even had 1 year of on site hardware replacement on it!
Loading Linux Mint from a bootable flash drive was a snap, and I was very pleased that out of the box functions like changing the screen brightness, toggling the keyboard back-light and sleep/resume worked without any fiddling. I do occasionally experience a glitch where the laptop will crash on resuming from sleep, but it only seems to happen around 2% of the time; not enough to bother me, and I use sleep a lot – rarely fully shutting down my laptop.
After loading Linux on my laptop computer I ran with it for a number of weeks and encountered remarkably few problems. For email I used Mozilla Thunderbird, web browsing was Chromium and document work was fulfilled by Libre Office. My IPTV powershell scripts worked nativity after installing the Microsoft Powershell package and cloud storage powered by Nextcloud worked out of the box with the Nextcloud app. Based on my past attempts I was expecting significantly more friction and so, I was pleasantly surprised that I could jump into this new computing environment with such little resistance. With a couple of weeks of running Linux on the laptop under my belt I decided it was time to take the desktop plunge.
Replacing the Desktop
While my experience with Linux on the laptop was a resounding success, I was anticipating a lot more friction on the desktop, simply due to the more specific workflows in use. After using my experiences on the laptop to identify what did and did not work, I identified the following pain points that I would need to resolve in order to make my desktop Linux experience a success.
- I was currently making heavy use of a local NAS server to store all my files and was heavily reliant on the SMB file sharing protocol and automatic mapping of network drives.
- I was currently using Microsoft Active Directory for centralized authentication
- I did a decent amount of video editing in the Adobe Premier Pro application
- I used Winlink Express to send and receive data messages over VHF HAM radio. Winlink Express is a Windows application.
- I used Notepad++ as a text editor for a lot of my coding projects
- How my graphics card would function in Linux was as yet unknown
The file sharing issue was the first thing I tackled. While it was convenient having the entirety of my digital life accessible on a local network share, after analyzing at my use habits, I discovered having everything local was mostly unnecessary. The vast majority of the data I had was archival in nature, it was something I wanted to have available should the need arise, but having it instantly available was less important, and waiting for it to download not really a problem. I opted to ‘lift and shift’ the entire contents of my NAS into Nextcloud hosted on a server at a local colocation facility. While I still wanted to retain total control over my data, similar results could have been accomplished with Dropbox or another commercial cloud storage solution. I opted to synchronize the folders which contained data that I accessed on a regular basis to my local machine and leave the rest on remote storage, accessible through a web-interface should I need to download it. While I could have re-configured my NAS to use NFS and created NFS mounts in Linux, the Nextcloud approach simplified things and had the added bonus of making my data more accessible.
Next, I analyzed what I was using Microsoft Active directory for. While having a centralized authentication source was nice, and using roaming profiles meant restoring my user account to a new computer was as easy as logging in following a re-install, I decided it was largely overkill for my small environment. I ended up ditching AD entirely and decided to go with local accounts, and backed up my home folder on a regular basis. Some testing revealed that restoring a copy of my home folder (and fixing the permissions!) resulted in the restoration of 90% of my customized desktop environment when re-installing – good enough for me!
Video editing has always been a pain point on Linux. Historically I have used Adobe Premier Pro, which is a fantastic editing application, though unfortunately not available for Linux. In the past I have tried (and failed) to get Premier Pro running within the WINE compatibility layer in Linux, but I’ve never gotten anywhere with it. Instead of trying to re-try the impossible, I decided to take a look at some of the native video editing options for Linux, and two contenders seemed to stand out – Openshot and Kdenlive.
Both editors have all the basic tools anyone would need, and both ran relatively well in my test environment. In the end I decided on Kdenlive because I preferred the simpler user interface, and I was able to make it behave most similar to the familiar Premier Pro, but either option would have likely worked for me. I am pleased to report that I have not yet found a source file that Kdenlive has been unable to handle, though rendering videos have proven to be a bit tricky at times. Overall, the user experience is not as smooth as using the Adobe suite, but it’s “good enough” and will hopefully improve over time.
HAM Radio applications have an interesting relationship with Linux. While HAM radio encourages tinkering and modification (just like…. you guessed it, Linux) the vast majority of applications are still written for Windows machines. I use several pieces of HAM radio software, but the main one that I touch on a weekly basis is Winlink Express – used for sending packet messages over VHF or UHF radios. It turns out that Winlink will run within the WINE compatibility layer, and the Winlink Express team has even published a guide on how to get it working. It took a bit of fiddling, but eventually I was able to get the software fully running, and have had few issues after the initial install. It’s worth noting that there is a decent, Linux native replacement for Winlink Express called pat, which is on my list of things to experiment with in the future.
While Notepad++ can also run within a WINE environment, it’s not a user friendly experience and accessing the local filesystem is a headache of a process. Fortunately, Microsoft publishes Visual Studio Code for Linux which has turned out to be a fantastic text editor and scratched the Notepad++ itch.
Finally, I was a little worried about my Graphics card, and how it would work with the 3 monitors I had connected to my system. It turns out that Linux Mint ships with a ‘Driver Manager’ application which attempts to find the best version of drivers, either open source or proprietary for your machine. My card is an Nvidia GTX970 and worked best with the latest Nvidia proprietary drivers. By default, Mint tried to use the Open Source Nouveau drivers and the experience was extremely poor, even something as simple as opening a video in VLC would crash the desktop environment and force me to reboot. After switching to the proprietary drivers my experience has been much better – it’s still not 100% and occasionally I’ll have to reboot the system following a GUI crash while launching a game, but they are pretty rate and it falls firmly into the ‘good enough’ category.
A year and a half into the experiment I can call my Linux on desktop project a resounding success. Over the course of the time, I have managed to stay within Linux 100% of the time and have even managed to replicate most of my workflows to a point where I am satisfied with my overall computing experience. Overall, I’ve been impressed with the usability of desktop versions of Linux and, despite needing to tinker and look up a few problems, the out of the box experience has been relatively seamless.
For anyone looking to make the switch, I’d highly recommend reviewing your workflows, consulting the compatibility lists and doing it!