Universal Blue Kinoite or: How I Learned to Stop Worrying and Love the Immutable Linux Desktop & Flatpaks updated 04/30/23
~Written with love & mostly on my "Steam Desk" Steam Deck + Steam Deck Dock on my 4k TV on my beanbag.
TLDR: How to get an Immutable Fedora KDE Plasma Desktop setup for gaming on Linux. Brought to you by Universal Blue Project.
💬 It's (not just) Fedora Kinoite/ Fedora Silverblue with extra steps!
Fedora Media Writer is my goto when Ventoy doesn't work. And for best practices, I would have to suggest users try this first, tho I still love Ventoy.
If you are on windows.
If you are on Apple.
I use Ventoy on my USB Drive now (no more carrying so many drives for different
.iso
s).
For how-to install ventoy, yes there are GUIS for linux, and yes you can even install it on a spare storage drive, not just USB sticks. Super cool.
- For Downloading the Universal
.iso
installer as well as thesha256sum
hash for verification.- "One small ISO with options to install GNOME, KDE, XFCE, LXQt, and MATE, as well as Nvidia-integrated versions of each."
For a How-to install Universal Blue
- 📀 Start with a Fedora image... 🔐
- 🔓 🔧 Adds the following packages to the base image: 🔩 🔨
- 🎭 📹 Hardware acceleration and codecs 🎥 📺
distrobox
for terminal CLI and user package installation- A selection of udev rules and service units
- 🎮 Gaming controllers from game-devices-udev See: Supported Devices 👾
- Google Titan USB keys
- 🌈 OpenRGB rules 🚦
- Yubikey support
- Wooting Wootility
Note: udev rules are placed in
/usr/lib/udev/rules.d/
, it's normal for/etc/udev/rules.d
to be empty on initial installation.
- libratbag, to configure supported mice via piper
- Various other tools: check out the complete list of packages
- Sets automatic staging of updates for the system
- Sets flatpaks to update twice a day
- Reliable, atomic updates with built in rollback
- Known-good state and fewer failures
- Significantly reduced configuration drift
- No compiling or building Nvidia drivers on the local client, they come premade on the image
- Clean separation of the base system from applications and your data
"Our images offer GNOME, KDE, XFCE, LXQt, and MATE, with more being added on the regular. As well as Nvidia-integrated versions of each. Our NVIDIA images offer a unique blend of reliability and ease of use that you won't find anywhere else."
Side effects of using the Flathub Flatpak of Firefox may include:
- Being updated sooner (usually).
- Feeling & behaving exactly the same exact way across all the distros you install it on. (Feels the same way on my Steam Deck and on my Desktop)
- Increased security of flatpak-sandboxing. (who does't love sandboxes?)
- Not worrying about if you have codecs installed on your system or not. (yay flatpaks including everything they need in their libraries)
"Universal Blue does have hardware accleraction and codecs installed out of box, so
.rpm ostree
installation of it should work just fine out of box, but I still prefer using the Flatpak."
"Removing" (really more like hiding it) the ostree Firefox
from a clean install:
- Run
sudo rpm-ostree override remove firefox firefox-langpacks
inKonsole
To "hide".rpm
of Firefox from the ostree image. - Run
flatpak install flathub org.mozilla.firefox
to install thefirefox flatpak
and open/run withflatpak run org.mozilla.firefox
to run it. Or option B: - Visit Flathub:Firefox and click
Install
to open and install inDiscover
. or option C: - Open
Discover
and search forFirefox
and install it there. (make sure it's the flathub repo as the source)
🎵 To the tune of Stroke 9's
"Little Black Backpack".🎵
Now you have the Firefox Flathub Flatpak Back.
To enjoy the Firefox Flathub Flatpak in Wayland session
glory: (not just on an x.org session
)
Run: flatpak override --socket=wayland --env=MOZ_ENABLE_WAYLAND=1 org.mozilla.firefox
in Konsole
To enable the Flathub Firefox Flatpak to use wayland.
To Verify hardware accleration:
- Exit out of Firefox. Just in case it was just updated and to make sure the permission/env change takes effect.
- Open it back up and visit
about:support
in the address bar. - Search for
Composting
if it saysWebRender
, then you are running on Hardware Acclerated Firefox in wayland, if it does not, and readsWebRender-Software
, then you are not and something may have gone wrong.-https://fedoraproject.org/wiki/Firefox_Hardware_acceleration
Contextually related tangent: "What even is Wayland?"
"Wayland is a replacement for the X11 window system protocol and architecture with the aim to be easier to develop, extend, and maintain. Wayland is the language (protocol) that applications can use to talk to a display server in order to make themselves visible and get input from the user (a person). A Wayland server is called a "compositor". Applications are Wayland clients."
"Wayland also refers to a system architecture. It is not just a server-client relationship between a compositor and applications. There is no single common Wayland server like Xorg is for X11, but every graphical environment brings with it one of many compositor implementations. Window management and the end user experience are often tied to the compositor rather than swappable components."
"A core part of Wayland architecture is libwayland: an inter-process communication library that translates a protocol definition in XML to a C language API. This library does not implement Wayland, it merely encodes and decodes Wayland messages. The actual implementations are in the various compositor and application toolkit projects."
"Wayland does not restrict where and how it is used. A Wayland compositor could be a standalone display server running on Linux kernel modesetting and evdev input devices or on many other operating systems, or a nested compositor that itself is an X11 or Wayland application (client). Wayland can even be used in application-internal communication as is done in some web browsers."
"Part of the Wayland project is also the Weston reference implementation of a Wayland compositor. Weston can run as an X client or under Linux KMS and ships with a few demo clients. The Weston compositor is a minimal and fast compositor and is suitable for many embedded and mobile use cases."
-(https://wayland.freedesktop.org)
For comparison sake:
-
Initially released June 1984; 38 years ago
-
Latest stable release:
X11R7.76
June 2012
-
Initially released 6 April 2004; 19 years ago
-
Latest stable release:
21.1.8 29
March 2023
-
Initially released 30 September 2008; 14 years ago
-
Latest stable versions:
Wayland: 1.22
,Weston: 11.0.1
4 April 2023
Basically it's also the only way moving forward, to get HDR on linux and Variable Refresh Rates accross multiple monitors. IBM/Red Hat themselves are sponsoring a display/HDR hackfest April 2023:
- 📰 Announcing the Display/HDR hackfest
-(fedoramagazine.org)
Now it's time to finish updating flatpaks and the system and give it a good old reboot:
Run: flatpak update -y && rpm-ostree status && rpm-ostree upgrade
Is what I run in
Konsole
as an all-in-one updater when checking for Flatkpak/System updates.
Run: systemctl reboot
to reboot and update the system. rpm-ostree status
will let you know what deployment you are currently on and the last time it was updated.
✔️ Enjoy automatic updates afterwards, just by using your computer like normal, updates are gonna happen in the background and apply when you restart or reboot from now on.
Thanks to 🔋(batteries) included computer magic of Universal Blue.
Sets automatic staging of updates for the system
Sets flatpaks to update twice a day
. I'd say even easier then updating an Android Phone or Chromebook even.
What even is Proton?
Proton is a tool for use with the Steam client which allows games which are exclusive to Windows to run on the Linux operating system. It uses Wine to facilitate this.Most users should use Proton provided by the Steam Client itself. See this Steam Community post for more details.The source code is provided to enable advanced users the ability to alter Proton. For example, some users may wish to use a different version of Wine with a particular title.
-(https://github.com/ValveSoftware/Proton)
Valve themselves have a stable
release, as well as experimental
and ocassionalyproton next
for beta and bleeding-edge/alpha versions. proton next
tends to be merged into experimental
, so oftentimes you may not even see it as an option.
-
For release notes see: github.com/ValveSoftware/Proton/releases
-
For changelog see: github.com/ValveSoftware/Proton/wiki/Changelog
What is ProtonDB?
The goal of ProtonDB is to gather reports from other gamers as they test games with Proton on Linux and provide aggregate scores of how well games perform. A growing pool of suggestions provides tweaks that you can try to get games working while Proton continues development. In addition to this, you may explore the Steam game catalog on this site to browse and discover a wide range of titles that were previously unavailable for use on Linux.
-(https://www.protondb.com)
-
I reccomend searching for steam games there, before making any purchasing decisions. Irionically, some games, while they do have native linux compatability, can still run better on proton for various reasons.
-
💸 💰 Steam Sales To check out games on sale at steam.
What is Vulkan?
At the core, Vulkan is an API Specification that conformant hardware implementations follow. The public specification is generated from the ./xml/vk.xml Vulkan Registry file in the official public copy of the Vulkan Specification repo found at Vulkan-Doc. Documentation of the XML schema is also available.
The Khronos Group, along with the Vulkan Specification, releases C99 header files generated from the API Registry that developers can use to interface with the Vulkan API.
For those who might not work with C code, there are various language bindings out there.
-(https://github.com/KhronosGroup/Vulkan-Guide/blob/main/chapters/what_is_vulkan.adoc
- DXVK:
Direct X 9/10/11
▶️ Vulkan
https://github.com/doitsujin/dxvk
A Vulkan-based translation layer for Direct3D 9, 10, and 11
- VKD3D-Proton:
Direct X 12
▶️ Vulkan
https://github.com/HansKristian-Work/vkd3d-proton
Support for Direct3D 12 provided via VKD3D-Proton, a fork of VKD3D from Wine
⚠️ Can't use Vulkan? We have launch options:Wined3d
▶️ OpenGL
OpenGL-based wined3d renderer instead of the Vulkan-based DXVK renderer. Right click your game in steam and select
properties
and in theGeneral
page, addPROTON_USE_WINED3D=1 %command%
to yourlaunch options
For more info/launch options: https://github.com/ValveSoftware/Proton#runtime-config-options
- AMD FSR 1.0
AMD FidelityFX Super Resolution scales across a broad spectrum of new and older products, including integrated graphics, and is optimized for AMD RDNA™ and AMD RDNA 2™ architecture-based Radeon™ RX 6000 and RX 5000 Series graphics cards. FSR is also supported on select NVIDIA® graphics cards.
DX11(DXVK) & 12(VKD3D) games
Honestly, tho, if you game at 1080p turn it off. Oftentimes it disables the ability to play with anti-aliasing options in games. If you game on 1440p or 4k it is better than old supersampling options such as AMD CAS.
- AMD FSR 2.2 AMD FidelityFX™ Super Resolution 2.2 is the latest update to our open-source and cross-platform temporal upscaling technology that has been built to deliver incredible image quality and help boost framerates in supported games. FSR 2.2 upgrades the already improved upscaling image quality of FSR 2.1 (learn more in this blog) with further quality enhancements to alleviate ghosting on fast-moving objects, such as the cars found in the three games that currently support FSR 2.2.
DX12(VKD3D) games only
2.2 is much better, you may have to make sure to double check games are set to use "DX12" in game options in order to have it run through VKD3D to enable FSR 2.2
- 📰 AMD FSR 3.0 News:
-AMD presentation of FSR 3.0 at GDC 2023 (source: AMD)
,overclock3d.net
Easily update Proton-GE/Wine-GE from Glorious Eggroll | Thomas Crider ``(Software Maintenance Engineer @ Red Hat. Wine-Staging maintainer. Tinkerer.)`
- Install the
flathub flatpak
inKonsole
: Runflatpak install flathub net.davidotek.pupgui2
and open/run withflatpak run net.davidotek.pupgui2
or option B: - Flathub:ProtonUp-Qt click
Install
and it should openDiscover
and installProtonUp-Qt flatpak
. or option C: - Open
Discover
and search forProtonUp-Qt
and install it there.
- Reasons to use Proton-GE: https://github.com/GloriousEggroll/proton-ge-custom#overview
⚠️ Use with steam only!
- Reasons to use Wine-GE: https://github.com/GloriousEggroll/wine-ge-custom#overview
⚠️ Use outside of steam only!
- Install the
flathub flatpak
inKonsole
: Runflatpak install flathub com.valvesoftware.Steam
and open/run withflatpak run com.valvesoftware.Steam
or option B: - Visit Flathub:Steam click
Install
and it should openDiscover
and installSteam flatpak
. or option C: - Open
Discover
and search forSteam
and install it there. (make sure it's the flathub repo as the source) - Open
Steam
and after signing in, click onSteam > Settings > Shader Pre-Caching
and enable/check off both optons. - Still on the settings screen, move down to
Steam Play
and enable/check offEnable Steam Play for supported titles.
Enable/check offEnable Steam Play for all other titles
as well and selectProton Experimental
.
(By default,
Steam
only suports this option for its own proton versions so usingProton-GE
needs per-game selection) To useProton-GE
with a game instead, you will want to edit that on it's:
Properties tab > COMPATABILITY
- Check/enable
Force the use of a specific Steam Play compability tool
- Select the most-recent
Proton-GE
version available either at Github-Releases (Directions:) or by simply usingProtonUp-Qt
.
Useful for when you need to tweak a games "prefix" for modding and what not etc etc.
- Install the
flathub flatpak
inKonsole
: Runflatpak install flathub com.github.Matoking.protontricks
and open/run withflatpak run com.github.Matoking.protontricks
or option B: - Visit Flathub:Protontricks click
Install
and it should openDiscover
and installProtontricks flatpak
. or option C: - Open
Discover
and search forProtontricks
and install it there. (make sure it's the flathub repo as the source) - Visit Github for more information.
Who doesn't love to view game performance metrics in
realtime
?
- Install the
flathub flatpak
inKonsole
: Runflatpak install org.freedesktop.Platform.VulkanLayer.MangoHud
- To enable
MangoHud
for all steam games: Runflatpak override --user --env=MANGOHUD=1 com.valvesoftware.Steam
- You need to create a
MangoHud.conf
configuration file in:~/.var/app/com.valvesoftware.Steam/config/MangoHud
So it will look like:
~/.var/app/com.valvesoftware.Steam/config/MangoHud/MangoHud.conf
- Visit Github:MangoHud for more information.
- Config File & Enviromental Variables for
variables
- Example.MangoHud.conf example
MangoHud.conf
In the before times, when games were not linux native, people were manually installing games with wine. If you were lucky, they would share their setups. Then came Play On Linux. Then came Lutris.
- Install the
flathub flatpak
inKonsole
: Runflatpak install flathub net.lutris.Lutris
and open/run withflatpak run net.lutris.Lutris
or option B: - Visit Flathub:Lutris click
Install
and it should openDiscover
and installLutris flatpak
. or option C: - Open
Discover
and search forLutris
and install it there. (make sure it's the flathub repo as the source) - Visit Lutris to search for games to install.
- Get fancy with
Wine-GE
: Select the most-recentWine-GE
version available either at Github-Releases (Directions:) or by simply usingProtonUp-Qt
.
Newer than Lutris. I played the Diablo IV beta using the
Battle.net
bottle usingWine-GE
.
- Install the
flathub flatpak
inKonsole
: Runflatpak install flathub com.usebottles.bottles
and open/run withflatpak run com.usebottles.bottles
or option B: - Visit Flathub:Bottles click
Install
and it should openDiscover
and installBottles flatpak
. or option C: - Open
Discover
and search forLutris
and install it there. (make sure it's the flathub repo as the source) - Visit Usebottles/appstore to search for bottles to install.
- Get fancy with
Wine-GE
: Select the most-recentWine-GE
version available either at Github-Releases (Directions:) or by simply usingProtonUp-Qt
.
- Install the
flathub flatpak
inKonsole
: Runflatpak install flathub com.heroicgameslauncher.hgl
and open/run withflatpak run com.heroicgameslauncher.hgl
or option B: - Visit Flathub:Heroic Games Launcher click
Install
and it should openDiscover
and installHeroic Games Launcher flatpak
. or option C: - Open
Discover
and search forHeroic Games Launcher
and install it there. (make sure it's the flathub repo as the source) - Visit Heroic Games Launcher/faq for more information.
- Get fancy with
Wine-GE
: Select the most-recentWine-GE
version available either at Github-Releases (Directions:) or by simply usingProtonUp-Qt
.