4 years of Linux as my main OS

Bloody hell, it's been 4 years already? Get ready for some ramblings!

When I finally decided to give the Linux desktop a serious try in 2019 I never thought it would change the way I interact with computers this much; I was fed up with Windows, its malware features, the updates breaking the OS or changing my settings, the ridiculous amount of telemetry and spying, you know the drill, but I liked the UI, and most things "just worked".

The switch to Linux turned out to be less painful than I anticipated, I started with Kubuntu and then moved on to Manjaro and recently went balls deep with Arch Linux.

I currently have 2 PCs that I use regularly: my desktop that I use for development and games and my Thinkpad T480 laptop that I use for school (I started teaching in 2021), I use Arch on my desktop and Manjaro on my laptop.

My desktop PC

So, it's been 2 years since the last time I wrote one of these articles, what's changed? Well, I'm happy to report that everything I need either works out of the box or can be made to work with some tinkering (games). I'll talk more about games later, but I must give Valve and the Mesa devs a massive shout out for making Linux gaming a viable option for a lot of people.

I'm still using KDE on both my machines, I don't really use much of its customization features but I like its look and feel and using it feels kinda like going back to the peak desktop experience of the Windows 7 era (it even has widgets!) while retaining some modern features like notifications, workspaces, clipboard history, and KDE Connect is awesome.

When I started teaching I was expecting Linux to be a problem, I was sure there would be some crappy old proprietary software that I needed to use that wouldn't work in Wine but that wasn't the case, and even if it were, the school actually gives us full freedom to choose the tools we want to use for teaching so I don't expect this to be a problem any time soon (fingers crossed).

Speaking of teaching, Linux never fails to attract the curiosity of my students, especially at the start of the school year when they see it for the first time, and when they ask about it it's a good moment to show them that it's not that big scary nerdy thing that they think it is, some of them even end up tying it it, and I think high school is the best time to switch, it's so easy to learn at that age.

This is my laptop, and Stallman's seal of approval on my bag My laptop running school software

The desktop experience

Honestly, there's almost nothing wrong with the desktop experience offered by KDE and things have only been getting better over the last 2 years in the Linux world, while they've been going to utter shit in Windowsland, especially with the introduction of Windows 11 and its fishy requirements.

There have been improvements to performance, stability, user experience, hardware compatibility, gaming is now a viable option (more about this later), and basically I cannot recommend it enough.

Battery management has also been improved, the battery life in my laptop has nearly doubled since 2021 thanks to improvements to TLP and the kernel, and I'm happy to see that battery life is now being reported correctly by KDE when you have multiple batteries (rare case, I know).

And speaking of laptops, doing presentations is much better now with no more random issues with screen extending or duplication messing up the resolution and/or the desktop layout, and KDE even has the curtesy to enable Do Not Disturb mode automatically so that my students don't have to see random racist memes sent by my friends while I'm presenting.

Oh, and can you believe it? GTK finally has thumbnails in the file picker! And it only took 18 years! (23 if you count that Windows introduced them in 1999). Seriously, fuck GNOME.

Screenshot of my PC

Here's a selection of software that I use on a regular basis:

WindowsLinuxNotes
Text editorNotepad++KateVSCodium also a really good option if you want something more feature rich
File managerWindows ExplorerDolphinSearch kinda sucks in Dolphin
Media playerMPC-HCMPVVLC also a valid option if you want something more feature rich
Image viewerJPEGViewnomacsGwenview and Ristretto Image Viewer are also solid choices
Office suiteLibreOfficeLibreOffice
Email and calendarThunderbirdThunderbirdVersion 115 introduced a new UI that's still kinda buggy
Web browserFirefoxLibrewolf and Ungoogled ChromiumBoth really good options for privacy, Ungoogled Chromium is less strict
Archive manager7-ZipArk and 7-Zip with wineArk is still inferior to 7-Zip but good enough most of the time
File, contacts, calendar synchronizationSyncthing (SyncTrayzor), NextcloudSyncthing (syncthingtray), Nextcloudsyncthingtray has a nice plasmoid that sits in the taskbar so you can just click on its icon and interact with Syncthing, it's better than Syncthing-GTK
PDF and ebook readerSumatraPDFOkularAlternatively, just use a browser
Screenshot toolGreenshotFlameshot
Screen record/streamingOBSOBSHardware encoding has been working for a while now
NotesNotebotKDE's own Sticky Note widgetSwitched from KNotes
VirtualizationVirtualBoxVirtualBoxMostly just to run Visual Studio and other stuff I don't want to run on Wine
CalculatorSpeedCrunchKCalc and SpeedCrunch
Image editorGIMPGIMPIt's getting better
Video editorKdenliveKdenlive
FirewallSimplewallunshare -nc and/or FirejailIt's not the same thing, but there's nothing similar on Linux that doesn't require manual configuration
Disc burning softwareInfrarecorderK3bI need it like once a year but ok
FTP clientWinSCPFileZilla
Image mountingWinCDEmukde-cdemu-managerWorks really well, no idea why this is not an official KDE thing
YouTube clientBrowserFreeTubeSuper recommended, has offline subscriptions, Sponsorblock and is somewhat similar to NewPipe on Android
Webradio clientBrowserAdvanced Radio Player widgetSimple and easy to use, sits right on your desktop. Goodvibes also a pretty good alternative

Other useful software:

  • Pamac: GUI for Arch's pacman package manger, because I don't want to open the terminal every time I want to install/remove something
  • Mousai: an app similar to spotify but for desktop and open source
  • Scrcpy: mirrors the display from of an Android device on your PC, really useful for presentations and development
  • Skanlite: really good application to access scanners connected via USB or network
  • LACT: overclocking tool for AMD GPUs, somewhat similar to MSI Afterburner
  • 64Gram: Telegram client with more settings
  • Nicotine+: open source client for the Soulseek network, incredibly good
  • Vinagre: client for VNC (and other protocols)
  • GHex: a somewhat tolerable hex editor, nowhere near as good as HxD

With that being said, there is still a number of things that annoy me:

  • Write cache on removable devices: why on earth is this enabled by default? If you just yank out a USB drive without unmounting it first more often than not some files will be missing/corrupted. I know that even on Windows you're supposed to safely remove devices before unplugging them, but on Windows is more of a best practice, here it is absolutely mandatory if you wrote anything to the device
  • Dolphin lags/freezes when a CIFS share is mounted but the network is disconnected: Ok, this is not a common scenario, but I have 2 folders on my home server that I use frequently so I added them to my fstab so that they're automatically mounted when the PC is booted and they show up like regular folders (this is the equivalent to the old smbmount basically). If I disconnect the network when these folders are mounted, using the file manager is basically impossible unless I open a terminal and unmount them or reconnect the network, it lags for minutes waiting for a timeout every time I try to open a folder
  • This fucking bug in Plasma: it's been going on for a long time, and now it seems to have finally caught their attention. Basically, a config file that contains the position of each item on the desktop (and its subfolders for some reason) never removes old stuff and eventually it gets so big it can no longer load it. It's unlikely that the average user will encounter this bug but if you build things like Wine regularly, you'll get there in a few weeks
  • This ugly bug in KWin: morphing popups often glitch or flicker but are enabled by default even though they're not necessary, this has been around for several years now, here's a video of what it looks like:
  • Possibly related to the previous bug, if you maximize a window (Meta+PgUp), then snap it to one of the sides (Meta+Left), then open another window and snap it to the opposite side (Meta+Right), the first one will glitch briefly. Here's a video of what it looks like:
  • Plasma still doesn't have a "Run as administrator" option
  • There still is no way to disable trash and just delete files directly, despite KDE being a DE focused on customization. This is especially annoying on removable drives where the .Trash-1000 folder will be visible to Windows users. At least it works properly now
  • Ark is still not as good as 7-zip. Sometimes it gets stuck creating archives if they contain symlinks or it has issues with character encoding like in this screenshot:
    Ark creates files with wrong names
    I can't even delete this folder without opening the terminal
  • Some applications still have issues with high DPI, most notably KDE's own settings app where minor glitches and awful scaling can be seen in several occasions. Here's an example:
    Corrupt graphics on combobox
    This doesn't happen on my laptop however so it could be GPU/driver dependent
  • OBS sometimes causes stuttering when capturing games: this happens in Windows too but it seems to be more frequent and random on Linux, some games are fine while others are nearly unplayable while recording. This can be a dealbreaker for some people
  • A lot of packages don't create the necessary udev rules to function correctly: this is Arch retardation mostly, and I'd say that Arduino IDE and OpenRGB are the worst offenders in this regard since they're basically useless without udev rules. If I install Arduino IDE, I expect to be able to connect an Arduino, having the rules in separate packages or requiring manual intervention by the user is a bad user experience and it's just asking for trouble in my opinion

I'm curious to see what the upcoming version 6 of KDE will do about their issues and I'm even more curious to see if they can finally bring Wayland into a usable state.

One thing that has been somewhat concerning to me in the last 2 years is the apparent increase in Linux software that has telemetry, and sometimes it's not even opt-in.

A good example of how telemetry should be implemented in my opinion is the KDE User Feedback feature: it's disabled by default and if you want to enable it you can set it to various levels of detail ranging from basic system info all the way to sending crash dumps. See? That's good, no data is being forcibly extracted from my computer without my knowledge, it's easy to find and control, I can decide to enable it if there's nothing sensitive on that PC, I can decide when and how to report issues, and if I want I can just report bugs the old fashioned way. User feedback settings in KDE That's how it should be: honest and opt-in, I feel like I can trust them and makes me want to enable it to help them.

A less "honorable" example of telemetry would be Stable Diffusion. The first time I started playing around with ComfyUI (which is excellent by the way), I knew something was off, let's just say my big nose can smell telemetry from a mile away and Wireshark confirmed that there were some connections being made while it was running. Naturally I took a look at Comfy's source code, but I didn't find anything suspicious... but only because the telemetry was inside some of the libraries that it uses. Neither ComfyUI nor the libraries said anything about having telemetry enabled by default, but I found a total of 4 environment variables that needed to be set in order to disable it: GRADIO_ANALYTICS_ENABLED=false, HF_HUB_DISABLE_TELEMETRY=1, HF_HUB_OFFLINE=1, DISABLE_TELEMETRY=1. That's a major scumbag move from HuggingFace but they seem to have removed part of it. User feedback settings in KDE At least they fixed it... until the next time?

Home server situation

Another thing that I've been focusing on in the last 2 years is hosting services on my home server, both for myself and for my less tech-savvy friends who value their privacy.

We finally got 1Gbps fiber in my town in mid-2021 so now I can use Wireguard to connect to my home network even when I'm outside and access all my files via SMB, play LAN games with friends, and even control my machines directly.

A service that I've been using a lot is Jitsi Meet (another one of those projects with sneaky telemetry enabled by default), it's a pretty decent video conferencing software that I started using during the pandemic to keep in touch with my friend circle and now that's basically how we hang out every day, we all connect, talk, do silly experiments with computers, stream games via RTMP, and more recently, we've been learning to use Stable Diffusion.

Apart from that the services I use the most are Syncthing to keep some folders synchronized between my machines and with my friends and family, Nextcloud (mostly for contacts and calendar), Transmission, and of course SMB for shared folders.
There's also other stuff installed, most notably a Telegram bot that posts communications from my school to a Telegram channel used by me and some colleagues, and I intend to add a Matrix server (I already use it to chat with my friend group) and maybe a Lemmy instance.

By the way, I don't think I've ever shown my home server on my blog, so here's a picture of it: Home server

Good old reliable Normandy hanging under my desk, it's an Intel NUC that I bought in 2018 with a low power i3-8121U, 8GB of DDR4 RAM, a 16GB Intel Optane boot drive, and a 2TB Samsung 870 QV0 for storage that I added in 2021 replacing a 1TB spinning rust drive. This is a small but fast enough computer that uses virtually no power, it idles at around 3W (which is 99% of the time for a home server), it uses about 5W while transferring data at full speed, and I configured it to allow up to 45W for up to 5 seconds for short bursty workloads like restarting a service. That's incredibly efficient, it costs basically nothing to run this 24/7! I initially intended to connect all my data hoarding drives to this server (~96TB in total) but power consumption was too high and it wasn't worth it.

This server still running Debian 11 but I'm planning to switch to NixOS at some point, I learned to use this impressive new OS last month and I have a working config for my home server but I want to wait a bit and see how it handles updates before deploying it (plus, I feel kinda bad turning it off with a >400d uptime, it's my all time record). Over 400 days of uptime

Linux gaming

If there's one thing that's improved and worthy of several articles itself, it's gaming.

Now, I do play often but I wouldn't call myself a gamer, I only play single player games and indie titles, plus I'm getting old and it's starting to get difficult, but over the last 2 years I have played a few dozen games on Linux and the experience was pretty good actually.

Long gone are the days of installing a game in Wine and hoping that it doesn't just crash immediately, right now I'd say 85-90% of the games I try, especially modern ones, they just work, and they work really well, they render correctly, the performance is usually on par with Windows, there's nothing wrong with them, they're absolutely playable. Sometimes some tinkering is required, of course, but more often than not they just work out of the box.

The importance of Valve in this cannot be overstated, they've been working on Linux for about 10 years now but over the last 3-4 years or so they really did God's work patching up Wine, implementing new features, hiring great developers for open source projects like DXVK, VKD3D and Mesa, and even contributing to the kernel itself, all that makes me think that the Steam Deck has been the best thing to happen to the Linux desktop in a long time. I know they're probably doing this because they know that the days of Windows being an open platform are numbered and sooner or later it will become a walled garden, but damn, that's some dedication and it must said. Other projects, companies and independent developers also deserve a lot of credit of course. Steam deck

So, how do you get started if you want to game on Linux?

Well, if it's your fist time you should probably go the easy route and use Steam, it comes with the latest version of Proton and you'll be able to play most of your library right out of the box, and you can even add non-steam games to run in Proton with varying degrees of success. You should not get stuck with it though, you don't want to escape from Windows only to be tied to another proprietary platform.

If you want something less... proprietary, you can try Lutris, it's been around for a while so you'll find plenty of tutorials online, it has a GUI that's fairly easy to use, and it can be used for games from GOG, EGS, and alternative sources. It's certainly not as easy to use as Steam since you have to install and configure the games yourself, but at least you won't be tied to a proprietary platform.

One problem that both Steam and Lutris share unfortunately is the almost complete lack of sandboxing. You probably don't care about it but I do, I don't want a random proprietary application to have full access to my files and the internet, I just don't trust it, and that's why over the years I basically ended up making my own "poor man's Proton" called TDF using the same projects that Valve uses but with more sandboxing for both filesystem and network, and with all the configuration stored in simple config files. The project is not ready yet (still missing some documentation and minor features) but you can see it in action in the video below. Now released: TDF

Here's a video showing how I install, fix and play A Plague Tale: Requiem, a "problematic" game:

And here's a list of all the things I wish someone had told me before I started gaming on Linux:

  • Get an AMD graphics card, the drivers are a lot better than nVidia's and because the Steam Deck is RDNA2-based, you'll have better compatibility
  • Because there is some emulation involved, you'll need a powerful CPU. I'd recommend something with at least 8 cores
  • Use an Arch-based distribution like Manjaro, other popular and shilled distributions like PopOS significantly lag behind with updates which affects performance and compatibility
  • Use the latest kernel and Mesa (the GPU driver), ideally use the mesa-git package on the AUR, which is months ahead
  • If you're not using Proton, don't use mainline Wine or Wine-staging for modern games, they usually run much better with versions based on Valve's code, such as Wine-GE-Proton, and while you're at it, get the latest versions of DXVK and VKD3D-Proton, most games won't work without them
  • Don't install more than one game in the same wineprefix unless they transfer saves between them, it limits your ability to tinker
  • Don't install things like DirectX and .net Framework in Wine. Wine also has its own implementation of the older Visual C++ Redistributables, so you only need them for games that use version 2015 (msvcrt140.dll) and newer
  • Some games work but their installers don't, this is especially true for repacks that you find online. If something fails to install, you can usually just install it in a Windows VM and copy the files into the wineprefix
  • Some legit versions of games may not work because of DRM, but cracked ones might
  • When games don't start, more often than not they're just missing some DLLs, launch the game in a terminal and look at the errors
  • Games with anticheat software usually don't work unless they make Linux-specific versions. This doesn't affect me, but if you mostly play that kind of games, this may be a dealbreaker for you
  • You don't have to disable the desktop compositor, it turns itself off automatically when an application enters fullscreen (or at least, KWin does)
  • If you have a high refresh rate display, go to the display settings and make sure it's actually running at full speed, the default is usually 60Hz. VRR works.
  • HDR and VR are still in their infancy on Linux
  • Don't waste your time with Gamescope, just use a version of Wine that has the fshack patches like Wine-GE-Proton
  • If you really can't get a game to work, don't be shy and report it to one of the projects involved, this is a friendly community of enthusiasts, at worst they'll tell you it's not that project's fault and point you in the right direction
  • Don't be afraid to build stuff from source, it's easier than you think
  • These are good places to get information about games and how to fix issues:
    • ProtonDB: a user-curated database of all the games that have been tested on Proton. Even if you're not using Proton or a Steam Deck, this is a good place to find solution to problems because they're usually the same
    • DXVK issues and VKD3D-Proton issues: this is where you can find issues reported by the users for DX9-11 games (DXVK) and DX12 games (VKD3D-Proton). If your game doesn't work or has rendering issues, this is usually a good place to start looking for a solution or to report the problem. The devs are friendly
    • Mesa issues: this is where you can find issues reported by users and developers of the Mesa graphics driver (AMD and Intel), if your game has rendering issues this is definitely a place to look, issues often contain workarounds
    • PCGamingWiki: just because it's focused on Windows, it doesn't mean it's not useful, a lot of times you'll run into the same issues with Wine as you do on Windows, and the fixes on this site can be useful
    • Wine forum and mailing list: nowhere near as active as the issues pages above, but can provide useful information about problems with Wine

Here's my PC running one of the least optimized games of the year, The Last of Us Part 1. This is one of those games that run better on Linux, at least on AMD.

The PC that I use has these specs:

  • Motherboard: MSI B550 Tomahawk
  • CPU: AMD Ryzen 7 5800X
  • RAM: 64GB DDR4 (16GB is the bare minimum I'd say)
  • GPU: AMD Radeon 6900XT
  • Storage: 2 x Samsung 980 Pro 1TB SSD

Conclusion

What can I say? Give it a try bro!

Share this article

Comments