Skip to content

Instantly share code, notes, and snippets.

@Eeyoresyndrome
Last active May 28, 2024 19:39
Show Gist options
  • Save Eeyoresyndrome/06bf92bd975769c4b46bda34db261a17 to your computer and use it in GitHub Desktop.
Save Eeyoresyndrome/06bf92bd975769c4b46bda34db261a17 to your computer and use it in GitHub Desktop.
Universal Blue Kinoite or: How I Learned to Stop Worrying and Love the Immutable Desktop & Flatpak

Eeyore_Syndrome Presents:

Fedora Kinoite ublu.it Flathub

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!

💬 It's not a "Fedora Distro" Nor a "Fedora Spin".


.isos & Links:


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 .iso installer as well as the sha256sum 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


➕ 🔋 "Batteries Included" ™️ with Universal Blue:


  1. 📀 Start with a Fedora image... 🔐
  2. 🔓 🔧 Adds the following packages to the base image: 🔩 🔨

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."


Improving upon Fedora's Implementation of Firefox:


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:

  1. Run sudo rpm-ostree override remove firefox firefox-langpacks in Konsole To "hide" .rpm of Firefox from the ostree image.
  2. Run flatpak install flathub org.mozilla.firefox to install the firefox flatpak and open/run with flatpak run org.mozilla.firefox to run it. Or option B:
  3. Visit Flathub:Firefox and click Install to open and install in Discover. or option C:
  4. Open Discover and search for Firefox 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:

  1. Exit out of Firefox. Just in case it was just updated and to make sure the permission/env change takes effect.
  2. Open it back up and visit about:support in the address bar.
  3. Search for Composting if it says WebRender, then you are running on Hardware Acclerated Firefox in wayland, if it does not, and reads WebRender-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:

X Window system/x11

  • Initially released June 1984; 38 years ago

  • Latest stable release: X11R7.76 June 2012

X.org server

  • Initially released 6 April 2004; 19 years ago

  • Latest stable release: 21.1.8 29 March 2023

Wayland

  • 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:


Update your system:


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.


"Let's get Gaming on Linux or: We have proton power now!"


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.


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


A Vulkan-based translation layer for Direct3D 9, 10, and 11

Support for Direct3D 12 provided via VKD3D-Proton, a fork of VKD3D from Wine

⚠️ Hardware requirements for Vulkan: https://www.khronos.org/conformance/adopters/conformant-products/vulkan

  • ⚠️ 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 the General page, add PROTON_USE_WINED3D=1 %command% to your launch options

For more info/launch options: https://github.com/ValveSoftware/Proton#runtime-config-options


What is FSR?

  • 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.)`

  1. Install the flathub flatpak in Konsole: Run flatpak install flathub net.davidotek.pupgui2 and open/run with flatpak run net.davidotek.pupgui2 or option B:
  2. Flathub:ProtonUp-Qt click Install and it should open Discover and install ProtonUp-Qt flatpak. or option C:
  3. Open Discover and search for ProtonUp-Qt and install it there.

⚠️ Use with steam only!

⚠️ Use outside of steam only!


  1. Install the flathub flatpak in Konsole: Run flatpak install flathub com.valvesoftware.Steam and open/run with flatpak run com.valvesoftware.Steam or option B:
  2. Visit Flathub:Steam click Install and it should open Discover and install Steam flatpak. or option C:
  3. Open Discover and search for Steam and install it there. (make sure it's the flathub repo as the source)
  4. Open Steam and after signing in, click on Steam > Settings > Shader Pre-Caching and enable/check off both optons.
  5. Still on the settings screen, move down to Steam Play and enable/check off Enable Steam Play for supported titles. Enable/check off Enable Steam Play for all other titles as well and select Proton Experimental.

(By default, Steam only suports this option for its own proton versions so using Proton-GE needs per-game selection) To use Proton-GE with a game instead, you will want to edit that on it's:

  1. Properties tab > COMPATABILITY
  2. Check/enable Force the use of a specific Steam Play compability tool
  3. Select the most-recent Proton-GE version available either at Github-Releases (Directions:) or by simply using ProtonUp-Qt.

Useful for when you need to tweak a games "prefix" for modding and what not etc etc.

  1. Install the flathub flatpak in Konsole: Run flatpak install flathub com.github.Matoking.protontricks and open/run with flatpak run com.github.Matoking.protontricks or option B:
  2. Visit Flathub:Protontricks click Install and it should open Discover and install Protontricks flatpak. or option C:
  3. Open Discover and search for Protontricks and install it there. (make sure it's the flathub repo as the source)
  4. Visit Github for more information.

Who doesn't love to view game performance metrics in realtime?

  1. Install the flathub flatpak in Konsole: Run flatpak install org.freedesktop.Platform.VulkanLayer.MangoHud
  2. To enable MangoHud for all steam games: Run flatpak override --user --env=MANGOHUD=1 com.valvesoftware.Steam
  3. 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

  1. Visit Github:MangoHud for more information.
  2. Config File & Enviromental Variables for variables
  3. Example.MangoHud.conf example MangoHud.conf

Non-Steam Gaming:


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.

  1. Install the flathub flatpak in Konsole: Run flatpak install flathub net.lutris.Lutris and open/run with flatpak run net.lutris.Lutris or option B:
  2. Visit Flathub:Lutris click Install and it should open Discover and install Lutris flatpak. or option C:
  3. Open Discover and search for Lutris and install it there. (make sure it's the flathub repo as the source)
  4. Visit Lutris to search for games to install.
  5. Get fancy with Wine-GE: Select the most-recent Wine-GE version available either at Github-Releases (Directions:) or by simply using ProtonUp-Qt.

Newer than Lutris. I played the Diablo IV beta using the Battle.net bottle using Wine-GE.

  1. Install the flathub flatpak in Konsole: Run flatpak install flathub com.usebottles.bottles and open/run with flatpak run com.usebottles.bottles or option B:
  2. Visit Flathub:Bottles click Install and it should open Discover and install Bottles flatpak. or option C:
  3. Open Discover and search for Lutris and install it there. (make sure it's the flathub repo as the source)
  4. Visit Usebottles/appstore to search for bottles to install.
  5. Get fancy with Wine-GE: Select the most-recent Wine-GE version available either at Github-Releases (Directions:) or by simply using ProtonUp-Qt.

  1. Install the flathub flatpak in Konsole: Run flatpak install flathub com.heroicgameslauncher.hgl and open/run with flatpak run com.heroicgameslauncher.hgl or option B:
  2. Visit Flathub:Heroic Games Launcher click Install and it should open Discover and install Heroic Games Launcher flatpak. or option C:
  3. Open Discover and search for Heroic Games Launcher and install it there. (make sure it's the flathub repo as the source)
  4. Visit Heroic Games Launcher/faq for more information.
  5. Get fancy with Wine-GE: Select the most-recent Wine-GE version available either at Github-Releases (Directions:) or by simply using ProtonUp-Qt.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment