It has become something of a running joke in the Linux community that the new year will be the "year of the Linux desktop." Sadly, many years have come and gone without this miracle manifesting. Nevertheless, we have had many years of the Linux server, set-top box, Chromebook, smartphone, supercomputer and many other devices. It seems only natural that Linux would now set its sights on handheld gaming. Aside from the Nintendo Switch, the handheld market is ripe for the plucking. Enter: the Steam Deck.
But despite my introduction, this blog post is not about the Steam Deck. Why? Because I do not have one and will not have one until "after Q2."
Instead, I am going to shed some light on where Linux desktop gaming is and how the Steam Deck has improved my gaming experience so far.
I have been through many phases of Linux gaming. I was around in the early 2000s when Linux Game Publishing and Garage Games were among the few companies offering native Linux games. I was still around when companies like Aspyr and Feral Interactive began to expand beyond porting Windows games to Macs and also started to include some Linux titles. I was also still around when Valve decided to create a Linux version of Steam. And I stuck around when they announced Steam Machines and SteamOS (December 13, 2013). It is hard to believe that was almost ten years ago, and since then, the number of native Linux games has skyrocketed.
The biggest turning point, however, was the introduction of Proton. To be clear, WINE (Wine Is Not an Emulator) has been around for much longer, offering a way to get some Windows games working in Linux. Some commercial companies have even offered preconfigured versions of WINE in the past, companies such as Codeweavers and Transgaming. Proton (commercially known as SteamPlay) grew out of WINE or, more specifically, Valve's and Codeweavers' contributions to WINE, which remains free and open source. Thanks to these contributions, most Windows games now play in Linux with remarkable performance.
I have been a dual booter for a few years because I still wanted to play every game I wanted to play, but I have longed for the day when I no longer had to boot into Windows to play those handful of games that would not work in Linux. I believe that day is today.
To be clear, I am a single player to the core. Gaming online has never been my jam. Thus, issues with BattleEye and Easy Anticheat do not affect me. I can understand why someone might want to stick with Windows if they want to play Destiny 2 or Fortnite. But for me, there is no compelling reason to keep Windows around anymore.
The last holdouts for me were Origin and Ubisoft Connect, two launchers that are notorious even on Windows, let alone Linux. I had seen reports on ProtonDB that Origin+Steam games worked, but every time I tried games like Jedi Fallen Order or Mass Effect Legendary Edition, I could not even get Origin to start. Similarly, Ubisoft Connect would not start through Lutris or any other means.
As it turns out, I can blame this on the graphics card shortage (or more accurately demand increase) of 2020 and the pandemic. Back in 2020, I still had an Nvidia GTX 1070 and was ready for an upgrade, but when the RTX 3080 was released, I was one of the many victims of Nvidia's poor excuse for a launch day. I did not end up with a new Nvidia card. Instead, when AMD launched its 6800 XT, I managed to get one directly from AMD's store on launch day. This was great. After all, AMD drivers work better with Linux anyway.
Unfortunately, my AMD card had some issues: coil whine and crashes. After speaking with AMD, they said that I should return the card for a refund, but they could not offer me an exchange for another card. Instead, I would be back with my GTX 1070. Instead, as fate would have it, I had previously signed up to be on EVGA's waiting list for a 3080, a system which works much better than the every-man-for-himself strategy of NewEgg, Best Buy and others. I was able to order a 3080 and return the 6800 XT.
But Tavis, you ask, what on earth does any of this have to do with Origin and Ubisoft. Well, as it turns out, when I switched back from AMD drivers to Nvidia drivers, there were traces of Vulkan AMD bits left behind (or so I can only theorize). I found the workaround for this issue on the DXVK github:
If you've got
DxvkSurface::createSurface: Surface not supported by deviceand messages about both Intel HD graphics and your dedicated graphics card in the dxgi log, your integrated graphics drivers might be causing issues. Run your game with
VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.jsonfor AMD 64 bit or with
Adding this to my launch options got both Origin and Ubisoft Connect running. For Origin, I also had to manually install it with protontricks for each game in Steam I wanted to play (Mass Effect Legendary Edition, Jedi Fallen Order, etc.) Example:
protontricks 1328670 --gui
I then used the "uninstaller" to install Origin.
Ubisoft Connect would now launch in Lutris, as long as I have that vulkan fix in the Environment Variables section.
Update: I've found quite a few more games that won't start without this environment variable, including some in Steam. So, rather than manually add it to each game, I've added it to KDE's startup:
In ~/.config/plasma-workspace/env/ I created a file called nvidia.sh with the following text:
and then restarted KDE. You could do the same with your desktop environment, though you'll need to find out where exactly to place the file.
A Future So Bright, I Gotta Cache Shaders
Thanks to the Steam Deck and Valve's work making Linux a competitive gaming platform, I believe the future will only get brighter for Linux desktop gaming. It could very well be the year of the Linux Handheld that ushers in the year of the Linux Desktop.