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
.isos).
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
.isoinstaller as well as thesha256sumhash 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 🎥 📺
distroboxfor 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.dto 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 ostreeinstallation 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-langpacksinKonsoleTo "hide".rpmof Firefox from the ostree image. - Run
flatpak install flathub org.mozilla.firefoxto install thefirefox flatpakand open/run withflatpak run org.mozilla.firefoxto run it. Or option B: - Visit Flathub:Firefox and click
Installto open and install inDiscover. or option C: - Open
Discoverand search forFirefoxand 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:supportin the address bar. - Search for
Compostingif 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.76June 2012
-
Initially released 6 April 2004; 19 years ago
-
Latest stable release:
21.1.8 29March 2023
-
Initially released 30 September 2008; 14 years ago
-
Latest stable versions:
Wayland: 1.22,Weston: 11.0.14 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
Konsoleas 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 systemSets 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▶️ Vulkanhttps://github.com/doitsujin/dxvk
A Vulkan-based translation layer for Direct3D 9, 10, and 11
- VKD3D-Proton:
Direct X 12▶️ Vulkanhttps://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
propertiesand in theGeneralpage, 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 flatpakinKonsole: Runflatpak install flathub net.davidotek.pupgui2and open/run withflatpak run net.davidotek.pupgui2or option B: - Flathub:ProtonUp-Qt click
Installand it should openDiscoverand installProtonUp-Qt flatpak. or option C: - Open
Discoverand search forProtonUp-Qtand 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 flatpakinKonsole: Runflatpak install flathub com.valvesoftware.Steamand open/run withflatpak run com.valvesoftware.Steamor option B: - Visit Flathub:Steam click
Installand it should openDiscoverand installSteam flatpak. or option C: - Open
Discoverand search forSteamand install it there. (make sure it's the flathub repo as the source) - Open
Steamand after signing in, click onSteam > Settings > Shader Pre-Cachingand enable/check off both optons. - Still on the settings screen, move down to
Steam Playand enable/check offEnable Steam Play for supported titles.Enable/check offEnable Steam Play for all other titlesas well and selectProton Experimental.
(By default,
Steamonly suports this option for its own proton versions so usingProton-GEneeds per-game selection) To useProton-GEwith 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-GEversion 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 flatpakinKonsole: Runflatpak install flathub com.github.Matoking.protontricksand open/run withflatpak run com.github.Matoking.protontricksor option B: - Visit Flathub:Protontricks click
Installand it should openDiscoverand installProtontricks flatpak. or option C: - Open
Discoverand search forProtontricksand 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 flatpakinKonsole: Runflatpak install org.freedesktop.Platform.VulkanLayer.MangoHud - To enable
MangoHudfor all steam games: Runflatpak override --user --env=MANGOHUD=1 com.valvesoftware.Steam - You need to create a
MangoHud.confconfiguration 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 flatpakinKonsole: Runflatpak install flathub net.lutris.Lutrisand open/run withflatpak run net.lutris.Lutrisor option B: - Visit Flathub:Lutris click
Installand it should openDiscoverand installLutris flatpak. or option C: - Open
Discoverand search forLutrisand 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-GEversion available either at Github-Releases (Directions:) or by simply usingProtonUp-Qt.
Newer than Lutris. I played the Diablo IV beta using the
Battle.netbottle usingWine-GE.
- Install the
flathub flatpakinKonsole: Runflatpak install flathub com.usebottles.bottlesand open/run withflatpak run com.usebottles.bottlesor option B: - Visit Flathub:Bottles click
Installand it should openDiscoverand installBottles flatpak. or option C: - Open
Discoverand search forLutrisand 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-GEversion available either at Github-Releases (Directions:) or by simply usingProtonUp-Qt.
- Install the
flathub flatpakinKonsole: Runflatpak install flathub com.heroicgameslauncher.hgland open/run withflatpak run com.heroicgameslauncher.hglor option B: - Visit Flathub:Heroic Games Launcher click
Installand it should openDiscoverand installHeroic Games Launcher flatpak. or option C: - Open
Discoverand search forHeroic Games Launcherand 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-GEversion available either at Github-Releases (Directions:) or by simply usingProtonUp-Qt.