As is starting to become spring-tradition I feel, I gave switching to Linux as my primary operating system on my desktop another shot, and the results were slightly better than last time though still not quite enough to make the switch permanent. Honestly, the overall experience was rather impressive, the biggest problem is me still needing to shoehorn some Windows-things (games) into Linux, and aside from those I think I would’ve already made the switch.

As a change from last time, I tried the Liquorix kernel, which is the Linux kernel tuned to fit the interactive desktop use-case better and the difference was quite noticeable. This probably made the biggest difference in how everything felt this time around and it’s definitely something I could get used to. There was some funkiness however, as I had installed the Nvidia drivers first but once I installed the kernel I needed to install newer drivers and getting rid of those cleanly and the newer ones installed was a bit of a short pain which does also lead me to worry somewhat of the longterm stability of the system since I have had a bad experience with Arch and Nvidia drivers in the past where the kernel got updated to be newer than the drivers supported. The dangers of binary-blob drivers on Linux I suppose, which I was intending to counteract by using a more stable distro (Debian) but of course the Liquorix kernel releases follow the current kernel releases much more closely so that didn’t really end up being an advantage.

Gaming

As mentioned above, the biggest pain-point for me is still gaming, namely the Blizzard games. World of Warcraft is still my main jam at the moment, and while it isn’t impossible to get running on Linux and actually has a rather decent rating on Lutris, Battle.net was something of a pain for me to get running and then because it’s not just a game launcher but also a chat service, one that I quite heavily use, I want to have it constantly running which doesn’t always work that well and the integration into the desktop is lacking because Wine. Specifically, Battle.net has a tray icon that then gets shown to Linux as some sort of “legacy” format which isn’t supported by the newer versions of the major desktop environments (GNOME and KDE) which would mean I might need to use something more niche which I’m not that into at the moment though it might be interesting at some later point. The customisability of the interface is after all one of the strengths of Linux.

Another new pain-point was actually Epic Games Store, something I hadn’t used the last time I made this experiment but was now using primarily due to the free games they have been offering, which can contain some rather nice deals at times. This feels especially silly, since some of the games they offer—For the King as an example—do actually have a Linux version yet because I own the Epic Games Store version I can’t actually play it easily on Linux. From what I gather, Epic Games doesn’t have the best of reputations when it comes to Linux support in general, which also makes me somewhat wary of trying to run the store through Wine in case they decide to treat it as cheating or the like. The dangers of free stuff I suppose.

Streaming

Also, I never got started on streaming and getting that to work, multiple audio devices as a problem from last time.

Another more minor niggle is streaming. It really is rather minor, since I kind of know exactly how I want it all set up and what I need to do to get there, just the way there is somewhat annoying.

Basically, the big problem is that my audio setup in Windows is actually rather complicated, with four different (virtual) audio devices so that I can cleanly separate game, music, voice and desktop sounds and then only pipe some of those through to the stream. The different audio devices also more easily allow me to adjust the different audio levels for me and the stream, for example my game and music audio is rather quiet because I want to hear what’s going on in voice but as that isn’t piped to the stream most of the time I can actually turn those up a bit for them so that it isn’t all so quiet and they can enjoy the music. The game sounds are also more important to me than to the stream, so being able to adjust those separately is quite nice.

Now, all of this is rather trivially possible with Pulseaudio, which does support creating virtual audio sinks without any extra software installation as is required on Windows (though I guess what’s core and what’s not is somewhat more loosely defined on Linux than Windows, since it’s dependant on the distribution), however I want all of this to automatically be the case from the moment I log in so that I don’t have to keep readjusting my software to use the correct sinks and did unfortunately not find a good way to do this. Some sort of login script would be the obvious example but I didn’t really want to take the time to program something like that.

Then there is the case of the bots. Namely, chatbots. While a lot of the popular ones are cloud-based these days, which one would think would mean that running on Linux wouldn’t be a problem, the song request part often requires a Windows application in order to provide the currently playing song to the streaming software in the form of a simple text file. Since these seem to be mostly Electron-applications, I don’t really see the reasoning behind this other than the developers not considering Linux a big enough market in order to make the effort which does make it all a bit more of a pain for me. There are also more “pure” cloud variants like StreamElements which do have a mechanism of providing the song title through a web browser interface but unfortunately the last time I used it the song request functionality was somewhat flawed, skipping some songs completely and not doing a particularly good job of shuffling the songs.

Now I have been wanting to write my own bot for the song requests because all of them feel a bit janky in one way or the other anyway which would alleviate these concerns and allow me to use the others just for moderation, however as I haven’t done that yet it’s something of a blocker at the moment.

Finally, one major problem from last time that I didn’t end up running into this time but could rear its head again, some versions of OBS oddly enough did not include hardware acceleration (on Nvidia cards at least) for the encoding which for a single PC streaming setup like mine was a complete non-starter. This seemed to primarily depend on the distribution and not OBS itself, with some strangeness like Ubuntu 18.04 at the time having hardware acceleration but 19.04 did not. I believe at the time the flatpak also lacked hardware acceleration which if it was still the case would have been a blocker this time around as well since using an outdated version of OBS since new features tend to be rather significant in something so relatively recent as live game streaming.

Minor things

Beyond those two main problems, there were a few more minor things that I would need to figure out were I to decide on a more permanent switch but that don’t really impede my day-to-day too much. Namely:

  • OneNote
  • Development environment
  • Hardware acceleration in Firefox

OneNote

I’ve recently re-discovered OneNote for notetaking, and so far it’s actually been rather nice to use for the small amounts of notetaking that I do. It seems to sync pretty snappily between devices, has performant enough clients for the operating systems I use regularly at the moment, and mostly just gets out of the way of me writing something short that needs remembering. Unfortunately, as far as I know, there isn’t a version available for Linux, outside of potentially a web-based one, which would mean I need a replacement. At the same time, my notetaking needs at the moment are rather light, so this shouldn’t pose too much trouble but still it is something that will need consideration if I make the switch in the future.

Development environment

This one is rather easy, it’s just mostly a matter of remembering everything that’s necessary. Currently use a fair bit of web development stuff, so Node, webpack and the like, and all of that probably even runs better on Linux than it does on Windows. Similarily, I do some Go develoment, and that is probably also more intuitive to use on Linux than Windows so no problem there, and my current editor of choice, Visual Studio Code, is also available. The biggest hurdle if one can call it that would just be getting everything set up the way I like it so that the threshold to get something done when I want to is as low as possible.

Firefox hardware acceleration

So this is just one of those things that yes, it’s solvable, yes, it’s not too much work, but quite honestly it should just be standard at this point and not something I need to go hunting for how to get working properly. I get that it’s probably a hard problem to get working for the generic case and with all the open and closed source drivers, but the unecessary CPU load just shouldn’t be there when I’m watching videos or doing other browsing on more graphically intensive websites. It’s a minor thing because I know it’s fixable just didn’t get to the point of looking up exactly how, but it annoys me that it’s a thing I need to fix in the first place.

Conclusion

In the end, this time (as well) ended up being a failure, but it did give me new hope once again that some day in the not too distant future this will be an option that I can reasonably choose, since the roadblocks are becoming fewer each time and the only really big remaining one is gaming which seems to be getting better each year on Linux with more support from publishers. Even there I also have pretty big hopes concerning the future since Blizzard has already supported Mac gaming for so long it seems reasonable that they would in turn also support Linux in the not too distant future. And if even if they don’t, at some point I’m probably going to have played their games enough and find others that I want to play, so maybe that’ll be a good opportunity to narrow my search and focus on ones that have Linux as a supported platform.

The general state of the desktop and seeing how good it has gotten also makes me think that there are some other systems in the house that can be converted since they don’t have some of the requirements I do, so at the very least the knowledge gained from the experiment will prove very useful to me and here’s hoping next time around everything’s far enough along that it doesn’t just stay an experiment!