RSS Amplifier

nicoverbruggen.be · Feb 15, 2026

Hello, Bazzite!

0
Sign in to vote or save

Nico Verbruggen · nicoverbruggen.be

Welcome to the second part of my Windows-to-Bazzite journey. In my previous post I explained that I had decided to install Bazzite, a Fedora-based Linux distribution, because after all, why not take Linux seriously?

(You may recall in the previous post I pointed out that, well, we might have Stockholm-syndromed ourselves into believing that debloating an operating system that disrespects you is a good choice to make. It is not.)

There are, obviously, various options when it comes to modern gaming on PC hardware. I briefly examined Nobara, CachyOS and SteamOS before deciding and committing to Bazzite.1

The main appeal of Bazzite, to me (compared to these alternatives) is primarily the focus on gaming and the OCI container based approach which effectively provides a sort of immutable distribution via bootc.

This approach makes the system more resilient, and less prone to accidental breaking. Also, it seems like an increasingly popular option. It’s also easy to use. Though I suppose whether this is actually true depends on the person sitting behind the monitor, doesn’t it? I’d say Bazzite is not too difficult to use, though.2

You may find that many of the things I describe below require some level of tinkering for optimal results, but Windows requires a similar level of tinkering for equivalent results, too, if you want a clean and debloated setup. I do want to point out that the Steam Deck experience is great out of the box for many games, so I probably will not have many issues there…

Now, I have tinkered with Linux before, even when I was a teenager. Those were the days. I daily drove Ubuntu, Mint, Fedora… I broke things, I’ve customized to my heart’s content. That was the past. These days, I want something that just works.

And increasingly, Windows ain’t it. But I also wasn’t keen on a Linux setup that requires constant attention.

If I want to, I can always tinker on a less important machine or in a VM (or on a mini PC, like I did last time). In the unlikely event that I do I need more flexibility on my current system, I can always spin up a Distrobox with my preferred system or use Homebrew. I will elaborate on that in a bit.

Like most other distros, you must first decide what desktop environment (DE) you wish to use with Bazzite. Some distros give you a big disk image file so that you can pick a desktop environment during the installation process.

Bazzite ships dedicated images based on the desktop environment and whether you need the Steam Big Picture mode upon startup (the latter being the so-called “deck” variant, because Steam Deck ships with something similar on SteamOS).

Desktop environments

I used to be a big fan of GNOME, but this was mostly during the 2.0 days, many years ago, when I was still a teenager with a small Dutch Linux blog. I did actually blog about GNOME 3 when it was brand new and was more impressed by it than Unity, which was what Ubuntu was offering at the time.

From the archives: an actual screenshot of my Ubuntu desktop, dated April 25, 2009. I used to run the operating system in Dutch at the time, and apps like Pidgin, Evolution and OpenOffice and were my go-to daily apps that I used while I was still in high school. The internet was a different place at the time. I was quite fond of Ubuntu back then.
From the archives: an actual screenshot of my Ubuntu desktop, dated April 25, 2009. I used to run the operating system in Dutch at the time, and apps like Pidgin, Evolution and OpenOffice and were my go-to daily apps that I used while I was still in high school. The internet was a different place at the time. I was quite fond of Ubuntu back then.

Since revisiting Linux on the Steam Deck and trying out Fedora, more than a decade after last daily driving Ubuntu, I’ve grown quite fond of KDE. I think it’s probably the nicest and most modern desktop environment right now, so that’s what I settled on. It’s probably also how I use computers: I don’t really use virtual desktops a lot.

GNOME seems to be more opinionated when it comes to managing windows and how it does things. I really should give it another proper go at some point, but since I was used to KDE I decided not to rock the boat too much, on this particular occasion, so I decided to stick with KDE for now.

Choosing a flavour

The KDE version of Bazzite that I was interested in has two particular flavours. I tried out both options, which are:

  • Bazzite: The first is a version that boots straight into a traditional KDE desktop. It is basically Fedora Kinoite with some tweaks and additions that make it better suited for gaming. Steam comes preinstalled, but it’s less of a console-like experience since you are required to sign in and switch to Big Picture manually.

  • Bazzite (Deck): The second is a version that boots straight into a SteamOS-like mode, ideal for a setup with a controller. This one works basically the same as SteamOS, but gives you the option to switch to the Desktop Mode, too, if you so please. Useful if your computer will primarily be used for gaming and you want to be able to use it more like a console.3

The experiment

I decided that I was going to play all my PC games on Linux for the next month, no exceptions. A few years ago, I built a computer on the Zen 4 platform as a budget build. This is my so-called “secondary PC”, and it’s a little less powerful than my main PC, but good enough for a serious experiment.

For this experiment, I was not willing to risk breaking my primary PC, so I decided that I was going to do a test run instead. In particular, I decided to avoid dual booting on the same disk on my main machine, because I know that Microsoft has a history of breaking dual booting with updates. I should point out that dual booting is not an issue if you use two different storage drives.

Since I did want to commit to the test run, I unplugged my main desktop computer. I then moved it out of the way, and put the secondary PC in its place. For the next month, this PC running Bazzite was going to be my main gaming and general purpose computer instead.4

When I initially built this secondary PC, it didn’t even have a discrete graphics card. This was during the crypto boom in 2021, when GPUs were basically way too expensive, so I used it with integrated graphics for a while.

(In retrospect, given the current price surges for computer parts affecting memory, storage and graphics cards, I suppose we didn’t have it too bad back then… if only we had known what the pending AI boom would take from us…)

A year or two ago I upgraded the GPU in my primary computer, and moved my older GPU to the secondary PC. With a dedicated GPU, this computer was now easily capable of 1440p (or even 4K) gaming when using upscaling technology, like FSR.

I installed Bazzite (the desktop variant) and got to work. I installed Zen Browser and got rid of Firefox, and decided to check a few games. I also used ProtonPlus to install the latest version of ProtonGE, which improves compatibility with certain games beyond what Valve has on offer with their version of Proton.

To verify whether this switch was going to even be viable, I wanted to check out some of my go-to games and see if they ran without issue. I also wanted to see what I was able to do with the command line and install developer tooling. In short, I wanted to assess both productivity and gaming on this new system.

Before we begin, I should note that the latest, up-to-date documentation can be found at docs.bazzite.gg, which is excellent. The older this blog post is, the more likely some of the information will be out-of-date. If something doesn’t work, take a look at the documentation to find out what has changed.

Part 1: Productivity on Bazzite

Software availability and management

Due to the immutable nature of Bazzite, you can’t just install packages like you would on a traditional Fedora installation, since the system partition cannot be written to.

So, if you’re a PHP developer like me, you can’t just run dnf install php – that’s the equivalent of apt install php, for you server folks familiar with Ubuntu. Doing so results in the following output:

nico@bazzite:~$ dnf install php
ERROR: Fedora Atomic images utilize rpm-ostree instead (and is discouraged to use).
Please, read our documentation
https://docs.bazzite.gg/Installing_and_Managing_Software/

You do have some options, it isn’t like you’re out of luck. In fact, the way this model works is quite similar to macOS; you cannot update system libraries and binaries, but you can install your own in your user folder.

Bazzite actually ships with Homebrew and Distrobox, both of which give you the option to install software and use it, while retaining the immutable base install. Users familiar with macOS will also likely be familiar with Homebrew, which has excellent availability of certain formulae, even for Linux.

This is very useful for software developers, but if you are looking to install other applications (e.g. LibreOffice or some other GUI apps) you should probably be looking at Flatpaks (via Bazaar). Apps you install this way are usually sourced from Flathub, unless you specify another source provider.

Let’s go over a couple of options that are available as an alternative to using a traditional package manager in more detail, in order of preferability on this particular operating system the an immutable base:

Flatpaks

Flatpak is a universal containerized package format that tries to sandbox applications through flexible permissions that the application has access to on your system.

This is our first option. If at all possible, using Flatpaks is actually the most preferable option, too.

There’s a couple of benefits to Flatpaks; first off, Flatpaks are isolated by default, which means that they can’t just access every file on your system. So applications installed via Flathub for example are probably going to be pretty decent citizens.

Bazaar also shows how many permissions individual apps require to work correctly, so you can assess how much of a security risk they might pose and what you are comfortable with.

By doing so, Flatpaks employ a similar approach to apps you can find on the Mac App Store; i.e. they are sandboxed by default, they ship with their own dependencies, and are decoupled from system and system library updates.

In case you want to tweak what permissions are granted to a given Flatpak, you can also use a tool like Flatseal. (I actually needed this to fix a permission at once point when something was misconfigured or I wanted to grant access to a particular directory that wasn’t included by default. It’s good to have the option!)

Homebrew

Homebrew is a package manager that installs packages into their own prefix. It is primarily used for command-line interface (CLI) and terminal user interface (TUI) applications. Homebrew can also install graphical applications using the --cask flag, but most are for macOS as support for casks on Linux is still developing.

As the developer of PHP Monitor for macOS, I am rather familiar with Homebrew, as I use it daily on my Mac. It’s very nice to see it is available on Linux, too. You can easily install various dependencies and developer tools with Homebrew.

For example, I used it to install my PHP stack (alongside Composer), which is one of my most frequently used programming languages:

brew install [email protected] composer

This allows me to set up my Bazzite machine for PHP development, without needing to use Distrobox or layering packages.

I should note that I am actually considering building the equivalent of PHP Monitor for Linux, but that’s a story for another time. I’d need appropriate funding for that, and that currently isn’t an option. But maybe, some day.

In the meantime, if you’d like to contribute to increase the odds of a Linux version of PHP Monitor, visit my sponsorship page and let me know that you pledged with the intent to make a Linux version possible.

Quadlet

Quadlet is a feature of podman that allows a user to run a container as systemd units. It works by using a declarative syntax like docker compose but integrates to systemd and uses podman as a backend.

I haven’t had the time to check this out, as I’m not using my machine to spin up certain services like nginx and such, but you can find out more documentation about what Quadlet is and how to use it via the official documentation.

Distrobox

Run other minimal variants of popular Linux distributions in Bazzite inside of a container, and access each distribution’s packages without any of their dependencies and libraries affecting the host machine.

If you want even more control, you can opt for a container-based alternative in Distrobox. It lets you install a lightweight distribution in a container which you can use to install applications. There’s even a GUI included with DistroShelf.

You can use Distrobox even for applications that require a GUI, so if you have a specific application that you can only install on, for example, Ubuntu, you can still get it working on Bazzite.

Also, you can run whatever apt install command you’d like, if you know it’s available on Ubuntu… or you can source a PPA (personal package archive) of your choice. This affords you a certain degree of flexibility, for sure.

Certain developers only distribute official packages for the most popular Linux distributions, and that sometimes that ends up being just Ubuntu. It’s nice to be able to install said software without any issues.

Containers are not intended to be fully persistent, so keep that in mind. I should note that Distrobox is also great for distrohoppers, who may find it useful.

AppImage

AppImage is a universal package format that attempts to bundle every dependency that an application needs into one portable file. They can be installed by downloading any file with a .AppImage extension and then giving it executable permissions in the file’s properties so the application can run properly. Like Windows executable files, they are usually found on the project’s website to download.

Like Flatpaks, AppImage files are standalone packages that will let you run the software, but unfortunately requires manual updates.

For example, I use an AppImage for LM Studio, which is otherwise unavailable via other channels. Plenty of applications offer an AppImage version, but sometimes you do actually need to install additional dependencies to get them to work.

To troubleshoot these, you can start the AppImage via the terminal, which will display any potential warnings or error messages. In my experience, using these can be a mixed bag.

Tip: You can install Gear Lever to make managing AppImage packages easier. Especially updating them becomes less tedious when configured correctly.

rpm-ostree

Bazzite utilizes bootc to manage the base image for your system, pin specific versions, and perform rollbacks when needed. For systems with customized software via layered packages, rpm-ostree becomes essential for installing, upgrading, and managing those additions. (Source)

If you do need to install some software that requires deep system integration, you may need to still layer packages (on top of the existing base, read-only container). This is accomplished using rpm-ostree.

I should note: this is a bit of a potentially annoying process in the sense that you may need to undo these changes if you plan on doing upgrades to the base container, so you probably only want to layer packages if it isn’t possible to use a Flatpak version or if that sandboxed version has too many limitations.

(For example, any given password manager installed via Flatpak will not be able to integrate with the browser to the same degree as a regular package version installed at the system level. While there are workarounds, the easiest solution is sometimes just to layer a package.)

Here’s another example: I have layered gsmartcontrol on top of my main installation. gsmartcontrol accesses disk health information (SMART) and more, which requires it to be layered for it to work correctly.

You can see I did this by running rpm-ostree status, like this:

nico@bazzite:~$ rpm-ostree status
State: idle
Deployments:
● ostree-image-signed:docker://ghcr.io/ublue-os/bazzite:stable
                   Digest: sha256:71a51c4faf8cec6401b8c99ab319d1e7705a77f2253817710093eb3b436132cd
                  Version: 43.20260101 (2026-01-02T00:07:13Z)
          LayeredPackages: gsmartcontrol

  ostree-image-signed:docker://ghcr.io/ublue-os/bazzite:stable
                   Digest: sha256:4b712efdc9b716aaef9b80222868bb8d6121f24f84f57c45c210481283b04c36
                  Version: 43.20251231.1 (2025-12-31T23:48:57Z)
          LayeredPackages: gsmartcontrol

As an aside: as I mentioned before, one of the advantages of using this containerized system is that you can easily revert to a previous deployment.

You can either revert via the terminal:

A rollback to the previous system deployment can be done by entering this command in a host terminal: rpm-ostree rollback.

Alternatively, you can revert via the boot menu:

Rollback can also be done in the GRUB menu (the menu you see before booting into Bazzite on Desktop images) by choosing the previous boot entry before booting to the desktop. It shows your current (:0) and your previous (:1) deployments. Your personal files will not be affected by this, and you can still update to the newest builds after rolling back.

You can learn more about rpm-ostree here. The documentation also explains how to pin a particular deployment.

I’ve never needed this, but if you need a fixed environment, pinning a deployment may be very useful. I suspect people who want a consistent environment for benchmarking or testing may find this feature super helpful, or folks who keep their machine offline for an extended duration may also benefit.

Software availability on Bazzite

My most commonly used applications are available on Bazzite via either Flatpak or AppImage. In no particular order, these are applications that I use:

  • Zen Browser (my preferred browser, based on Firefox)
  • VSCodium (Visual Studio Code alternative)
  • Discord (voice chat and screen sharing with friends)
  • OBS Studio (streaming and recording software)
  • LM Studio (app to run local LLMs)
  • FreeCAD and Blender (modelling software)
  • FontForge (a font editor)
  • Obsidian (markdown text editor & knowledge base)
  • LibreOffice (office suite)
  • CrealityPrint (slicer for my 3D printer)

Some of the software that I pay for is also available on Linux:

  • 1Password (a password manager)
  • PhpStorm (IDE for PHP)
  • Sublime Text (an excellent text editor)
  • Sublime Merge (my favorite Git GUI)
  • REAPER (a digital audio workstation)

There are a few applications that I really enjoy on macOS that I do not have available on Linux, but really there aren’t that many. This was very different a decade ago.5

I can also still run some Windows software via WINE and Proton, too. I’m not saying every program will work, but WINE is good enough that many programs will now run without too many issues. Often, running software under Proton or using umu actually yields better results in terms of compatibility, the older the software is.

Certain games that aren’t available via Steam can also be installed via Lutris or the Heroic Games Launcher. To give you a practical example: I was able to get StarCraft II and Battle.net up and running this way, for example.

Certain Windows applications can run just fine on Bazzite, including launchers for games. StarCraft II takes me back to my college days, to 2011-2013, the glory days of that game. I’m in the middle of replaying the single-player campaign, actually…
Certain Windows applications can run just fine on Bazzite, including launchers for games. StarCraft II takes me back to my college days, to 2011-2013, the glory days of that game. I’m in the middle of replaying the single-player campaign, actually…

That reminds me… let’s talk about gaming. After all, it’s what I use my desktop computer for the most, since most of my productivity work (still) happens on the Mac. Maybe that’ll change in the next little while, who knows?

So, without further ado…

Part 2: Gaming on Bazzite

Proton all the way down

For the majority of the games available on Steam that you may want to run on Bazzite, the compatibility layer, Proton, will be used.

It effectively lets you run Windows games on Linux. A couple of years ago, the truth was that “a few games run on Linux”, and now “a few games don’t run on Linux”. I think that’s a very interesting shift; I generally don’t have to worry about games not running.

I should note that certain games will likely never be compatible, and you should keep that in mind; in particular, games requiring kernel-level anti-cheat protection measures, like the latest Battlefield game, won’t run. (However, I should note that not all hope is lost.)

You can learn more about game compatibility on Steam’s store pages. If you want more information and potentially tinker to get even more out of your setup, you can also consult third-party sites like ProtonDB, which contain helpful user reported data.

To be perfectly blunt, if you want to be able to run all of your games your best bet is to maintain a dual-boot setup right now; you can run the majority of games on Bazzite, and a handful of unsupported games on Windows.

(Alternatively, like me, if you don’t play any of those games, you can simply ignore games that are not compatible. I still have a small Windows partition in case I bump into a game-breaking bug, as a fallback option. But so far, I haven’t needed it, and fingers crossed that things remain this way.)

Launch option tweaking

Let’s get another important thing out of the way first: unlike on Windows, where you have a separate driver and application to use your GPU and enable various features like image sharpening, setting frame rate limits, etc., you don’t have this on Linux.

You do not have software that needs to be installed to get things up and running on Linux. Drivers don’t work the same way on Linux, that’s just the bottom line. Linux-based distributions usually ship with Mesa, which is an open source driver for various GPUs. Well, sort of.

This does also mean that there is no GUI for some of this stuff. You might be used to this on Windows with GeForce Experience or AMD Adrenalin. In those apps, you can easily tweaks settings of your GPU, even to the point of setting up overclocking or undervolting. Those apps are not available on Linux.

But not to worry: if you do want to tinker around you do have some options. Here’s a few useful applications that you may want to use to tinker around with your precious and expensive hardware:

  • LACT allows you to view and tweak your GPU’s frequencies and power limits. The app also contains tons of useful information about your GPU. If you want to, you can also use it to overclock (or underclock) your device.
  • Goverlay lets you tweak MangoHUD (an overlay that displays FPS information and temperatures) and allows you to apply sharpening and other effects via VkBasalt.
  • Mango Juice is another application that lets you customize the MangoHUD overlay. By default, on the Bazzite Deck image, SteamOS provides an easy toggle for the overlay – you might be familiar with that from the Steam Deck.

Despite that, you may still need to apply these so-called “launch options” on a game by game basis, which will allows you to fix various issues or do specific things like apply a frame limit or sharpening.

Setting up launch options looks like this. In this screenshot, for example, I force using Wayland, and use my second monitor as the “primary monitor” for running the game, which can be useful for certain games that don’t respect which monitor you’ve set as the primary one. This is even an issue on Windows, where you basically can’t fix that – thankfully, you can here. For the final configuration, take a look at the “Some Warhammer woes” section below.
Setting up launch options looks like this. In this screenshot, for example, I force using Wayland, and use my second monitor as the “primary monitor” for running the game, which can be useful for certain games that don’t respect which monitor you’ve set as the primary one. This is even an issue on Windows, where you basically can’t fix that – thankfully, you can here. For the final configuration, take a look at the “Some Warhammer woes” section below.

In order to avoid issues with Total War WARHAMMER III and getting a more-or-less consistent framerate with the RX 6800 XT that’s inside my Linux machine, I used the following parameters – a 90 FPS cap and I also enabled MangoHUD (but hidden by default); this allows me to toggle the MangoHUD overlay when I want:

DXVK_FRAME_RATE=90 \
MANGOHUD_CONFIG="no_display" \
mangohud %command%

Note: DXVK_FRAME_RATE has been deprecated now. It’s now advisable to limit framerate with something like mangohud instead. I encountered some more issues with this game, and my final fix with this new approach is listed a little further down in this post.

I was a bit worried that this meant I was going to need to switch back to Windows, but fortunately this configuration seems to work fine for me.6

Malus Darkblade is my favorite Dark Elf legendary lord, because he’s a powerhouse. After setting up the game with a couple of extra parameters and forcing the Proton build, I get a pretty decent experience.
Malus Darkblade is my favorite Dark Elf legendary lord, because he’s a powerhouse. After setting up the game with a couple of extra parameters and forcing the Proton build, I get a pretty decent experience.

Performance is also pretty decent, too, but keep in mind that I am using ProtonGE 10. Depending on the version of Proton that you’re using and the version of Mesa (the drivers) that ship with your distribution, your mileage may vary.

To be fair: I remember trying this a few months prior, before the summer, and WARHAMMER III was significantly slower and for me that was a bit of a dealbreaker. Fortunately, that’s no longer the case.

I should point out that you can just use Big Picture and not worry about tinkering with your games, too. Many games are supported out of the box and will just run.
I should point out that you can just use Big Picture and not worry about tinkering with your games, too. Many games are supported out of the box and will just run.

I should point out that none of this tinkering is generally required but it can improve your experience running games on Bazzite. I was seeing improved performance with WARHAMMER, but I generally I don’t have to tweak many things.

Sometimes, though, I do need enable a frame limiter. On Windows, you can enable this in the various GPU app config panels (NVIDIA Control Panel/GeForce Experience, AMD Adrenalin) but on Linux there’s no direct equivalent.

Limiting Framerate

I was playing Deponia some time ago, but that had some known issues when running on displays with high framerates. This is a platform-agnostic bug, by the way. It’s a problem with how the game was built.

So, in order to be able to properly play the game, I would need to limit the game’s frame rate to 60 FPS. You have a few options for framerate caps; you can use external tools like mangohud or on the level of DXVK (which is, as I have mentioned before, no longer advisable).

I was not willing to cap my monitor’s framerate to 60 Hz, which would also have fixed this problem, so I looked into another option.

As you can see when you look at the overlay and the utilization of my machine, Deponia is not a taxing game. Because of that, it ran too fast – which broke the game. Fortunately, there’s an easy fix and you can see it in action, here.
As you can see when you look at the overlay and the utilization of my machine, Deponia is not a taxing game. Because of that, it ran too fast – which broke the game. Fortunately, there’s an easy fix and you can see it in action, here.

I decided to cap the game to 60 FPS because that ensures the game works correctly. For Deponia, I settled on frame limiting through mangohud:

MANGOHUD_CONFIG="fps_limit=60,no_display" mangohud %command%

To verify that the frame limiter works correctly, you need to press RIGHT-SHIFT and F12 to toggle the HUD, since it defaults to no_display by default given these parameters.

For games running on DirectX (and being translated with DXVK) you can use the following for a 60 FPS cap, since DXVK_FRAME_RATE was deprecated:

DXVK_CONFIG="dxgi.maxFrameRate = 60; d3d9.maxFrameRate = 60" %command%

Modding Metaphor

I also set up Metaphor ReFantazio with Special K and MetaphorFix to address some performance issues that the game has at high rendering resolutions. I wanted to see if I could just as easily mod my games on Linux as I could on Windows.

Sure enough, it wasn’t that difficult!

For Metaphor, after doing some tweaks and capping the framerate to 90 FPS at native 4K, I was happy with the performance in the main city hub, which I remember from the demo being the most difficult to run in terms of performance.

I decided to set the following launch flags:

WINEDLLOVERRIDES="dxgi=n,b" # use custom DLL
MANGOHUD_CONFIG="fps_limit=140,no_display" # limit FPS
mangohud %command% # also run mangohud

The idea is to cap the max framerate to 140 regardless, and use dxgi.dll override (Special K) to set an even lower framerate cap (90).

In Special K, I added MetaphorFix.asi from Lyall to the plug-ins section and set that up so that the ambient occlusion resolution is lowered, since running at 1x means running ambient occlusion at 4K, which is a bit expensive on the GPU.

[Ambient Occlusion]
Resolution = 0.5

As an added bonus, the default configuration also skips the intro movies. Nice.

The Special K overlay for Metaphor lets you tweak all sorts of things. It’s super nice that it just runs correctly, even on Proton.
The Special K overlay for Metaphor lets you tweak all sorts of things. It’s super nice that it just runs correctly, even on Proton.

I finished Metaphor a couple of days ago, and my entire playthrough was done on my machine running Bazzite. I had a blast!

Setting up my favorite MMORPG

When I initially set up Bazzite, I also installed Final Fantasy XIV, which I am launching with XLCore (which is the custom FFXIV launcher for Linux). At the end of last year, I completed Endwalker, and the last bits of the story I was able to complete on Linux.

I’d been (very slowly) making my way through the different expansions since 2020, and it took me about 5 years to make it to the end of the original decade-long story arc, finishing the game last year.

“Once we depart, there is no turning back.“ Well, truthfully, Lucia’s sentiment applies to moving to Linux, too. Who knew.
“Once we depart, there is no turning back.“ Well, truthfully, Lucia’s sentiment applies to moving to Linux, too. Who knew.

Some Warhammer woes

After a few sessions of WARHAMMER III I found out that the game has a tendency to crash every now and then, and it might not even be my fault. I theorized at the time that it was likely related to the Mesa driver… and it happens when the game loads back to the campaign map under some conditions.

It didn’t happen that frequently, but since it’s a GPU crash it took down the entire system. I found an existing bug report and chimed in with my own experience.

At the time of writing, I have not had WARHAMMER III crash on me, so it’s possible the issue was resolved by the developers; or perhaps an update to Mesa fixed the issue. There’s also a small chance I may still run into the issue at some point, of course.

I also found out how to do Radeon Image Sharpening (or CAS, “Constrast Adaptive Sharpening”) with VK_BASALT, which is a setting I often used on Windows.

My new launch options are as follows:

PROTON_ENABLE_WAYLAND=1 # This forces Wayland
WAYLANDDRV_PRIMARY_MONITOR=DP-2 # This forces a specific monitor
DXVK_FRAME_RATE=144 # Limits the framerate
ENABLE_VKBASALT=1 # Enables CAS sharpening
%command%

The configuration file in /home/nico/.config/vkBasalt/vkBasalt.conf looks like this, effectively enabling CAS by default if VkBasalt is enabled:

effects = cas
toggleKey = PgUp
enableOnLaunch = True
casSharpness = 0.4

In terms of performance, things are quite promising. I was seeing very similar performance to Windows. I was curious, and decided to do a direct comparison.

Keep in mind, I am using AMD hardware – performance with NVIDIA GPUs is generally up to 20% lower in DirectX 12 titles when compared to Windows, but they’re working on it to fix this.

I did some testing later, on the same machine. When benchmarking WARHAMMER III’s Immortal Empires (uncapped) at the same settings, on the same hardware, this resulted in an average FPS of ~140 FPS on Windows, and ~150 FPS on Bazzite.

Please note that Bazzite running Proton reports itself as Windows 10, which is why it says so in this screenshot. This is actually running on Linux.
Please note that Bazzite running Proton reports itself as Windows 10, which is why it says so in this screenshot. This is actually running on Linux.

This is with no other applications running in the background. Notably, 1% and 10% lows were comparable with a delta of about 5 FPS on average.

So, all in all, things seem to run well, sometimes even better than on Windows (when using an AMD graphics card) and we can probably expect the NVIDIA drivers to catch up relatively soon. At that point the majority of people will be able to switch to Linux without needing to be worried about a performance hit.

Conclusion

I am now able to get some of my programming work done on my desktop computer AND play video games without many issues, so I really no longer need Windows.

You might be wondering how that “month of Bazzite” without using Windows went? Well, quite well! About two months into the experiment, I made the decision to stick with this and switch to Bazzite on my main computer, too.

I installed the “SteamOS-like” version of Bazzite on my secondary rig, and connected it to my 4K display, and now I have a console-like experience and a traditional gaming PC, both running slightly different flavors of the same OS, but both distinctly not Windows.

This effectively gives me a sneak peek at the experience many gamers will have when they purchase a Steam Machine later this year.

That is, of course, assuming the hardware is at least somewhat affordable, which is not a given, considering the current pricing madness of hardware components… some prices have quadrupled for certain components.

I do still have one SSD with Windows on it for games that exhibit strange issues or for games that require the OS specifically, but so far I haven’t needed it for anything. I set it up on a separate SSD so that I would not have bootloader issues after running Windows Update, so that’s something to keep in mind.

In all likelihood, I will probably eventually remove this partition, too, seeing as I haven’t needed it. It does provide a bit of peace of mind, so I’ll keep it around for another year or so, and if Bazzite continues to be a wonderful experience, I think it may be over and out for Windows in this household.

Truthfully, for all intents and purposes, it already is.

You can learn more about Bazzite or try it out by going to bazzite.gg.

I promise you, it’s worth a shot. You don’t need to disrespected by your operating system on a daily basis.


  1. I also briefly tried out Omarchy, a sort of remix by DHH, one of the most opinionated tech people and owner of 37signals, the company behind Basecamp. I applaud his enthusiasm about Arch Linux, but I can’t say this particular distribution is something for me. 

  2. I think anyone who is interested in learning more about computers can benefit from setting up Linux on their computer. For regular people, I suspect the Steam Machine or Steam Deck are better choices; they don’t require any previous knowledge and things just work out of the box. 

  3. Games run using gamescope, which acts as the compositor in this default SteamOS-like mode. It’s pretty cool, since it lets you use FSR and supersampling out of the box by specifying scaled resolutions. This is currently not possible on the desktop without installing extra software like the Heroic Games Launcher or specifying that gamescope needs to be used via tweaked launch options. 

  4. I should point out that I don’t do software development on these desktop computers. I have a Mac mini for that, which runs macOS. I can’t say I’m too happy about the direction of macOS over the last 24 months, but to be honest… Linux is becoming an increasingly enticing alternative. However, the reason I haven’t switched at this point is because I still believe macOS provides the most premium developer experience at this time. Should this change, I will certainly consider buying new hardware and switching. But right now, they are the uncontested #1, especially in combination with their M-series of chips on laptops, which sport industry-leading battery lifetime and incredible performance. Even my M1 MacBook Air (the cheapest model back then!) still gets many hours of screen-on time between battery charges, which is absolutely remarkable and not the norm in x86-land. A laptop that is five years old never aged this well! 

  5. Some apps that I really loved on macOS simply no longer exist, like iTunes. (I thought it had a great UI for managing my offline music collection. Alas, it no longer exists, and the Apple Music app just isn’t the same.) 

  6. I should note that in certain situations it is preferable to run the Windows build of a given game, despite a Linux build being available. For the various Total War games, I had a better experience running the Windows version, but that isn’t necessarily always a good idea. For example, Factorio is known to run a lot better on Linux – it is able to make auto-saves in the background without needing to pause the game, for example, which isn’t possible on Windows. 

This was not generated: Unless explicitly specified, the posts on my blog are my own creative work. 100% written (typos included) and edited by me; not generated using e.g. large language models.

Read the original on nicoverbruggen.be

Comments

Nothing yet. Say the first thing.

    Sign in to join the conversation.