It has been a long-running meme in the Linux community that each new year would be the “Year of the Linux Desktop” for decades now. This never happened. Why? A big reason is compatibility with gaming. Some titles worked on Linux but not very many of them.
Things have changed now with Steam’s new compatibility options they developed for the Steam Deck called “Steam Play”. Virtually every title I own in Steam plays flawlessly on Linux now as these options are available for all Steam Linux users and do not require owning a Steam deck to take advantage of.
I have been switched over for a month now exclusively to Ubuntu 21.10 on my main Threadripper desktop and I have not missed Windows at all. In the above screenshot I’m using Steam with “Steam Play” to play all of my titles that don’t include Linux support, editing my web site, overclocking/underclocking my GPU while mining Ethereum. These are all things that were an order of magnitude more difficult / annoying to do on Linux only a few years ago.
Today let’s explore the things that have changed that up until this point had been preventing the year of the Linux desktop!
Compatibility Improvements for Gaming – Steam Play
Let’s start with the big one. Gaming is extremely popular and I have been playing and even writing video games for decades. The compatibility options for games on Linux have been improving slowly over the years but it was probably still something like 10-15% of my Steam library that work without “Steam Play” support.
Now they pretty much all work. Why? Because Valve made the Steam Deck (Valve’s new handheld device capable of playing most items from your existing Steam library) and the Steam Deck runs Linux! Specifically the Steam Deck runs “Steam OS”. This is a full-blown publicly available Linux distribution available directly from Valve here that you can download and install. You do not need to run Steam OS to get these benefits though, they are available to all Steam users on Linux.
This is why the compatibility improved so dramatically all of the sudden. It may have taken another 10-20 years or longer for us to reach the level of compatibility that Valve just gave us because they needed it for the Steam Deck handheld. They wrote an entire compatibility layer essentially for us!
How to Enable Steam Play
Once you’ve installed Steam you can enable Steam Play in the options here:
Check both boxes and after restarting you should notice in your game list that titles are now playable that previously would only show a Windows icon.
Graphics Card Driver Improvements
Another thing that had held me back was the traditionally poor video driver support / functionality in Linux. This has also changed dramatically. Not only do they give really great performance now but they also support overclocking and fan control settings.
Overclocking / Underclocking
This is something that had always been difficult on Linux but things have improved in the past few years. It is necessary for people to control their GPUs clock / fan speeds for many reasons. Years ago you’d have to use the CLI to set most of these but many of them are built right into the GPU settings even for newer GPUs like a NVIDIA RTX 3090* (enabling cool-bits required, more on that later).
Here’s what the overclocking settings look like:
Notice at the very bottom I have a Graphics Card Offset and a Memory Transfer Rate Offset. This is to overclock / underclock the GPU’s processor and memory right inside the official nvidia-settings utility.
You simply type a value in this box then press the “Enter” key and you’ll see a message at the very bottom of the screen (a status message) saying the settings have been successfully applied.
Controlling Fan Speeds
You can also manually override the fan speeds and the GPU will actually respect them. Again we can do this right in the nvidia-settings GUI like this:
This works similarly to adjusting the clock speeds. You can slide the bar and press “Apply” or you can type a value in the box and then press the “Enter” key.
You will hear the fans spinning up immediately!
Enabling Cool-Bits for NVIDIA GPUs
This is necessary to use all of the features I showed above. There’s a few ways to do this. The easiest way is using the nvidia-xconfig utility like this from the CLI:
sudo nvidia-xconfig --cool-bits 31
This will automatically modify your /etc/X11/xorg.conf file to enable Cool-Bits after a reboot. I used a value of 31 which is correct for NVIDIA 3000 series GPUs to enable these features.
There are other values of Cool-Bits for older cards but this value should enable all features. If it’s a really old card you may want to look up the best cool-bits value to use for that generation of card.
You may also add this value manually to the “Device” section in your xorg.conf but I really don’t recommend doing it this way unless you have no choice. If this is the case there are a lot of guides out there to do it the “hard way” but most people should let NVIDIA’s utility configure this for them.
Making the Plunge
I couldn’t be happier with the setup. I’m using the official latest NVIDIA driver with overclocking/underclocking/fan support on a modern RTX 3090 GPU*. My games work flawlessly using “Steam Play” (the ones on Steam at least). I’m mining Ethereum at the same speeds I was on Windows with just as low of wattage.
There honestly has never been a better time. Especially with the news that Windows 11 will place a watermark on systems that don’t have “verified compatible” hardware. I was weighing whether to try Linux Desktop again or stick with Windows 10 or to just go ahead and try Windows 11 as my hardware is all on the list.
I really think most people would be just fine on Linux these days even if they’re gamers. The open source ecosystem has the best and most trusted software on the planet and most of it doesn’t cost a dime. It’s good enough for a gamer / miner / webmaster now as their daily driver for what it’s worth.
Are there things out there that are still holding you back? Leave a comment and if I know of any alternatives / a way to do it I’ll gladly share them!