<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://pengwings.theleruby.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Theleruby</id>
	<title>Pengwings - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://pengwings.theleruby.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Theleruby"/>
	<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/Special:Contributions/Theleruby"/>
	<updated>2026-05-14T17:06:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Quick_introduction_of_all_the_main_things&amp;diff=510</id>
		<title>Quick introduction of all the main things</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Quick_introduction_of_all_the_main_things&amp;diff=510"/>
		<updated>2026-05-07T00:21:52Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Linux ==&lt;br /&gt;
Linux is an open-source operating system kernel initially created by Linus Torvalds, based on an earlier system called Unix. It isn&#039;t an OS by itself, instead it serves as the base which many different operating system distributions (distros) build on top of. Linux distros are usually free (although there are some commercially supported distros). Linux essentially competes with Windows and MacOS in the desktop space.&lt;br /&gt;
&lt;br /&gt;
== sudo ==&lt;br /&gt;
sudo (superuser do) is a prefix you can put before a command in order to run it root, which is the superuser (administrator) account.&lt;br /&gt;
&lt;br /&gt;
For example, this command runs the text editor &amp;quot;vim&amp;quot; as root:&lt;br /&gt;
 sudo vim&lt;br /&gt;
&lt;br /&gt;
Running something using sudo is roughly equivalent to right clicking on the program and choosing &amp;quot;Run as administrator&amp;quot; on Windows.&lt;br /&gt;
&lt;br /&gt;
== X11, Wayland and XWayland ==&lt;br /&gt;
X Window System (X11) is the original window manager for both Unix and Linux. It was developed in the 1980s. It provides a standard way for programs to have a GUI.&lt;br /&gt;
&lt;br /&gt;
Wayland is essentially the successor to X11, it&#039;s new and shiny. It is similar to the Desktop Window Manager (DWM) introduced with Windows Vista. Most modern Linux distros use Wayland now instead of X11.&lt;br /&gt;
&lt;br /&gt;
Not all programs support Wayland yet. XWayland is an implementation of X11 that runs inside Wayland, essentially acting as a translation layer so that you can use X11 programs on Wayland.&lt;br /&gt;
&lt;br /&gt;
Some features are missing from Wayland and sometimes it can be a little buggy.&lt;br /&gt;
&lt;br /&gt;
== GNOME and KDE Plasma ==&lt;br /&gt;
GNOME and KDE Plasma are two different open-source desktop environments. They are the most common desktop environments used by Linux distributions. The latest versions of GNOME and KDE Plasma run on top of Wayland.&lt;br /&gt;
&lt;br /&gt;
GNOME looks and works similarly to MacOS, while KDE Plasma looks and works similarly to Windows.&lt;br /&gt;
&lt;br /&gt;
== Red Hat ==&lt;br /&gt;
&#039;&#039;&#039;Red Hat, Inc.&#039;&#039;&#039; is a software company which makes Red Hat Enterprise Linux (RHEL), a commercial Linux distribution.&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
Fedora is a free community-developed Linux distribution which serves as the upstream for RHEL (the code from Fedora is used to make future versions of RHEL). Some Red Hat employees work on Fedora and Red Hat is Fedora&#039;s largest sponsor. Around 35% of the people contributing to Fedora work at Red Hat.&lt;br /&gt;
&lt;br /&gt;
== Fedora Atomic Desktops ==&lt;br /&gt;
Atomic desktops are a new way to deploy Linux which delivers OS updates in the form of images. It is designed to make updating more reliable and reduce the chance of the OS being bricked by a bad update. See also [[Atomic Desktops introduction]].&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
Universal Blue is a community-driven project to build custom operating system images based on Fedora Atomic Desktops. Their OS images essentially bundle Fedora with various enhancements.&lt;br /&gt;
&lt;br /&gt;
== Aurora and Bluefun ==&lt;br /&gt;
Aurora and Bluefin are Fedora images from Universal Blue which are oriented towards developers. Aurora uses the KDE Plasma desktop environment. Bluefun uses GNOME.&lt;br /&gt;
&lt;br /&gt;
== Bazzite ==&lt;br /&gt;
Bazzite is a Fedora image from Universal Blue which is oriented towards gamers. It comes with things preinstalled that are useful for Linux gaming (like Steam, Lutris, ProtonPlus, gamescope, etc). There is a variant for handhelds which provides SteamOS-like features such as the Steam Deck Gaming Mode. Desktop environment is KDE Plasma.&lt;br /&gt;
&lt;br /&gt;
== Theledora ==&lt;br /&gt;
Theledora is a fork of Bazzite which has some extra stuff preinstalled that I use. I made it because I had dependency conflicts with layered packages.&lt;br /&gt;
&lt;br /&gt;
== Gaming on Linux ==&lt;br /&gt;
For a quick summary of all the things which make gaming on Linux work, see [[Introduction to gaming on Linux]].&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Atomic_Desktops_introduction&amp;diff=509</id>
		<title>Atomic Desktops introduction</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Atomic_Desktops_introduction&amp;diff=509"/>
		<updated>2026-05-07T00:20:48Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What are Atomic Desktops? ==&lt;br /&gt;
Linux distros are essentially made up of a bunch of open-source packages installed by a package manager. To update the system, you normally ask the package manager to update all the installed packages, and it does its best to comply. However, occasionally this can go wrong (e.g. due to broken/corrupt/conflicting packages). If this happens you can end up with the system in a bricked or unbootable state that can be hard to recover from. While it&#039;s not very common, it does happen, and this is not really ideal for the average random user who just wants a stable machine that works.&lt;br /&gt;
&lt;br /&gt;
The atomic desktop idea is a new way of deploying Linux which attempts to avoid this sort of problem. Instead of installing the OS directly to your hard drive and updating the packages live, instead the operating system is deployed as an OSTree image (similar to a docker image, but for the whole operating system). A portion of the system is kept separate from the image so that you can write your personal data there.&lt;br /&gt;
&lt;br /&gt;
Updates are done atomically as a series of commits, where each version of the OS is a new OSTree image. Either the update completely succeeds or it completely fails; if it fails then the update doesn&#039;t get applied. If the user wants to install packages, these need to be layered on top of the image, which essentially creates a new image based on the original but with those packages layered. You then have to reboot into the new image in order to start using the layered packages.&lt;br /&gt;
&lt;br /&gt;
The system normally retains the previous known good image in addition to the latest one. This allows you to perform a rollback in the event of a system update causing a boot failure. You can also pin specific images in order to keep them for future emergencies. The image you want to boot can be selected from grub.&lt;br /&gt;
&lt;br /&gt;
== Installing packages and other software on Fedora Atomic Desktops ==&lt;br /&gt;
The package manager for the Fedora Atomic Desktops is technically the same as the regular version of Fedora (dnf). However, most functions are unavailable from dnf directly; instead you use rpm-ostree which layers rpm packages using dnf libraries.&lt;br /&gt;
&lt;br /&gt;
As an alternative to layering packages, you can choose to install programs into user-writeable locations. This is done using things like Flatpaks (downloadable programs which run in a self-contained sandbox, downloaded from the website Flathub) and AppImages (full program images containing all files and dependencies for the program, behaving a bit like a static exe). Flatpaks have the advantage of being installable from a distro-specific app store tool (e.g. Bazaar) and can be updated easily via GUI, similar to the Apple App Store, Google Play or WinStore. AppImages don&#039;t have this luxury usually and you have to update them by hand.&lt;br /&gt;
&lt;br /&gt;
Sometimes the Flatpaks or AppImages don&#039;t work as well as the packages from dnf so it&#039;s not always viable to use them, in this case you might want to layer the packages instead. See also [[Pros and cons of package layering with rpm-ostree]].&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Atomic_Desktops_introduction&amp;diff=508</id>
		<title>Atomic Desktops introduction</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Atomic_Desktops_introduction&amp;diff=508"/>
		<updated>2026-05-07T00:19:10Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What are Atomic Desktops? ==&lt;br /&gt;
Linux distros are essentially made up of a bunch of open-source packages installed by a package manager. To update the system, you normally ask the package manager to update all the installed packages, and it does its best to comply. However, occasionally this can go wrong (e.g. due to broken/corrupt/conflicting packages). If this happens you can end up with the system in a bricked or unbootable state that can be hard to recover from. While it&#039;s not very common, it does happen, and this is not really ideal for the average random user who just wants a stable machine that works.&lt;br /&gt;
&lt;br /&gt;
The atomic desktop idea is a new way of deploying Linux which attempts to avoid this sort of problem. Instead of installing the OS directly to your hard drive and updating the packages live, instead the operating system is deployed as an OSTree image (similar to a docker image, but for the whole operating system). A portion of the system is kept separate from the image so that you can write your personal data there.&lt;br /&gt;
&lt;br /&gt;
Updates are done atomically as a series of commits, where each version of the OS is a new OSTree image. Either the update completely succeeds or it completely fails; if it fails then the update doesn&#039;t get applied. If the user wants to install packages, these need to be layered on top of the image, which essentially creates a new sub-image with those packages layered. You then have to reboot into the new image in order to start using the layered packages.&lt;br /&gt;
&lt;br /&gt;
The system normally retains the previous known good image in addition to the latest one. This allows you to perform a rollback in the event of a system update causing a boot failure. You can also pin specific images in order to keep them for future emergencies. The image you want to boot can be selected from grub.&lt;br /&gt;
&lt;br /&gt;
== Installing packages and other software on Fedora Atomic Desktops ==&lt;br /&gt;
The package manager for the Fedora Atomic Desktops is technically the same as the regular version of Fedora (dnf). However, most functions are unavailable from dnf directly; instead you use rpm-ostree which layers rpm packages using dnf libraries.&lt;br /&gt;
&lt;br /&gt;
As an alternative to layering packages, you can choose to install programs into user-writeable locations. This is done using things like Flatpaks (downloadable programs which run in a self-contained sandbox, downloaded from the website Flathub) and AppImages (full program images containing all files and dependencies for the program, behaving a bit like a static exe). Flatpaks have the advantage of being installable from a distro-specific app store tool (e.g. Bazaar) and can be updated easily via GUI, similar to the Apple App Store, Google Play or WinStore. AppImages don&#039;t have this luxury usually and you have to update them by hand.&lt;br /&gt;
&lt;br /&gt;
Sometimes the Flatpaks or AppImages don&#039;t work as well as the packages from dnf so it&#039;s not always viable to use them, in this case you might want to layer the packages instead. See also [[Pros and cons of package layering with rpm-ostree]].&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=507</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=507"/>
		<updated>2026-04-29T22:34:01Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center;margin-top:0.4em&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
* [[Fix chrome not printing]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[Pros and cons of package layering with rpm-ostree]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Sound stuff ==&lt;br /&gt;
* [https://gist.github.com/basso/04cbdc9cad5629f2ae83a941875c4ad5 Bazzite Linux How to force transcode Dolby Digital AC3 5.1 over HDMI ARC]&lt;br /&gt;
* [https://forum.endeavouros.com/t/ac3-5-1-digital-surround-sound-which-package-script-or-driver-enables-this-functionality/48531/21 AC3 5.1 Digital Surround Sound PipeWire]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Running Windows games via umu-run]]&lt;br /&gt;
* [[Proton enGB locale in games]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
* [[NVIDIA driver flatpak issues]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc.&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;br /&gt;
&lt;br /&gt;
== Theledora custom bootc images ==&lt;br /&gt;
These images are based on Bazzite and have been modified for personal use.&lt;br /&gt;
* NVIDIA Desktop PC: https://github.com/Theleruby/theledora-nvidia-open&lt;br /&gt;
* AMD Handheld/HTPC: https://github.com/Theleruby/theledora-gamescope&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=506</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=506"/>
		<updated>2026-04-26T23:58:42Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center;margin-top:0.4em&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
* [[Fix chrome not printing]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[Pros and cons of package layering with rpm-ostree]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
* [https://gist.github.com/basso/04cbdc9cad5629f2ae83a941875c4ad5 Bazzite Linux How to force transcode Dolby Digital AC3 5.1 over HDMI ARC]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Running Windows games via umu-run]]&lt;br /&gt;
* [[Proton enGB locale in games]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
* [[NVIDIA driver flatpak issues]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc.&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;br /&gt;
&lt;br /&gt;
== Theledora custom bootc images ==&lt;br /&gt;
These images are based on Bazzite and have been modified for personal use.&lt;br /&gt;
* NVIDIA Desktop PC: https://github.com/Theleruby/theledora-nvidia-open&lt;br /&gt;
* AMD Handheld/HTPC: https://github.com/Theleruby/theledora-gamescope&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=505</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=505"/>
		<updated>2026-04-26T23:48:04Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center;margin-top:0.4em&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
* [[Fix chrome not printing]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[Pros and cons of package layering with rpm-ostree]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Running Windows games via umu-run]]&lt;br /&gt;
* [[Proton enGB locale in games]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
* [[NVIDIA driver flatpak issues]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc.&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;br /&gt;
&lt;br /&gt;
== Theledora custom bootc images ==&lt;br /&gt;
These images are based on Bazzite and have been modified for personal use.&lt;br /&gt;
* NVIDIA Desktop PC: https://github.com/Theleruby/theledora-nvidia-open&lt;br /&gt;
* AMD Handheld/HTPC: https://github.com/Theleruby/theledora-gamescope&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Discord_PTB_install_script&amp;diff=504</id>
		<title>Discord PTB install script</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Discord_PTB_install_script&amp;diff=504"/>
		<updated>2026-04-14T06:22:29Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Based on this script here https://gist.github.com/felipelima94/7791a4243a73a07fd95e90758607267a with small edits&lt;br /&gt;
&lt;br /&gt;
Installs Discord PTB into /opt/discord-ptb/ with main user having permissions to update without sudo&lt;br /&gt;
&lt;br /&gt;
Before running do this&lt;br /&gt;
 sudo mkdir /opt/discord-ptb&lt;br /&gt;
 sudo chown USERNAME:GROUP /opt/discord-ptb&lt;br /&gt;
&lt;br /&gt;
Here&#039;s the script&lt;br /&gt;
 echo &amp;quot;Remove any previous Discord PTB installation...&amp;quot;&lt;br /&gt;
 if [ -d /opt/discord-ptb ]; then&lt;br /&gt;
   pkill -9 DiscordPTB&lt;br /&gt;
   rm -rf /opt/discord-ptb/*&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Downloading Discord PTB...&amp;quot;&lt;br /&gt;
 curl -L \&lt;br /&gt;
   -H &amp;quot;Accept: application/octet-stream&amp;quot; \&lt;br /&gt;
   &amp;quot;https://discord.com/api/download/ptb?platform=linux&amp;amp;format=tar.gz&amp;quot; \&lt;br /&gt;
   -o discord-ptb.tar.gz&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Installing Discord PTB...&amp;quot;&lt;br /&gt;
 tar -xzf discord-ptb*.tar.gz&lt;br /&gt;
 &lt;br /&gt;
 rm discord-ptb.tar.gz&lt;br /&gt;
 mv DiscordPTB/* /opt/discord-ptb/&lt;br /&gt;
 rm -rf DiscordPTB&lt;br /&gt;
 &lt;br /&gt;
 if [ ! -f ~/.local/share/applications/discord-ptb.desktop ]; then&lt;br /&gt;
 echo &amp;quot;Creating desktop entry...&amp;quot;&lt;br /&gt;
   printf &#039;%s\n&#039; \&lt;br /&gt;
   &amp;quot;[Desktop Entry]&amp;quot; \&lt;br /&gt;
   &amp;quot;Name=Discord PTB&amp;quot; \&lt;br /&gt;
   &amp;quot;Comment=Discord Public Test Build&amp;quot; \&lt;br /&gt;
   &amp;quot;Exec=/opt/discord-ptb/DiscordPTB&amp;quot; \&lt;br /&gt;
   &amp;quot;Icon=/opt/discord-ptb/discord.png&amp;quot; \&lt;br /&gt;
   &amp;quot;Type=Application&amp;quot; \&lt;br /&gt;
   &amp;quot;Categories=Network;InstantMessaging;&amp;quot; \&lt;br /&gt;
   &amp;quot;StartupWMClass=discord-ptb&amp;quot; \&lt;br /&gt;
   &amp;gt; ~/.local/share/applications/discord-ptb.desktop&lt;br /&gt;
 &lt;br /&gt;
 sudo update-desktop-database&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot;Discord PTB installation complete&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You can avoid the &amp;quot;Must be your lucky day&amp;quot; update prompt by editing this file:&lt;br /&gt;
 ~/.config/discordptb/settings.json&lt;br /&gt;
And adding this to the json data:&lt;br /&gt;
 &amp;quot;SKIP_HOST_UPDATE&amp;quot;: true&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Running_Windows_games_via_umu-run&amp;diff=503</id>
		<title>Running Windows games via umu-run</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Running_Windows_games_via_umu-run&amp;diff=503"/>
		<updated>2026-03-19T23:10:09Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some Windows games require Steam runtime to work correctly with Proton. The version that comes with Proton only works with Steam. There is a modified version called umu which is designed for non-Steam games.&lt;br /&gt;
&lt;br /&gt;
This example runs &amp;quot;Raptor&amp;quot; which is a Game Maker 6 game. Raptor is not working with the normal Proton run script but does work with umu.&lt;br /&gt;
&lt;br /&gt;
==== How to do it ====&lt;br /&gt;
Create proton prefix directory&lt;br /&gt;
 mkdir /opt/_pfx/gamemaker&lt;br /&gt;
&lt;br /&gt;
Put this run.sh script in the installation directory of the game, setting configurable settings as needed. If you need to set extra environment variables then you can do that here&lt;br /&gt;
 #!/bin/bash -x&lt;br /&gt;
 #---------- CONFIGURABLE SETTINGS ----------&lt;br /&gt;
 export WINEPREFIX=&amp;quot;/opt/_pfx/gamemaker&amp;quot;&lt;br /&gt;
 export GAMEID=umu-default&lt;br /&gt;
 export STORE=none&lt;br /&gt;
 TARGET_PROTON_VERSION=GE-Proton9-27&lt;br /&gt;
 PROGRAM_NAME=&amp;quot;Raptor.exe&amp;quot;&lt;br /&gt;
 #---------- THE SCRIPT ----------&lt;br /&gt;
 export STEAM_COMPAT_CLIENT_INSTALL_PATH=$HOME/.steam/steam&lt;br /&gt;
 export PROTONPATH=&amp;quot;$STEAM_COMPAT_CLIENT_INSTALL_PATH/compatibilitytools.d/$TARGET_PROTON_VERSION&amp;quot;&lt;br /&gt;
 SCRIPT_DIR=$( cd -- &amp;quot;$( dirname -- &amp;quot;${BASH_SOURCE[0]}&amp;quot; )&amp;quot; &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; pwd )&lt;br /&gt;
 pushd &amp;quot;$SCRIPT_DIR&amp;quot;&lt;br /&gt;
 umu-run &amp;quot;$SCRIPT_DIR/$PROGRAM_NAME&amp;quot; &amp;amp; disown&lt;br /&gt;
 popd&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Running_Windows_games_via_umu-run&amp;diff=502</id>
		<title>Running Windows games via umu-run</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Running_Windows_games_via_umu-run&amp;diff=502"/>
		<updated>2026-03-19T23:09:58Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: Created page with &amp;quot;Some Windows games require Steam runtime to work correctly with Proton. The version that comes with Proton only works with Steam. There is a modified version called umu which is designed for non-Steam games.  This example runs &amp;quot;Raptor&amp;quot; which is a Game Maker 6 game. Raptor is not working with the normal Proton run script but does work with umu.  ==== How to do it ==== Create proton prefix directory  mkdir /opt/_pfx/gamemaker  Put this run.sh script in the installation dir...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some Windows games require Steam runtime to work correctly with Proton. The version that comes with Proton only works with Steam. There is a modified version called umu which is designed for non-Steam games.&lt;br /&gt;
&lt;br /&gt;
This example runs &amp;quot;Raptor&amp;quot; which is a Game Maker 6 game. Raptor is not working with the normal Proton run script but does work with umu.&lt;br /&gt;
&lt;br /&gt;
==== How to do it ====&lt;br /&gt;
Create proton prefix directory&lt;br /&gt;
 mkdir /opt/_pfx/gamemaker&lt;br /&gt;
&lt;br /&gt;
Put this run.sh script in the installation directory of the game, setting configurable settings as needed. If you need to set extra environment variables then you can do that here&lt;br /&gt;
 #!/bin/bash -x&lt;br /&gt;
 #---------- CONFIGURABLE SETTINGS ----------&lt;br /&gt;
 export WINEPREFIX=&amp;quot;/opt/_pfx/gamemaker&amp;quot;&lt;br /&gt;
 export GAMEID=umu-default&lt;br /&gt;
 export STORE=none&lt;br /&gt;
 TARGET_PROTON_VERSION=GE-Proton9-27&lt;br /&gt;
 PROGRAM_NAME=&amp;quot;Raptor.exe&amp;quot;&lt;br /&gt;
 #---------- THE SCRIPT ----------&lt;br /&gt;
 export STEAM_COMPAT_CLIENT_INSTALL_PATH=$HOME/.steam/steam&lt;br /&gt;
 export PROTONPATH=&amp;quot;$STEAM_COMPAT_CLIENT_INSTALL_PATH/compatibilitytools.d/$TARGET_PROTON_VERSION&amp;quot;&lt;br /&gt;
 SCRIPT_DIR=$( cd -- &amp;quot;$( dirname -- &amp;quot;${BASH_SOURCE[0]}&amp;quot; )&amp;quot; &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; pwd )&lt;br /&gt;
 pushd &amp;quot;$SCRIPT_DIR&amp;quot;&lt;br /&gt;
 umu-run &amp;quot;$SCRIPT_DIR/$PROGRAM_NAME&amp;quot; &amp;amp; disown&lt;br /&gt;
 popd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash -x&lt;br /&gt;
 #---------- CONFIGURABLE SETTINGS ----------&lt;br /&gt;
 export STEAM_COMPAT_DATA_PATH=&amp;quot;/opt/_pfx/wc3&amp;quot;&lt;br /&gt;
 TARGET_PROTON_VERSION=GE-Proton10-29&lt;br /&gt;
 PROGRAM_NAME=&amp;quot;Frozen Throne.exe&amp;quot;&lt;br /&gt;
 PROGRAM_ARGS=-window&lt;br /&gt;
 #---------- THE SCRIPT ----------&lt;br /&gt;
 export STEAM_COMPAT_CLIENT_INSTALL_PATH=~/.steam/steam&lt;br /&gt;
 SCRIPT_DIR=$( cd -- &amp;quot;$( dirname -- &amp;quot;${BASH_SOURCE[0]}&amp;quot; )&amp;quot; &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; pwd )&lt;br /&gt;
 pushd &amp;quot;$SCRIPT_DIR&amp;quot;&lt;br /&gt;
 $STEAM_COMPAT_CLIENT_INSTALL_PATH/compatibilitytools.d/$TARGET_PROTON_VERSION/proton run &amp;quot;$SCRIPT_DIR/$PROGRAM_NAME&amp;quot; &amp;quot;$PROGRAM_ARGS&amp;quot; &amp;amp; disown&lt;br /&gt;
 popd&lt;br /&gt;
&lt;br /&gt;
Mark the script executable, open Terminal and try to run it, it should work&lt;br /&gt;
&lt;br /&gt;
If it works you can create a .desktop file for it and add it to the KDE Application Launcher&lt;br /&gt;
&lt;br /&gt;
==== How to use winecfg ====&lt;br /&gt;
Rather than this: &lt;br /&gt;
 proton run &amp;quot;$SCRIPT_DIR/$PROGRAM_NAME&amp;quot; &amp;amp; disown&lt;br /&gt;
You want this:&lt;br /&gt;
 proton run winecfg &amp;amp; disown&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=501</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=501"/>
		<updated>2026-03-19T23:06:16Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center;margin-top:0.4em&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
* [[Fix chrome not printing]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[Pros and cons of package layering with rpm-ostree]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Running Windows games via umu-run]]&lt;br /&gt;
* [[Proton enGB locale in games]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
* [[NVIDIA driver flatpak issues]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;br /&gt;
&lt;br /&gt;
== Useful links ==&lt;br /&gt;
* Theledora custom bootc image: https://github.com/Theleruby/theledora-nvidia-open&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Fix_chrome_not_printing&amp;diff=500</id>
		<title>Fix chrome not printing</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Fix_chrome_not_printing&amp;diff=500"/>
		<updated>2026-03-18T17:45:50Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: Created page with &amp;quot;Go to chrome://flags/#cups-ipp-printing-backend  Set to &amp;quot;CUPS IPP Printing Backend&amp;quot; to &amp;quot;enabled&amp;quot;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Go to chrome://flags/#cups-ipp-printing-backend&lt;br /&gt;
&lt;br /&gt;
Set to &amp;quot;CUPS IPP Printing Backend&amp;quot; to &amp;quot;enabled&amp;quot;&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=499</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=499"/>
		<updated>2026-03-18T17:45:35Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center;margin-top:0.4em&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
* [[Fix chrome not printing]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[Pros and cons of package layering with rpm-ostree]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton enGB locale in games]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
* [[NVIDIA driver flatpak issues]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;br /&gt;
&lt;br /&gt;
== Useful links ==&lt;br /&gt;
* Theledora custom bootc image: https://github.com/Theleruby/theledora-nvidia-open&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Proton_enGB_locale_in_games&amp;diff=498</id>
		<title>Proton enGB locale in games</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Proton_enGB_locale_in_games&amp;diff=498"/>
		<updated>2026-03-17T10:41:35Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: Created page with &amp;quot;Edit /etc/environment  sudo vim /etc/environment Add environment variable  HOST_LC_ALL=en_GB.UTF-8&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Edit /etc/environment&lt;br /&gt;
 sudo vim /etc/environment&lt;br /&gt;
Add environment variable&lt;br /&gt;
 HOST_LC_ALL=en_GB.UTF-8&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=497</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=497"/>
		<updated>2026-03-17T10:41:14Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center;margin-top:0.4em&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[Pros and cons of package layering with rpm-ostree]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton enGB locale in games]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
* [[NVIDIA driver flatpak issues]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;br /&gt;
&lt;br /&gt;
== Useful links ==&lt;br /&gt;
* Theledora custom bootc image: https://github.com/Theleruby/theledora-nvidia-open&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=NVIDIA_driver_flatpak_issues&amp;diff=496</id>
		<title>NVIDIA driver flatpak issues</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=NVIDIA_driver_flatpak_issues&amp;diff=496"/>
		<updated>2026-03-14T12:43:38Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When upgrading the NVIDIA driver (via rpm-ostree upgrade) you also need to update the Flatpak version of the driver to match. If you don&#039;t then Flatpak applications lose the ability to do GPU acceleration. Baffling this is not being properly handled.&lt;br /&gt;
&lt;br /&gt;
 flatpak install flathub org.freedesktop.Platform.GL.nvidia-595-45-04&lt;br /&gt;
 flatpak install flathub org.freedesktop.Platform.GL32.nvidia-595-45-04&lt;br /&gt;
&lt;br /&gt;
Install for both system and user (this requires each command being entered twice, option 1 being selected the first time, option 2 being selected the second time)&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t do this then you will lose GPU acceleration in Flatpak applications such as the RuneLite being launched via the Bolt launcher.&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=NVIDIA_driver_flatpak_issues&amp;diff=495</id>
		<title>NVIDIA driver flatpak issues</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=NVIDIA_driver_flatpak_issues&amp;diff=495"/>
		<updated>2026-03-14T12:43:04Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: Created page with &amp;quot;When upgrading the NVIDIA driver (via rpm-ostree upgrade) you also need to update the Flatpak version of the driver to match. If you don&amp;#039;t then Flatpak applications lose the ability to do GPU acceleration. Baffling this is not being properly handled.   flatpak install flathub org.freedesktop.Platform.GL.nvidia-595-45-04  flatpak install flathub org.freedesktop.Platform.GL32.nvidia-595-45-04  Install for both system and user (this requires each command being entered twice...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When upgrading the NVIDIA driver (via rpm-ostree upgrade) you also need to update the Flatpak version of the driver to match. If you don&#039;t then Flatpak applications lose the ability to do GPU acceleration. Baffling this is not being properly handled.&lt;br /&gt;
&lt;br /&gt;
 flatpak install flathub org.freedesktop.Platform.GL.nvidia-595-45-04&lt;br /&gt;
 flatpak install flathub org.freedesktop.Platform.GL32.nvidia-595-45-04&lt;br /&gt;
&lt;br /&gt;
Install for both system and user (this requires each command being entered twice, option 1 being selected the first time, option 2 being selected the second time)&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=494</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=494"/>
		<updated>2026-03-14T12:41:27Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center;margin-top:0.4em&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[Pros and cons of package layering with rpm-ostree]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
* [[NVIDIA driver flatpak issues]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;br /&gt;
&lt;br /&gt;
== Useful links ==&lt;br /&gt;
* Theledora custom bootc image: https://github.com/Theleruby/theledora-nvidia-open&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Make_yt-dlp_easy_to_use&amp;diff=493</id>
		<title>Make yt-dlp easy to use</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Make_yt-dlp_easy_to_use&amp;diff=493"/>
		<updated>2026-03-08T00:32:25Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Easy-ish to use short-term replacement for GRAB.BAT for Linux. Make yt-dlp command line less of a headache by aliasing it. Also adds a shitty help command in case you forgot how to use it.&lt;br /&gt;
&lt;br /&gt;
Install yt-dlp from your package manager e.g.&lt;br /&gt;
 sudo rpm-ostree install yt-dlp&lt;br /&gt;
Add grab aliases:&lt;br /&gt;
 mkdir ~/.bashrc.d&lt;br /&gt;
 vim ~/.bashrc.d/grab&lt;br /&gt;
&lt;br /&gt;
 alias grab=&#039;printf &amp;quot;=====================================================\nLazy grab commands for Linux (yt-dlp)\n=====================================================\nTo grab single files:\n    grab-audio &amp;lt;url&amp;gt;\n    grab-video &amp;lt;url&amp;gt;\nTo grab playlists:\n    grab-audiolist &amp;lt;url&amp;gt;\n    grab-videolist &amp;lt;url&amp;gt;\nFiles are downloaded into the working directory.\n&amp;quot;&#039;&lt;br /&gt;
 alias grab-audio=&#039;yt-dlp --format &amp;quot;bestaudio/best&amp;quot; --audio-format mp3 --extract-audio -o &amp;quot;%(title)s-%(id)s.%(ext)s&amp;quot; --verbose&#039;&lt;br /&gt;
 alias grab-video=&#039;yt-dlp --format &amp;quot;bestvideo+bestaudio[ext=m4a]/bestvideo+bestaudio/best&amp;quot; --merge-output-format mp4 -o &amp;quot;%(title)s-%(id)s.%(ext)s&amp;quot; --verbose&#039;&lt;br /&gt;
 alias grab-audiolist=&#039;grab-audio -a&#039;&lt;br /&gt;
 alias grab-videolist=&#039;grab-video -a&#039;&lt;br /&gt;
&lt;br /&gt;
For help:&lt;br /&gt;
 grab&lt;br /&gt;
Which prints:&lt;br /&gt;
 =====================================================&lt;br /&gt;
 Lazy grab commands for Linux (yt-dlp)&lt;br /&gt;
 =====================================================&lt;br /&gt;
 To grab single files:&lt;br /&gt;
     grab-audio &amp;lt;url&amp;gt;&lt;br /&gt;
     grab-video &amp;lt;url&amp;gt;&lt;br /&gt;
 To grab playlists:&lt;br /&gt;
     grab-audios &amp;lt;playlist.txt&amp;gt;&lt;br /&gt;
     grab-videos &amp;lt;playlist.txt&amp;gt;&lt;br /&gt;
 Files are downloaded into the working directory.&lt;br /&gt;
&lt;br /&gt;
To grab audio:&lt;br /&gt;
 grab-audio &amp;lt;nowiki&amp;gt;https://www.youtube.com/watch?v=rvAGUO27FNw&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
To grab video:&lt;br /&gt;
 grab-video &amp;lt;nowiki&amp;gt;https://www.youtube.com/watch?v=9HXT7fDkf9I&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
To grab a playlist of audio tracks:&lt;br /&gt;
 grab-audios playlist.txt&lt;br /&gt;
To grab a playlist of video tracks:&lt;br /&gt;
 grab-videos playlist.txt&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Allow_WebGPU_on_Electron_applications&amp;diff=492</id>
		<title>Allow WebGPU on Electron applications</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Allow_WebGPU_on_Electron_applications&amp;diff=492"/>
		<updated>2026-03-07T23:56:36Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WebGPU is turned off by default on Electron applications on Linux.&lt;br /&gt;
&lt;br /&gt;
Add this to command line arguments to enable WebGPU:&lt;br /&gt;
 --enable-unsafe-webgpu&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Allow_WebGPU_on_Electron_applications&amp;diff=491</id>
		<title>Allow WebGPU on Electron applications</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Allow_WebGPU_on_Electron_applications&amp;diff=491"/>
		<updated>2026-03-07T23:56:25Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WebGPU is turned off by default on Electron applications on Linux. It also currently doesn&#039;t work on Wayland.&lt;br /&gt;
&lt;br /&gt;
Add this to command line arguments to enable WebGPU:&lt;br /&gt;
 --enable-unsafe-webgpu&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=How_to_use_rpm-ostree&amp;diff=490</id>
		<title>How to use rpm-ostree</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=How_to_use_rpm-ostree&amp;diff=490"/>
		<updated>2026-03-04T10:49:42Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==== List the current deployments and their status ====&lt;br /&gt;
 rpm-ostree status&lt;br /&gt;
&lt;br /&gt;
==== Show package differences ====&lt;br /&gt;
Between current and pending deployment:&lt;br /&gt;
 rpm-ostree db diff&lt;br /&gt;
Between two specific deployments:&lt;br /&gt;
 ostree admin status&lt;br /&gt;
 rpm-ostree db diff &amp;lt;from-hash&amp;gt; &amp;lt;to-hash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Pin and unpin deployments ====&lt;br /&gt;
Pin current booted deployment:&lt;br /&gt;
 sudo ostree admin pin booted&lt;br /&gt;
Pin a specific entry based on index position:&lt;br /&gt;
 sudo ostree admin pin 3&lt;br /&gt;
Unpin a specific entry based on index position:&lt;br /&gt;
 sudo ostree admin pin --unpin 4&lt;br /&gt;
&lt;br /&gt;
==== Search for a package ====&lt;br /&gt;
 rpm-ostree search &amp;lt;package-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Show detailed info about a package ====&lt;br /&gt;
 dnf info &amp;lt;package-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Layer a package (requires reboot) ====&lt;br /&gt;
 sudo rpm-ostree install &amp;lt;package-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Remove a layered package (requires reboot) ====&lt;br /&gt;
 sudo rpm-ostree remove &amp;lt;package-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Remove a base package (requires reboot) ====&lt;br /&gt;
(Probably don&#039;t do this)&lt;br /&gt;
 sudo rpm-ostree override remove &amp;lt;package-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Enable third party dnf repositories ====&lt;br /&gt;
 sudo rpm-ostree install fedora-workstation-repositories&lt;br /&gt;
 systemctl reboot&lt;br /&gt;
&lt;br /&gt;
 sudo dnf config-manager setopt updates-archive.enabled=0&lt;br /&gt;
 sudo dnf config-manager setopt google-chrome.enabled=1&lt;br /&gt;
 sudo dnf config-manager setopt rpmfusion-free.enabled=1&lt;br /&gt;
 sudo dnf config-manager setopt rpmfusion-free-updates.enabled=1&lt;br /&gt;
&lt;br /&gt;
==== Add docker repository to dnf so docker can be layered ====&lt;br /&gt;
 sudo dnf config-manager addrepo --from-repofile https://download.docker.com/linux/fedora/docker-ce.repo&lt;br /&gt;
&lt;br /&gt;
==== Temporarily create /usr overlay (lost on next boot) ====&lt;br /&gt;
 sudo rpm-ostree usroverlay&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=How_to_use_rpm-ostree&amp;diff=489</id>
		<title>How to use rpm-ostree</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=How_to_use_rpm-ostree&amp;diff=489"/>
		<updated>2026-03-04T10:48:42Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==== List the current deployments and their status ====&lt;br /&gt;
 rpm-ostree status&lt;br /&gt;
&lt;br /&gt;
==== Show package differences between current and pending deployment ====&lt;br /&gt;
 rpm-ostree db diff&lt;br /&gt;
&lt;br /&gt;
==== Pin and unpin deployments ====&lt;br /&gt;
Pin current booted deployment:&lt;br /&gt;
 sudo ostree admin pin booted&lt;br /&gt;
Pin a specific entry based on index position:&lt;br /&gt;
 sudo ostree admin pin 3&lt;br /&gt;
Unpin a specific entry based on index position:&lt;br /&gt;
 sudo ostree admin pin --unpin 4&lt;br /&gt;
&lt;br /&gt;
==== Search for a package ====&lt;br /&gt;
 rpm-ostree search &amp;lt;package-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Show detailed info about a package ====&lt;br /&gt;
 dnf info &amp;lt;package-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Layer a package (requires reboot) ====&lt;br /&gt;
 sudo rpm-ostree install &amp;lt;package-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Remove a layered package (requires reboot) ====&lt;br /&gt;
 sudo rpm-ostree remove &amp;lt;package-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Remove a base package (requires reboot) ====&lt;br /&gt;
(Probably don&#039;t do this)&lt;br /&gt;
 sudo rpm-ostree override remove &amp;lt;package-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Enable third party dnf repositories ====&lt;br /&gt;
 sudo rpm-ostree install fedora-workstation-repositories&lt;br /&gt;
 systemctl reboot&lt;br /&gt;
&lt;br /&gt;
 sudo dnf config-manager setopt updates-archive.enabled=0&lt;br /&gt;
 sudo dnf config-manager setopt google-chrome.enabled=1&lt;br /&gt;
 sudo dnf config-manager setopt rpmfusion-free.enabled=1&lt;br /&gt;
 sudo dnf config-manager setopt rpmfusion-free-updates.enabled=1&lt;br /&gt;
&lt;br /&gt;
==== Add docker repository to dnf so docker can be layered ====&lt;br /&gt;
 sudo dnf config-manager addrepo --from-repofile https://download.docker.com/linux/fedora/docker-ce.repo&lt;br /&gt;
&lt;br /&gt;
==== Temporarily create /usr overlay (lost on next boot) ====&lt;br /&gt;
 sudo rpm-ostree usroverlay&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=488</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=488"/>
		<updated>2026-03-01T01:27:55Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center;margin-top:0.4em&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[Pros and cons of package layering with rpm-ostree]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;br /&gt;
&lt;br /&gt;
== Useful links ==&lt;br /&gt;
* Theledora custom bootc image: https://github.com/Theleruby/theledora-nvidia-open&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=487</id>
		<title>Pros and cons of package layering with rpm-ostree</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=487"/>
		<updated>2026-03-01T01:27:03Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Fedora Atomic Desktop has a curated OS deployment package which is applied as an atomic image. Atomic Desktop has quite a few benefits over non-atomic which I quite like, such as being able to easily roll back to previous OS deployments, pin OS images as backup revisions of the OS, etc. It is much harder to brick the Atomic Desktop, as if you break the system you can simply roll back to the previous deployment. Previous deployments also retain previous copies of the /etc folder, so even config changes get rolled back, which is extremely convenient and makes the OS feel much less brickable.&lt;br /&gt;
&lt;br /&gt;
If you want to install rpm packages, these have to be layered over the top of the base image. To do this you can use a tool called rpm-ostree, which replaces dnf for some commands (but not all of them). System updates then have to re-layer the packages again as part of the update, which is inefficient and can cause dependency issues. Users of Atomic Desktop are therefore supposed to avoid layering.&lt;br /&gt;
&lt;br /&gt;
Instead, you are supposed to install user-level packages by using Distrobox/Toolbx/Homebrew/containers, or you are supposed to use Flatpaks or AppImages.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a breakdown of why you might want to layer packages, why you should avoid layering packages, and a potential workaround (sadly not for the layman).&lt;br /&gt;
&lt;br /&gt;
=== Reasons to use package layering ===&lt;br /&gt;
* Some software is only available via the package manager, so you are forced to layer it if you want to install it.&lt;br /&gt;
* Some software is only available via an AppImage or via the package manager, but AppImages don&#039;t have automatic updates, whereas packages do. AppImages are also much slower to open than the version included in the rpm package. The rpm package is therefore probably a better option in this case.&lt;br /&gt;
* Some software simply makes way more sense to be installed directly into the OS, either because it effectively acts as a core shared OS component (e.g. EasyEffects, FluidSynth) or because it should really have come with the OS to begin with due to being a basic tool and it makes no sense why it&#039;s missing (e.g. htop).&lt;br /&gt;
* Sometimes flatpaks are inferior to the versions included in the package manager (e.g. the LibreOffice flatpak is missing the kf6 package and thus uses the wrong filepicker)&lt;br /&gt;
&lt;br /&gt;
=== Reasons to avoid package layering ===&lt;br /&gt;
* Package layering is inefficient because you have to reapply layered packages onto each newly downloaded base image.&lt;br /&gt;
* Package dependency hell when trying to install or update packages and/or update the OS base image.&lt;br /&gt;
&lt;br /&gt;
=== What is package dependency hell and why does it happen? ===&lt;br /&gt;
rpm-ostree isn&#039;t very smart, and appears to be unable to backdate the dnf repository contents to match the image you&#039;re using. Because of this, it&#039;s very likely you will end up in dependency hell where you are trying but failing to layer packages (if not immediately, then it can hit you when you try to install or update packages and/or the base image in future).&lt;br /&gt;
&lt;br /&gt;
Dependency hell example:&lt;br /&gt;
* The version of python3 in your base image is 3.14.2&lt;br /&gt;
* You choose to layer python3-devel, it installs python3-devel version 3.14.2 which matches the python3 in your base image&lt;br /&gt;
* Fedora repositories update python3 to 3.14.3, but the base bootc image still has 3.14.2 baked into it&lt;br /&gt;
* You try to layer nodejs&lt;br /&gt;
* You can&#039;t install nodejs because rpm-ostree tries to update python3-devel to 3.14.3 when it builds the new image, which is incompatible with the 3.14.2 in the base image&lt;br /&gt;
&lt;br /&gt;
The correct solution would be to pretend all package versions released after the base image was created don&#039;t exist, and to therefore keep python3-devel 3.14.2, because that was the latest version at the time of the base image&#039;s creation. Sadly, rpm-ostree seems like it wasn&#039;t designed to do this. This makes dependency hell essentially inevitable with layering (despite the fact that it could have easily been avoided).&lt;br /&gt;
&lt;br /&gt;
=== Creating your own bootc image ===&lt;br /&gt;
To avoid most of the disadvantages of layering, you can use the image-building tools to build your own image, and then bake the packages you find important into the image. This mostly avoids the dependency hell and the requirement to reapply the layered packages (since they are no longer layered). You obviously might want to try layering the package first (to make sure it does what you expected it to do) before you add it to your image.&lt;br /&gt;
&lt;br /&gt;
Instructions are here: https://github.com/ublue-os/image-template&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=486</id>
		<title>Pros and cons of package layering with rpm-ostree</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=486"/>
		<updated>2026-03-01T01:22:28Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Fedora Atomic Desktop has a curated OS deployment package which is applied as an atomic image. Atomic Desktop has quite a few benefits over non-atomic which I quite like, such as being able to easily roll back to previous OS deployments, pin OS images as backup revisions of the OS, etc. It is much harder to brick the Atomic Desktop, as if you break the system you can simply roll back to the previous deployment. Previous deployments also retain previous copies of the /etc folder, so even config changes get rolled back, which is extremely convenient and makes the OS feel much less brickable.&lt;br /&gt;
&lt;br /&gt;
If you want to install rpm packages, these have to be layered over the top of the base image. To do this you can use a tool called rpm-ostree, which replaces dnf for some commands (but not all of them). System updates then have to re-layer the packages again as part of the update, which is inefficient and can cause dependency issues. Users of Atomic Desktop are therefore supposed to avoid layering.&lt;br /&gt;
&lt;br /&gt;
Instead, you are supposed to install user-level packages by using Distrobox/Toolbx/Homebrew/containers, or you are supposed to use Flatpaks or AppImages.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a breakdown of why you might want to layer packages, why you should avoid layering packages, and a potential workaround (sadly not for the layman).&lt;br /&gt;
&lt;br /&gt;
=== Reasons to use package layering ===&lt;br /&gt;
* Some software is only available via the package manager, so you are forced to layer it if you want to install it.&lt;br /&gt;
* Some software is only available via an AppImage or via the package manager, but AppImages don&#039;t have automatic updates, whereas packages do. AppImages are also much slower to open than the version included in the rpm package. The rpm package is therefore probably a better option in this case.&lt;br /&gt;
* Some software simply makes way more sense to be installed directly into the OS, either because it effectively acts as a core shared OS component (e.g. EasyEffects, FluidSynth) or because it should really have come with the OS to begin with due to being a basic tool and it makes no sense why it&#039;s missing (e.g. htop).&lt;br /&gt;
* Sometimes flatpaks are inferior to the versions included in the package manager (e.g. the LibreOffice flatpak is missing the kf6 package and thus uses the wrong filepicker)&lt;br /&gt;
&lt;br /&gt;
=== Reasons to avoid package layering ===&lt;br /&gt;
* Package layering is inefficient because you have to reapply layered packages onto each newly downloaded base image.&lt;br /&gt;
* Package dependency hell when trying to install or update packages and/or update the OS base image.&lt;br /&gt;
&lt;br /&gt;
=== What is package dependency hell and why does it happen? ===&lt;br /&gt;
rpm-ostree isn&#039;t very smart, and appears to be unable to backdate the dnf repository contents to match the image you&#039;re using. Because of this, it&#039;s very likely you will end up in dependency hell where you are trying but failing to layer packages (if not immediately, then it can hit you when you try to install or update packages and/or the base image in future).&lt;br /&gt;
&lt;br /&gt;
Dependency hell example:&lt;br /&gt;
* The version of python3 in your base image is 3.14.2&lt;br /&gt;
* You choose to layer python3-devel, it installs python3-devel version 3.14.2 which matches the python3 in your base image&lt;br /&gt;
* Fedora repositories update python3 to 3.14.3, but the base bootc image still has 3.14.2 baked into it&lt;br /&gt;
* You try to layer nodejs&lt;br /&gt;
* You can&#039;t install nodejs because rpm-ostree tries to update python3-devel to 3.14.3 when it builds the new image, which is incompatible with the 3.14.2 in the base image&lt;br /&gt;
&lt;br /&gt;
The correct solution would be to pretend all package versions released after the base image was created don&#039;t exist, and to therefore keep python3-devel 3.14.2, because that was the latest version at the time of the base image&#039;s creation. Sadly, rpm-ostree seems like it wasn&#039;t designed to do this. This makes dependency hell essentially inevitable with layering (despite the fact that it could have easily been avoided).&lt;br /&gt;
&lt;br /&gt;
=== Creating your own bootc image ===&lt;br /&gt;
To avoid most of the disadvantages of layering, you can use the image-building tools to build your own image, and then bake the packages you find important into the image. You obviously might want to try layering the package first (to make sure it does what you expected it to do) before you add it to the image.&lt;br /&gt;
&lt;br /&gt;
Instructions are here: https://github.com/ublue-os/image-template&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=485</id>
		<title>Pros and cons of package layering with rpm-ostree</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=485"/>
		<updated>2026-03-01T01:22:10Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Fedora Atomic Desktop has a curated OS deployment package which is applied as an atomic image. Atomic Desktop has quite a few benefits over non-atomic which I quite like, such as being able to easily roll back to previous OS deployments, pin OS images as backup revisions of the OS, etc. It is much harder to brick the Atomic Desktop, as if you break the system you can simply roll back to the previous deployment. Previous deployments also retain previous copies of the /etc folder, so even config changes get rolled back, which is extremely convenient and makes the OS feel much less brickable.&lt;br /&gt;
&lt;br /&gt;
If you want to install rpm packages, these have to be layered over the top of the base image. To do this you can use a tool called rpm-ostree, which replaces dnf for some commands (but not all of them). System updates then have to re-layer the packages again as part of the update, which is inefficient and can cause dependency issues. Users of Atomic Desktop are therefore supposed to avoid layering.&lt;br /&gt;
&lt;br /&gt;
Instead, you are supposed to install user-level packages by using Distrobox/Toolbx/Homebrew/containers, or you are supposed to use Flatpaks or AppImages.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a breakdown of why you might want to layer packages, why you should avoid layering packages, and a potential workaround (sadly not for the layman).&lt;br /&gt;
&lt;br /&gt;
=== Reasons to use package layering ===&lt;br /&gt;
* Some software is only available via the package manager, so you are forced to layer it if you want to install it.&lt;br /&gt;
* Some software is only available via an AppImage or via the package manager, but AppImages don&#039;t have automatic updates, whereas packages do. AppImages are also much slower to open than the rpm package. The rpm package is therefore probably a better option in this case.&lt;br /&gt;
* Some software simply makes way more sense to be installed directly into the OS, either because it effectively acts as a core shared OS component (e.g. EasyEffects, FluidSynth) or because it should really have come with the OS to begin with due to being a basic tool and it makes no sense why it&#039;s missing (e.g. htop).&lt;br /&gt;
* Sometimes flatpaks are inferior to the versions included in the package manager (e.g. the LibreOffice flatpak is missing the kf6 package and thus uses the wrong filepicker)&lt;br /&gt;
&lt;br /&gt;
=== Reasons to avoid package layering ===&lt;br /&gt;
* Package layering is inefficient because you have to reapply layered packages onto each newly downloaded base image.&lt;br /&gt;
* Package dependency hell when trying to install or update packages and/or update the OS base image.&lt;br /&gt;
&lt;br /&gt;
=== What is package dependency hell and why does it happen? ===&lt;br /&gt;
rpm-ostree isn&#039;t very smart, and appears to be unable to backdate the dnf repository contents to match the image you&#039;re using. Because of this, it&#039;s very likely you will end up in dependency hell where you are trying but failing to layer packages (if not immediately, then it can hit you when you try to install or update packages and/or the base image in future).&lt;br /&gt;
&lt;br /&gt;
Dependency hell example:&lt;br /&gt;
* The version of python3 in your base image is 3.14.2&lt;br /&gt;
* You choose to layer python3-devel, it installs python3-devel version 3.14.2 which matches the python3 in your base image&lt;br /&gt;
* Fedora repositories update python3 to 3.14.3, but the base bootc image still has 3.14.2 baked into it&lt;br /&gt;
* You try to layer nodejs&lt;br /&gt;
* You can&#039;t install nodejs because rpm-ostree tries to update python3-devel to 3.14.3 when it builds the new image, which is incompatible with the 3.14.2 in the base image&lt;br /&gt;
&lt;br /&gt;
The correct solution would be to pretend all package versions released after the base image was created don&#039;t exist, and to therefore keep python3-devel 3.14.2, because that was the latest version at the time of the base image&#039;s creation. Sadly, rpm-ostree seems like it wasn&#039;t designed to do this. This makes dependency hell essentially inevitable with layering (despite the fact that it could have easily been avoided).&lt;br /&gt;
&lt;br /&gt;
=== Creating your own bootc image ===&lt;br /&gt;
To avoid most of the disadvantages of layering, you can use the image-building tools to build your own image, and then bake the packages you find important into the image. You obviously might want to try layering the package first (to make sure it does what you expected it to do) before you add it to the image.&lt;br /&gt;
&lt;br /&gt;
Instructions are here: https://github.com/ublue-os/image-template&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=484</id>
		<title>Pros and cons of package layering with rpm-ostree</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=484"/>
		<updated>2026-03-01T01:21:43Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Fedora Atomic Desktop has a curated OS deployment package which is applied as an atomic image. Atomic Desktop has quite a few benefits over non-atomic which I quite like, such as being able to easily roll back to previous OS deployments, pin OS images as backup revisions of the OS, etc. It is much harder to brick the Atomic Desktop, as if you break the system you can simply roll back to the previous deployment. Previous deployments also retain previous copies of the /etc folder, so even config changes get rolled back, which is extremely convenient and makes the OS feel much less brickable.&lt;br /&gt;
&lt;br /&gt;
If you want to install rpm packages, these have to be layered over the top of the base image. To do this you can use a tool called rpm-ostree, which replaces dnf for some commands (but not all of them). System updates then have to re-layer the packages again as part of the update, which is inefficient and can cause dependency issues. Users of Atomic Desktop are therefore supposed to avoid layering.&lt;br /&gt;
&lt;br /&gt;
Instead, you are supposed to install user-level packages by using Distrobox/Toolbx/Homebrew/containers, or you are supposed to use Flatpaks or AppImages.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a breakdown of why you might want to layer packages, why you should avoid layering packages, and a potential workaround (sadly not for the layman).&lt;br /&gt;
&lt;br /&gt;
=== Reasons to use package layering ===&lt;br /&gt;
* Some software is only available via the package manager, so you are forced to layer it if you want to install it.&lt;br /&gt;
* Some software is only available via an AppImage or via the package manager, but AppImages don&#039;t have automatic updates, whereas packages do. AppImages are also much slower to open than the natively installed package.&lt;br /&gt;
* Some software simply makes way more sense to be installed directly into the OS, either because it effectively acts as a core shared OS component (e.g. EasyEffects, FluidSynth) or because it should really have come with the OS to begin with due to being a basic tool and it makes no sense why it&#039;s missing (e.g. htop).&lt;br /&gt;
* Sometimes flatpaks are inferior to the versions included in the package manager (e.g. the LibreOffice flatpak is missing the kf6 package and thus uses the wrong filepicker)&lt;br /&gt;
&lt;br /&gt;
=== Reasons to avoid package layering ===&lt;br /&gt;
* Package layering is inefficient because you have to reapply layered packages onto each newly downloaded base image.&lt;br /&gt;
* Package dependency hell when trying to install or update packages and/or update the OS base image.&lt;br /&gt;
&lt;br /&gt;
=== What is package dependency hell and why does it happen? ===&lt;br /&gt;
rpm-ostree isn&#039;t very smart, and appears to be unable to backdate the dnf repository contents to match the image you&#039;re using. Because of this, it&#039;s very likely you will end up in dependency hell where you are trying but failing to layer packages (if not immediately, then it can hit you when you try to install or update packages and/or the base image in future).&lt;br /&gt;
&lt;br /&gt;
Dependency hell example:&lt;br /&gt;
* The version of python3 in your base image is 3.14.2&lt;br /&gt;
* You choose to layer python3-devel, it installs python3-devel version 3.14.2 which matches the python3 in your base image&lt;br /&gt;
* Fedora repositories update python3 to 3.14.3, but the base bootc image still has 3.14.2 baked into it&lt;br /&gt;
* You try to layer nodejs&lt;br /&gt;
* You can&#039;t install nodejs because rpm-ostree tries to update python3-devel to 3.14.3 when it builds the new image, which is incompatible with the 3.14.2 in the base image&lt;br /&gt;
&lt;br /&gt;
The correct solution would be to pretend all package versions released after the base image was created don&#039;t exist, and to therefore keep python3-devel 3.14.2, because that was the latest version at the time of the base image&#039;s creation. Sadly, rpm-ostree seems like it wasn&#039;t designed to do this. This makes dependency hell essentially inevitable with layering (despite the fact that it could have easily been avoided).&lt;br /&gt;
&lt;br /&gt;
=== Creating your own bootc image ===&lt;br /&gt;
To avoid most of the disadvantages of layering, you can use the image-building tools to build your own image, and then bake the packages you find important into the image. You obviously might want to try layering the package first (to make sure it does what you expected it to do) before you add it to the image.&lt;br /&gt;
&lt;br /&gt;
Instructions are here: https://github.com/ublue-os/image-template&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=483</id>
		<title>Pros and cons of package layering with rpm-ostree</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=483"/>
		<updated>2026-03-01T01:21:11Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Fedora Atomic Desktop has a curated OS deployment package which is applied as an atomic image. Atomic Desktop has quite a few benefits over non-atomic which I quite like, such as being able to easily roll back to previous OS deployments, pin OS images as backup revisions of the OS, etc. It is much harder to brick the Atomic Desktop, as if you break the system you can simply roll back to the previous deployment. Previous deployments also retain previous copies of the /etc folder, so even config changes get rolled back, which is extremely convenient and makes the OS feel much less brickable.&lt;br /&gt;
&lt;br /&gt;
If you want to install rpm packages, these have to be layered over the top of the base image. To do this you can use a tool called rpm-ostree, which replaces dnf for some commands (but not all of them). System updates then have to re-layer the packages again as part of the update, which is inefficient and can cause dependency issues. Users of Atomic Desktop are therefore supposed to avoid layering.&lt;br /&gt;
&lt;br /&gt;
Instead, you are supposed to install user-level packages by using Distrobox/Toolbx/Homebrew/containers, or you are supposed to use Flatpaks or AppImages.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a breakdown of why you might want to layer packages, why you should avoid layering packages, and a potential workaround (sadly not for the layman).&lt;br /&gt;
&lt;br /&gt;
=== Reasons to use package layering ===&lt;br /&gt;
* Some software is only available via the package manager, so you are forced to layer it if you want to install it.&lt;br /&gt;
* Some software is only available via an AppImage or via the package manager, but AppImages don&#039;t have automatic updates, whereas packages do.&lt;br /&gt;
* Some software simply makes way more sense to be installed directly into the OS, either because it effectively acts as a core shared OS component (e.g. EasyEffects, FluidSynth) or because it should really have come with the OS to begin with due to being a basic tool and it makes no sense why it&#039;s missing (e.g. htop).&lt;br /&gt;
* Sometimes flatpaks are inferior to the versions included in the package manager (e.g. the LibreOffice flatpak is missing the kf6 package and thus uses the wrong filepicker)&lt;br /&gt;
&lt;br /&gt;
=== Reasons to avoid package layering ===&lt;br /&gt;
* Package layering is inefficient because you have to reapply layered packages onto each newly downloaded base image.&lt;br /&gt;
* Package dependency hell when trying to install or update packages and/or update the OS base image.&lt;br /&gt;
&lt;br /&gt;
=== What is package dependency hell and why does it happen? ===&lt;br /&gt;
rpm-ostree isn&#039;t very smart, and appears to be unable to backdate the dnf repository contents to match the image you&#039;re using. Because of this, it&#039;s very likely you will end up in dependency hell where you are trying but failing to layer packages (if not immediately, then it can hit you when you try to install or update packages and/or the base image in future).&lt;br /&gt;
&lt;br /&gt;
Dependency hell example:&lt;br /&gt;
* The version of python3 in your base image is 3.14.2&lt;br /&gt;
* You choose to layer python3-devel, it installs python3-devel version 3.14.2 which matches the python3 in your base image&lt;br /&gt;
* Fedora repositories update python3 to 3.14.3, but the base bootc image still has 3.14.2 baked into it&lt;br /&gt;
* You try to layer nodejs&lt;br /&gt;
* You can&#039;t install nodejs because rpm-ostree tries to update python3-devel to 3.14.3 when it builds the new image, which is incompatible with the 3.14.2 in the base image&lt;br /&gt;
&lt;br /&gt;
The correct solution would be to pretend all package versions released after the base image was created don&#039;t exist, and to therefore keep python3-devel 3.14.2, because that was the latest version at the time of the base image&#039;s creation. Sadly, rpm-ostree seems like it wasn&#039;t designed to do this. This makes dependency hell essentially inevitable with layering (despite the fact that it could have easily been avoided).&lt;br /&gt;
&lt;br /&gt;
=== Creating your own bootc image ===&lt;br /&gt;
To avoid most of the disadvantages of layering, you can use the image-building tools to build your own image, and then bake the packages you find important into the image. You obviously might want to try layering the package first (to make sure it does what you expected it to do) before you add it to the image.&lt;br /&gt;
&lt;br /&gt;
Instructions are here: https://github.com/ublue-os/image-template&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=482</id>
		<title>Pros and cons of package layering with rpm-ostree</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=482"/>
		<updated>2026-03-01T01:19:51Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Fedora Atomic Desktop has a curated OS deployment package which is applied as an atomic image. Atomic Desktop has quite a few benefits over non-atomic which I quite like, such as being able to easily roll back to previous OS deployments, pin OS images as backup revisions of the OS, etc. It is much harder to brick the Atomic Desktop, as if you break the system you can simply roll back to the previous deployment. Previous deployments also retain previous copies of the /etc folder, so even config changes get rolled back, which is extremely convenient and makes the OS feel much less brickable.&lt;br /&gt;
&lt;br /&gt;
If you want to install rpm packages, these have to be layered over the top of the base image. To do this you can use a tool called rpm-ostree, which replaces dnf for some commands (but not all of them). System updates then have to re-layer the packages again as part of the update, which is inefficient and can cause dependency issues. Users of Atomic Desktop are therefore supposed to avoid layering.&lt;br /&gt;
&lt;br /&gt;
Instead, you are supposed to install user-level packages by using Distrobox/Toolbx/Homebrew/containers, or you are supposed to use Flatpaks or AppImages.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a breakdown of why you might want to layer packages, why you should avoid layering packages, and a potential workaround (sadly not for the layman).&lt;br /&gt;
&lt;br /&gt;
=== Reasons to use package layering ===&lt;br /&gt;
* Some software is only available via the package manager, so you are forced to layer it if you want to install it.&lt;br /&gt;
* Some software simply makes way more sense to be installed directly into the OS, either because it effectively acts as a core shared OS component (e.g. EasyEffects, FluidSynth) or because it should really have come with the OS to begin with due to being a basic tool and it makes no sense why it&#039;s missing (e.g. htop).&lt;br /&gt;
* Sometimes flatpaks are inferior to the versions included in the package manager (e.g. the LibreOffice flatpak is missing the kf6 package and thus uses the wrong filepicker)&lt;br /&gt;
&lt;br /&gt;
=== Reasons to avoid package layering ===&lt;br /&gt;
* Package layering is inefficient because you have to reapply layered packages onto each newly downloaded base image.&lt;br /&gt;
* Package dependency hell when trying to install or update packages and/or update the OS base image.&lt;br /&gt;
&lt;br /&gt;
=== What is package dependency hell and why does it happen? ===&lt;br /&gt;
rpm-ostree isn&#039;t very smart, and appears to be unable to backdate the dnf repository contents to match the image you&#039;re using. Because of this, it&#039;s very likely you will end up in dependency hell where you are trying but failing to layer packages (if not immediately, then it can hit you when you try to install or update packages and/or the base image in future).&lt;br /&gt;
&lt;br /&gt;
Dependency hell example:&lt;br /&gt;
* The version of python3 in your base image is 3.14.2&lt;br /&gt;
* You choose to layer python3-devel, it installs python3-devel version 3.14.2 which matches the python3 in your base image&lt;br /&gt;
* Fedora repositories update python3 to 3.14.3, but the base bootc image still has 3.14.2 baked into it&lt;br /&gt;
* You try to layer nodejs&lt;br /&gt;
* You can&#039;t install nodejs because rpm-ostree tries to update python3-devel to 3.14.3 when it builds the new image, which is incompatible with the 3.14.2 in the base image&lt;br /&gt;
&lt;br /&gt;
The correct solution would be to pretend all package versions released after the base image was created don&#039;t exist, and to therefore keep python3-devel 3.14.2, because that was the latest version at the time of the base image&#039;s creation. Sadly, rpm-ostree seems like it wasn&#039;t designed to do this. This makes dependency hell essentially inevitable with layering (despite the fact that it could have easily been avoided).&lt;br /&gt;
&lt;br /&gt;
=== Creating your own bootc image ===&lt;br /&gt;
To avoid most of the disadvantages of layering, you can use the image-building tools to build your own image, and then bake the packages you find important into the image. You obviously might want to try layering the package first (to make sure it does what you expected it to do) before you add it to the image.&lt;br /&gt;
&lt;br /&gt;
Instructions are here: https://github.com/ublue-os/image-template&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Atomic_Desktops_introduction&amp;diff=481</id>
		<title>Atomic Desktops introduction</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Atomic_Desktops_introduction&amp;diff=481"/>
		<updated>2026-03-01T01:18:47Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What are Atomic Desktops? ==&lt;br /&gt;
Linux distros are essentially made up of a bunch of open-source packages installed by a package manager. To update the system, you normally ask the package manager to update all the installed packages, and it does its best to comply. However, occasionally this can go wrong (e.g. due to broken/corrupt/conflicting packages). If this happens you can end up with the system in a bricked or unbootable state that can be hard to recover from. While it&#039;s not very common, it does happen, and this is not really ideal for the average random user who just wants a stable machine that works.&lt;br /&gt;
&lt;br /&gt;
The atomic desktop idea is a new way of deploying Linux which attempts to avoid this sort of problem. Instead of installing the OS directly to your hard drive and updating the packages live, instead the operating system is deployed as an immutable OSTree image (similar to a docker image, but for the whole operating system). A portion of the system is kept separate from the image so that you can write your personal data there.&lt;br /&gt;
&lt;br /&gt;
Updates are done atomically as a series of commits, where each version of the OS is a new OSTree image. Either the update completely succeeds or it completely fails; if it fails then the update doesn&#039;t get applied. If the user wants to install packages, these need to be layered on top of the image, which essentially creates a new sub-image with those packages layered. You then have to reboot into the new image in order to start using the layered packages.&lt;br /&gt;
&lt;br /&gt;
The system normally retains the previous known good image in addition to the latest one. This allows you to perform a rollback in the event of a system update causing a boot failure. You can also pin specific images in order to keep them for future emergencies. The image you want to boot can be selected from grub.&lt;br /&gt;
&lt;br /&gt;
== Installing packages and other software on Fedora Atomic Desktops ==&lt;br /&gt;
The package manager for the Fedora Atomic Desktops is technically the same as the regular version of Fedora (dnf). However, most functions are unavailable from dnf directly, because the OS image is immutable. The tool that fills the gap is called rpm-ostree which layers packages using dnf libraries.&lt;br /&gt;
&lt;br /&gt;
As an alternative to layering packages, you can choose to install programs into user-writeable locations. This is done using things like Flatpaks (downloadable programs which run in a self-contained sandbox, downloaded from the website Flathub) and AppImages (full program images containing all files and dependencies for the program, behaving a bit like a static exe). Flatpaks have the advantage of being installable from a distro-specific app store tool (e.g. Bazaar) and can be updated easily via GUI, similar to the Apple App Store, Google Play or WinStore. AppImages don&#039;t have this luxury usually and you have to update them by hand.&lt;br /&gt;
&lt;br /&gt;
Sometimes the Flatpaks or AppImages don&#039;t work as well as the packages from dnf so it&#039;s not always viable to use them, in this case you might want to layer the packages instead. See also [[Pros and cons of package layering with rpm-ostree]].&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=480</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=480"/>
		<updated>2026-03-01T01:18:39Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center;margin-top:0.4em&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[Pros and cons of package layering with rpm-ostree]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=479</id>
		<title>Pros and cons of package layering with rpm-ostree</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=479"/>
		<updated>2026-03-01T01:18:24Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: Theleruby moved page Rpm-ostree layering vs flatpaks to Pros and cons of package layering with rpm-ostree without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Fedora Atomic Desktop has a curated OS deployment package which is applied as an atomic image. Atomic Desktop has quite a few benefits over non-atomic which I quite like, such as being able to easily roll back to previous OS deployments, pin OS images as backup revisions of the OS, etc. It is much harder to brick the Atomic Desktop, as if you break the system you can simply roll back to the previous deployment. Previous deployments also retain previous copies of the /etc folder, so even config changes get rolled back, which is extremely convenient and makes the OS feel much less brickable.&lt;br /&gt;
&lt;br /&gt;
If you want to install rpm packages, these have to be layered over the top of the base image. To do this you can use a tool called rpm-ostree, which replaces dnf for some commands (but not all of them). System updates then have to re-layer the packages again as part of the update. Users of Atomic Desktop are therefore supposed to avoid layering&lt;br /&gt;
&lt;br /&gt;
Instead, you are supposed to install user-level packages by using Distrobox/Toolbx/Homebrew/containers, or you are supposed to use Flatpaks or AppImages.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a breakdown of why you might want to layer packages, why you should avoid layering packages, and a potential workaround (sadly not for the layman).&lt;br /&gt;
&lt;br /&gt;
=== Reasons to use package layering ===&lt;br /&gt;
* Some software is only available via the package manager, so you are forced to layer it if you want to install it.&lt;br /&gt;
* Some software simply makes way more sense to be installed directly into the OS, either because it effectively acts as a core shared OS component (e.g. EasyEffects, FluidSynth) or because it should really have come with the OS to begin with due to being a basic tool and it makes no sense why it&#039;s missing (e.g. htop).&lt;br /&gt;
* Sometimes flatpaks are inferior to the versions included in the package manager (e.g. the LibreOffice flatpak is missing the kf6 package and thus uses the wrong filepicker)&lt;br /&gt;
&lt;br /&gt;
=== Reasons to avoid package layering ===&lt;br /&gt;
* Package layering is inefficient because you have to reapply layered packages onto each newly downloaded base image.&lt;br /&gt;
* Package dependency hell when trying to install or update packages and/or update the OS base image.&lt;br /&gt;
&lt;br /&gt;
=== What is package dependency hell and why does it happen? ===&lt;br /&gt;
rpm-ostree isn&#039;t very smart, and appears to be unable to backdate the dnf repository contents to match the image you&#039;re using. Because of this, it&#039;s very likely you will end up in dependency hell where you are trying but failing to layer packages (if not immediately, then it can hit you when you try to install or update packages and/or the base image in future).&lt;br /&gt;
&lt;br /&gt;
Dependency hell example:&lt;br /&gt;
* The version of python3 in your base image is 3.14.2&lt;br /&gt;
* You choose to layer python3-devel, it installs python3-devel version 3.14.2 which matches the python3 in your base image&lt;br /&gt;
* Fedora repositories update python3 to 3.14.3, but the base bootc image still has 3.14.2 baked into it&lt;br /&gt;
* You try to layer nodejs&lt;br /&gt;
* You can&#039;t install nodejs because rpm-ostree tries to update python3-devel to 3.14.3 when it builds the new image, which is incompatible with the 3.14.2 in the base image&lt;br /&gt;
&lt;br /&gt;
The correct solution would be to pretend all package versions released after the base image was created don&#039;t exist, and to therefore keep python3-devel 3.14.2, because that was the latest version at the time of the base image&#039;s creation. Sadly, rpm-ostree seems like it wasn&#039;t designed to do this. This makes dependency hell essentially inevitable with layering (despite the fact that it could have easily been avoided).&lt;br /&gt;
&lt;br /&gt;
=== Creating your own bootc image ===&lt;br /&gt;
To avoid most of the disadvantages of layering, you can use the image-building tools to build your own image, and then bake the packages you find important into the image. You obviously might want to try layering the package first (to make sure it does what you expected it to do) before you add it to the image.&lt;br /&gt;
&lt;br /&gt;
Instructions are here: https://github.com/ublue-os/image-template&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=478</id>
		<title>Pros and cons of package layering with rpm-ostree</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=478"/>
		<updated>2026-02-28T23:59:05Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Fedora Atomic Desktop has a curated OS deployment package which is applied as an atomic image. Atomic Desktop has quite a few benefits over non-atomic which I quite like, such as being able to easily roll back to previous OS deployments, pin OS images as backup revisions of the OS, etc. It is much harder to brick the Atomic Desktop, as if you break the system you can simply roll back to the previous deployment. Previous deployments also retain previous copies of the /etc folder, so even config changes get rolled back, which is extremely convenient and makes the OS feel much less brickable.&lt;br /&gt;
&lt;br /&gt;
If you want to install rpm packages, these have to be layered over the top of the base image. To do this you can use a tool called rpm-ostree, which replaces dnf for some commands (but not all of them). System updates then have to re-layer the packages again as part of the update. Users of Atomic Desktop are therefore supposed to avoid layering&lt;br /&gt;
&lt;br /&gt;
Instead, you are supposed to install user-level packages by using Distrobox/Toolbx/Homebrew/containers, or you are supposed to use Flatpaks or AppImages.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a breakdown of why you might want to layer packages, why you should avoid layering packages, and a potential workaround (sadly not for the layman).&lt;br /&gt;
&lt;br /&gt;
=== Reasons to use package layering ===&lt;br /&gt;
* Some software is only available via the package manager, so you are forced to layer it if you want to install it.&lt;br /&gt;
* Some software simply makes way more sense to be installed directly into the OS, either because it effectively acts as a core shared OS component (e.g. EasyEffects, FluidSynth) or because it should really have come with the OS to begin with due to being a basic tool and it makes no sense why it&#039;s missing (e.g. htop).&lt;br /&gt;
* Sometimes flatpaks are inferior to the versions included in the package manager (e.g. the LibreOffice flatpak is missing the kf6 package and thus uses the wrong filepicker)&lt;br /&gt;
&lt;br /&gt;
=== Reasons to avoid package layering ===&lt;br /&gt;
* Package layering is inefficient because you have to reapply layered packages onto each newly downloaded base image.&lt;br /&gt;
* Package dependency hell when trying to install or update packages and/or update the OS base image.&lt;br /&gt;
&lt;br /&gt;
=== What is package dependency hell and why does it happen? ===&lt;br /&gt;
rpm-ostree isn&#039;t very smart, and appears to be unable to backdate the dnf repository contents to match the image you&#039;re using. Because of this, it&#039;s very likely you will end up in dependency hell where you are trying but failing to layer packages (if not immediately, then it can hit you when you try to install or update packages and/or the base image in future).&lt;br /&gt;
&lt;br /&gt;
Dependency hell example:&lt;br /&gt;
* The version of python3 in your base image is 3.14.2&lt;br /&gt;
* You choose to layer python3-devel, it installs python3-devel version 3.14.2 which matches the python3 in your base image&lt;br /&gt;
* Fedora repositories update python3 to 3.14.3, but the base bootc image still has 3.14.2 baked into it&lt;br /&gt;
* You try to layer nodejs&lt;br /&gt;
* You can&#039;t install nodejs because rpm-ostree tries to update python3-devel to 3.14.3 when it builds the new image, which is incompatible with the 3.14.2 in the base image&lt;br /&gt;
&lt;br /&gt;
The correct solution would be to pretend all package versions released after the base image was created don&#039;t exist, and to therefore keep python3-devel 3.14.2, because that was the latest version at the time of the base image&#039;s creation. Sadly, rpm-ostree seems like it wasn&#039;t designed to do this. This makes dependency hell essentially inevitable with layering (despite the fact that it could have easily been avoided).&lt;br /&gt;
&lt;br /&gt;
=== Creating your own bootc image ===&lt;br /&gt;
To avoid most of the disadvantages of layering, you can use the image-building tools to build your own image, and then bake the packages you find important into the image. You obviously might want to try layering the package first (to make sure it does what you expected it to do) before you add it to the image.&lt;br /&gt;
&lt;br /&gt;
Instructions are here: https://github.com/ublue-os/image-template&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=477</id>
		<title>Pros and cons of package layering with rpm-ostree</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=477"/>
		<updated>2026-02-28T23:58:08Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Fedora Atomic Desktop has a curated OS deployment package which is applied as an atomic image. Atomic Desktop has quite a few benefits over non-atomic which I quite like, such as being able to easily roll back to previous OS deployments, pin OS images as backup revisions of the OS, etc. It is much harder to brick the Atomic Desktop, as if you break the system you can simply roll back to the previous deployment. Previous deployments also retain previous copies of the /etc folder, so even config changes get rolled back, which is extremely convenient and makes the OS feel much less brickable.&lt;br /&gt;
&lt;br /&gt;
If you want to install rpm packages, these have to be layered over the top of the base image. To do this you can use a tool called rpm-ostree, which replaces dnf for some commands (but not all of them). System updates then have to re-layer the packages again as part of the update. Users of Atomic Desktop are therefore supposed to avoid layering&lt;br /&gt;
&lt;br /&gt;
Instead, you are supposed to install user-level packages by using Distrobox/Toolbx/Homebrew/containers, or you are supposed to use Flatpaks or AppImages.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a breakdown of why you might want to layer packages, why you should avoid layering packages, and a potential workaround (sadly not for the layman).&lt;br /&gt;
&lt;br /&gt;
=== Reasons to use package layering ===&lt;br /&gt;
* Some software is only available via the package manager, so you are forced to layer it if you want to install it.&lt;br /&gt;
* Some software simply makes way more sense to be installed directly into the OS, either because it effectively acts as a core shared OS component (e.g. EasyEffects, FluidSynth) or because it should really have come with the OS to begin with due to being a basic tool and it makes no sense why it&#039;s missing (e.g. htop).&lt;br /&gt;
* Sometimes flatpaks are inferior to the versions included in the package manager (e.g. the LibreOffice flatpak is missing the kf6 package and thus uses the wrong filepicker)&lt;br /&gt;
&lt;br /&gt;
=== Reasons to avoid package layering ===&lt;br /&gt;
* Package layering is inefficient because you have to reapply layered packages onto each newly downloaded image.&lt;br /&gt;
* Package dependency hell when trying to install or update packages and/or update the OS base image.&lt;br /&gt;
&lt;br /&gt;
=== What is package dependency hell and why does it happen? ===&lt;br /&gt;
rpm-ostree isn&#039;t very smart, and appears to be unable to backdate the dnf repository contents to match the image you&#039;re using. Because of this, it&#039;s very likely you will end up in dependency hell where you are trying but failing to layer packages (if not immediately, then it can hit you when you try to install or update packages and/or the base image in future).&lt;br /&gt;
&lt;br /&gt;
Dependency hell example:&lt;br /&gt;
* The version of python3 in your base image is 3.14.2&lt;br /&gt;
* You choose to layer python3-devel, it installs python3-devel version 3.14.2 which matches the python3 in your base image&lt;br /&gt;
* Fedora repositories update python3 to 3.14.3, but the base bootc image still has 3.14.2 baked into it&lt;br /&gt;
* You try to layer nodejs&lt;br /&gt;
* You can&#039;t install nodejs because rpm-ostree tries to update python3-devel to 3.14.3 when it builds the new image, which is incompatible with the 3.14.2 in the base image&lt;br /&gt;
&lt;br /&gt;
The correct solution would be to pretend all package versions released after the base image was created don&#039;t exist, and to therefore keep python3-devel 3.14.2, because that was the latest version at the time of the base image&#039;s creation. Sadly, rpm-ostree seems like it wasn&#039;t designed to do this. This makes dependency hell essentially inevitable with layering (despite the fact that it could have easily been avoided).&lt;br /&gt;
&lt;br /&gt;
=== Creating your own bootc image ===&lt;br /&gt;
To avoid most of the disadvantages of layering, you can use the image-building tools to build your own image, and then bake the packages you find important into the image. You obviously might want to try layering the package first (to make sure it does what you expected it to do) before you add it to the image.&lt;br /&gt;
&lt;br /&gt;
Instructions are here: https://github.com/ublue-os/image-template&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=476</id>
		<title>Pros and cons of package layering with rpm-ostree</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=476"/>
		<updated>2026-02-28T23:56:21Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Fedora Atomic Desktop has a curated OS deployment package which is applied as an atomic image. Atomic Desktop has quite a few benefits over non-atomic which I quite like, such as being able to easily roll back to previous OS deployments, pin OS images as backup revisions of the OS, etc. It is much harder to brick the Atomic Desktop, as if you break the system you can simply roll back to the previous deployment. Previous deployments also retain previous copies of the /etc folder, so even config changes get rolled back, which is extremely convenient and makes the OS feel much less brickable.&lt;br /&gt;
&lt;br /&gt;
If you want to install rpm packages, these have to be layered over the top of the base image. To do this you can use a tool called rpm-ostree, which replaces dnf for some commands (but not all of them). System updates then have to re-layer the packages again as part of the update. Users of Atomic Desktop are therefore supposed to avoid layering. Instead, you are supposed to install user-level packages by using Distrobox/Toolbx/Homebrew/containers, or you are supposed to use Flatpaks or AppImages.&lt;br /&gt;
&lt;br /&gt;
=== Reasons to use package layering ===&lt;br /&gt;
* Some software is only available via the package manager, so you are forced to layer it if you want to install it.&lt;br /&gt;
* Some software simply makes way more sense to be installed directly into the OS, either because it effectively acts as a core shared OS component (e.g. EasyEffects, FluidSynth) or because it should really have come with the OS to begin with due to being a basic tool and it makes no sense why it&#039;s missing (e.g. htop).&lt;br /&gt;
* Sometimes flatpaks are inferior to the versions included in the package manager (e.g. the LibreOffice flatpak is missing the kf6 package and thus uses the wrong filepicker)&lt;br /&gt;
&lt;br /&gt;
=== Reasons to avoid package layering ===&lt;br /&gt;
* Package layering is inefficient because you have to reapply layered packages onto each newly downloaded image.&lt;br /&gt;
* Package dependency hell when trying to install or update packages and/or update the OS base image.&lt;br /&gt;
&lt;br /&gt;
=== What is package dependency hell and why does it happen? ===&lt;br /&gt;
rpm-ostree isn&#039;t very smart, and appears to be unable to backdate the dnf repository contents to match the image you&#039;re using. Because of this, it&#039;s very likely you will end up in dependency hell where you are trying but failing to layer packages (if not immediately, then it can hit you when you try to install or update packages and/or the base image in future).&lt;br /&gt;
&lt;br /&gt;
Dependency hell example:&lt;br /&gt;
* The version of python3 in your base image is 3.14.2&lt;br /&gt;
* You choose to layer python3-devel, it installs python3-devel version 3.14.2 which matches the python3 in your base image&lt;br /&gt;
* Fedora repositories update python3 to 3.14.3, but the base bootc image still has 3.14.2 baked into it&lt;br /&gt;
* You try to layer nodejs&lt;br /&gt;
* You can&#039;t install nodejs because rpm-ostree tries to update python3-devel to 3.14.3 when it builds the new image, which is incompatible with the 3.14.2 in the base image&lt;br /&gt;
&lt;br /&gt;
The correct solution would be to pretend all package versions released after the base image was created don&#039;t exist, and to therefore keep python3-devel 3.14.2, because that was the latest version at the time of the base image&#039;s creation. Sadly, rpm-ostree seems like it wasn&#039;t designed to do this. This makes dependency hell essentially inevitable with layering (despite the fact that it could have easily been avoided).&lt;br /&gt;
&lt;br /&gt;
=== Creating your own bootc image ===&lt;br /&gt;
To avoid most of the disadvantages of layering, you can use the image-building tools to build your own image, and then bake the packages you find important into the image. You obviously might want to try layering the package first (to make sure it does what you expected it to do) before you add it to the image.&lt;br /&gt;
&lt;br /&gt;
Instructions are here: https://github.com/ublue-os/image-template&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=475</id>
		<title>Pros and cons of package layering with rpm-ostree</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Pros_and_cons_of_package_layering_with_rpm-ostree&amp;diff=475"/>
		<updated>2026-02-28T23:56:05Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fedora Atomic Desktop has a curated OS deployment package which is applied as an atomic image. Atomic Desktop has quite a few benefits over non-atomic which I quite like, such as being able to easily roll back to previous OS deployments, pin OS images as backup revisions of the OS, etc. It is much harder to brick the Atomic Desktop, as if you break the system you can simply roll back to the previous deployment. Previous deployments also retain previous copies of the /etc folder, so even config changes get rolled back, which is extremely convenient and makes the OS feel much less brickable.&lt;br /&gt;
&lt;br /&gt;
If you want to install rpm packages, these have to be layered over the top of the base image. To do this you can use a tool called rpm-ostree, which replaces dnf for some commands (but not all of them). System updates then have to re-layer the packages again as part of the update. Users of Atomic Desktop are therefore supposed to avoid layering. Instead, you are supposed to install user-level packages by using Distrobox/Toolbx/Homebrew/containers, or you are supposed to use Flatpaks or AppImages.&lt;br /&gt;
&lt;br /&gt;
=== Reasons to use package layering ===&lt;br /&gt;
* Some software is only available via the package manager, so you are forced to layer it if you want to install it.&lt;br /&gt;
* Some software simply makes way more sense to be installed directly into the OS, either because it effectively acts as a core shared OS component (e.g. EasyEffects, FluidSynth) or because it should really have come with the OS to begin with due to being a basic tool and it makes no sense why it&#039;s missing (e.g. htop).&lt;br /&gt;
* Sometimes flatpaks are inferior to the versions included in the package manager (e.g. the LibreOffice flatpak is missing the kf6 package and thus uses the wrong filepicker)&lt;br /&gt;
&lt;br /&gt;
=== Reasons to avoid package layering ===&lt;br /&gt;
* Package layering is inefficient because you have to reapply layered packages onto each newly downloaded image.&lt;br /&gt;
* Package dependency hell when trying to install or update packages and/or update the OS base image.&lt;br /&gt;
&lt;br /&gt;
=== What is package dependency hell and why does it happen? ===&lt;br /&gt;
rpm-ostree isn&#039;t very smart, and appears to be unable to backdate the dnf repository contents to match the image you&#039;re using. Because of this, it&#039;s very likely you will end up in dependency hell where you are trying but failing to layer packages (if not immediately, then it can hit you when you try to install or update packages and/or the base image in future).&lt;br /&gt;
&lt;br /&gt;
Dependency hell example:&lt;br /&gt;
* The version of python3 in your base image is 3.14.2&lt;br /&gt;
* You choose to layer python3-devel, it installs python3-devel version 3.14.2 which matches the python3 in your base image&lt;br /&gt;
* Fedora repositories update python3 to 3.14.3, but the base bootc image still has 3.14.2 baked into it&lt;br /&gt;
* You try to layer nodejs&lt;br /&gt;
* You can&#039;t install nodejs because rpm-ostree tries to update python3-devel to 3.14.3 when it builds the new image, which is incompatible with the 3.14.2 in the base image&lt;br /&gt;
&lt;br /&gt;
The correct solution would be to pretend all package versions released after the base image was created don&#039;t exist, and to therefore keep python3-devel 3.14.2, because that was the latest version at the time of the base image&#039;s creation. Sadly, rpm-ostree seems like it wasn&#039;t designed to do this. This makes dependency hell essentially inevitable with layering (despite the fact that it could have easily been avoided).&lt;br /&gt;
&lt;br /&gt;
=== Creating your own bootc image ===&lt;br /&gt;
To avoid most of the disadvantages of layering, you can use the image-building tools to build your own image, and then bake the packages you find important into the image. You obviously might want to try layering the package first (to make sure it does what you expected it to do) before you add it to the image.&lt;br /&gt;
&lt;br /&gt;
Instructions are here: https://github.com/ublue-os/image-template&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Quick_introduction_of_all_the_main_things&amp;diff=474</id>
		<title>Quick introduction of all the main things</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Quick_introduction_of_all_the_main_things&amp;diff=474"/>
		<updated>2026-02-28T23:31:07Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Linux ==&lt;br /&gt;
Linux is an open-source operating system kernel initially created by Linus Torvalds, based on an earlier system called Unix. It isn&#039;t an OS by itself, instead it serves as the base which many different operating system distributions (distros) build on top of. Linux distros are usually free (although there are some commercially supported distros). Linux essentially competes with Windows and MacOS in the desktop space.&lt;br /&gt;
&lt;br /&gt;
== sudo ==&lt;br /&gt;
sudo (superuser do) is a prefix you can put before a command in order to run it root, which is the superuser (administrator) account.&lt;br /&gt;
&lt;br /&gt;
For example, this command runs the text editor &amp;quot;vim&amp;quot; as root:&lt;br /&gt;
 sudo vim&lt;br /&gt;
&lt;br /&gt;
Running something using sudo is roughly equivalent to right clicking on the program and choosing &amp;quot;Run as administrator&amp;quot; on Windows.&lt;br /&gt;
&lt;br /&gt;
== X11, Wayland and XWayland ==&lt;br /&gt;
X Window System (X11) is the original window manager for both Unix and Linux. It was developed in the 1980s. It provides a standard way for programs to have a GUI.&lt;br /&gt;
&lt;br /&gt;
Wayland is essentially the successor to X11, it&#039;s new and shiny. It is similar to the Desktop Window Manager (DWM) introduced with Windows Vista. Most modern Linux distros use Wayland now instead of X11.&lt;br /&gt;
&lt;br /&gt;
Not all programs support Wayland yet. XWayland is an implementation of X11 that runs inside Wayland, essentially acting as a translation layer so that you can use X11 programs on Wayland.&lt;br /&gt;
&lt;br /&gt;
Some features are missing from Wayland and sometimes it can be a little buggy.&lt;br /&gt;
&lt;br /&gt;
== GNOME and KDE Plasma ==&lt;br /&gt;
GNOME and KDE Plasma are two different open-source desktop environments. They are the most common desktop environments used by Linux distributions. The latest versions of GNOME and KDE Plasma run on top of Wayland.&lt;br /&gt;
&lt;br /&gt;
GNOME looks and works similarly to MacOS, while KDE Plasma looks and works similarly to Windows.&lt;br /&gt;
&lt;br /&gt;
== Red Hat ==&lt;br /&gt;
&#039;&#039;&#039;Red Hat, Inc.&#039;&#039;&#039; is a software company which makes Red Hat Enterprise Linux (RHEL), a commercial Linux distribution.&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
Fedora is a free community-developed Linux distribution which serves as the upstream for RHEL (the code from Fedora is used to make future versions of RHEL). Some Red Hat employees work on Fedora and Red Hat is Fedora&#039;s largest sponsor. Around 35% of the people contributing to Fedora work at Red Hat.&lt;br /&gt;
&lt;br /&gt;
== Fedora Atomic Desktops ==&lt;br /&gt;
Atomic desktops are a new way to deploy Linux which delivers OS updates in the form of immutable images. It is designed to make updating more reliable and reduce the chance of the OS being bricked by a bad update. See also [[Atomic Desktops introduction]].&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
Universal Blue is a community-driven project to build custom immutable operating system images based on Fedora Atomic Desktops. Their OS images essentially bundle Fedora with various enhancements.&lt;br /&gt;
&lt;br /&gt;
== Aurora and Bluefun ==&lt;br /&gt;
Aurora and Bluefin are Fedora images from Universal Blue which are oriented towards developers. Aurora uses the KDE Plasma desktop environment. Bluefun uses GNOME.&lt;br /&gt;
&lt;br /&gt;
== Bazzite ==&lt;br /&gt;
Bazzite is a Fedora image from Universal Blue which is oriented towards gamers. It comes with things preinstalled that are useful for Linux gaming (like Steam, Lutris, ProtonPlus, gamescope, etc). There is a variant for handhelds which provides SteamOS-like features such as the Steam Deck Gaming Mode. Desktop environment is KDE Plasma.&lt;br /&gt;
&lt;br /&gt;
== Theledora ==&lt;br /&gt;
Theledora is a fork of Bazzite which has some extra stuff preinstalled that I use. I made it because I had dependency conflicts with layered packages.&lt;br /&gt;
&lt;br /&gt;
== Gaming on Linux ==&lt;br /&gt;
For a quick summary of all the things which make gaming on Linux work, see [[Introduction to gaming on Linux]].&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=473</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=473"/>
		<updated>2026-02-16T21:11:30Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center;margin-top:0.4em&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[rpm-ostree layering vs flatpaks]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=472</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=472"/>
		<updated>2026-02-16T21:11:15Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center;margin-top:0.7em&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[rpm-ostree layering vs flatpaks]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=471</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=471"/>
		<updated>2026-02-16T21:11:00Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[rpm-ostree layering vs flatpaks]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=470</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=470"/>
		<updated>2026-02-16T21:08:36Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[rpm-ostree layering vs flatpaks]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=MediaWiki:Mainpage-title-loggedin&amp;diff=469</id>
		<title>MediaWiki:Mainpage-title-loggedin</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=MediaWiki:Mainpage-title-loggedin&amp;diff=469"/>
		<updated>2026-02-16T21:08:26Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=MediaWiki:Mainpage-title&amp;diff=468</id>
		<title>MediaWiki:Mainpage-title</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=MediaWiki:Mainpage-title&amp;diff=468"/>
		<updated>2026-02-16T21:08:16Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: Created blank page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=467</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=467"/>
		<updated>2026-02-16T20:23:35Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[rpm-ostree layering vs flatpaks]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=466</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=466"/>
		<updated>2026-02-16T20:23:24Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;p style=&#039;text-align:center&#039;&amp;gt;&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[rpm-ostree layering vs flatpaks]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=465</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=465"/>
		<updated>2026-02-16T20:22:10Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[rpm-ostree layering vs flatpaks]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=464</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=464"/>
		<updated>2026-02-16T18:30:03Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem;text-align:left;|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[rpm-ostree layering vs flatpaks]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=463</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=463"/>
		<updated>2026-02-16T14:20:55Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=of Pengwings|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[rpm-ostree layering vs flatpaks]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=462</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=462"/>
		<updated>2026-02-16T14:20:17Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Countdown|time=2026-02-04 00:00|expired=Expired|outro=since I switched to Fedora|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[rpm-ostree layering vs flatpaks]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
	<entry>
		<id>https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=461</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pengwings.theleruby.com/index.php?title=Main_Page&amp;diff=461"/>
		<updated>2026-02-16T14:18:42Z</updated>

		<summary type="html">&lt;p&gt;Theleruby: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&amp;quot;And the last thing you might expect to see here... is pengwings.&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Countdown|time=2026-02-04 14:26|expired=Expired|outro=since I switched to Fedora|class=rubytimer|since=1|hide-time=yes|style=font-size:1.2rem|intro-style=display:inline-block;|outro-style=display:inline-block;|digit-style=|digit-value-style=display:inline-block;font-size:2rem;padding-right:6px|digit-label-style=display:inline-block}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
I&#039;m a software developer with 15+ years of coding experience, but that&#039;s almost entirely on Windows. I also love playing video games (particularly older/retro ones).&lt;br /&gt;
&lt;br /&gt;
My exposure to non-Windows operating systems is limited. I did do some Mac development in the early 2010s and hated it. I&#039;ve also used Ubuntu Server to run many of my various web servers since the mid-2000s, but I only learned essential stuff for server maintenance (I can use apt, vim, Apache and Docker and that&#039;s pretty much it). My desktop Linux experience has mostly been just running various versions of Ubuntu in a VM for short term use to prat about and/or browse web pages using a VPN, nothing ever serious.&lt;br /&gt;
&lt;br /&gt;
When I bought a Steam Deck in Spring 2025 I got excited - the Steam Deck is an amazing piece of hardware from a technical perspective, Proton is really good honestly, and gaming on Linux finally looked viable. I wanted to explore the world of desktop Linux too, more seriously this time.&lt;br /&gt;
&lt;br /&gt;
So in February 2026 I started messing around with Fedora Linux as part of a push to learn more Linux stuff. I picked the Fedora Atomic Desktop because the idea really appeals to me and the whole thing just made sense in my brain. For the desktop environment I chose KDE Plasma, I&#039;ve used it before on the Steam Deck and quite liked it, very Windowsy and it&#039;s more familiar to me in visuals or layout than GNOME.&lt;br /&gt;
&lt;br /&gt;
Eventually I want to move away from Windows permanently, because Windows continues to get worse every release and all the new AI integrations are kinda the straw that broke the camel&#039;s back. Windows frankly just sucks now. The point of this experiment is just to try running Fedora as my daily driver for a few months and see how things go, learning as much as I can along the way. If things go well then I&#039;ll stick with it longer, if not then back to Windows I guess...&lt;br /&gt;
&lt;br /&gt;
So anyway, I hereby introduce &#039;&#039;&#039;Pengwings&#039;&#039;&#039;, a wiki which contains random documentation for various Linux things I had to work out. I wanted to document it so that I can refer back to my notes in future if I need to. I guess now I&#039;m also sharing my exploration with others. If you&#039;re a techy Windows user looking to move to Linux, there might be something here you find useful. Who knows.&lt;br /&gt;
&lt;br /&gt;
Documentation is for Fedora Kinoite (KDE Atomic Desktop) and Universal Blue derivatives. Some alteration might be needed for other distros depending on what the thing is.&lt;br /&gt;
&lt;br /&gt;
== Understanding stuff ==&lt;br /&gt;
* [[Quick introduction of all the main things]] (Linux vs KDE Plasma vs Red Hat vs Fedora vs Universal Blue vs Aurora/Bazzite/Bluefin)&lt;br /&gt;
* [[Atomic Desktops introduction]]&lt;br /&gt;
* [[Linux directory structure]]&lt;br /&gt;
&lt;br /&gt;
== General how-to guides ==&lt;br /&gt;
* Dvorak keyboard bodge: https://github.com/Theleruby/dvorak-lock&lt;br /&gt;
* [[Automatically mount NTFS volumes as read-only]]&lt;br /&gt;
* [[Using ldmtool to mount NTFS dynamic mirror]]&lt;br /&gt;
* [[Stop pipewire from automatically adding Sonos Beam soundbar to audio outputs]]&lt;br /&gt;
* [[Make audio sound good]]&lt;br /&gt;
* [[Scroll by single-clicking middle mouse in Chromium]]&lt;br /&gt;
* [[Convert putty ppk to openssh]] (using puttygen from bottle)&lt;br /&gt;
* [[Access other ttys]]&lt;br /&gt;
* [[Allow WebGPU on Electron applications]] (e.g. FVTT Desktop Client)&lt;br /&gt;
* [[Make yt-dlp easy to use]]&lt;br /&gt;
&lt;br /&gt;
== KDE ==&lt;br /&gt;
* [[Fix application having generic X11/Wayland icon in title bar]]&lt;br /&gt;
&lt;br /&gt;
== Fedora ==&lt;br /&gt;
* [[Discord PTB install script]] (also needs to be run to update if it becomes outdated)&lt;br /&gt;
* [[Software not using Dolphin open/save file picker]]&lt;br /&gt;
* [[Mercurial on Fedora]]&lt;br /&gt;
&lt;br /&gt;
== Atomic Desktop ==&lt;br /&gt;
* [[rpm-ostree layering vs flatpaks]]&lt;br /&gt;
* [[Writeable directories preserved during updates of Atomic Desktop]]&lt;br /&gt;
* [[Fix corrupt etc files stopping system from booting]]&lt;br /&gt;
* [[How to use rpm-ostree]]&lt;br /&gt;
* [[How to add user to system group]] (what to do instead of usermod -aG)&lt;br /&gt;
&lt;br /&gt;
== Universal Blue ==&lt;br /&gt;
This stuff is specific to Universal Blue atomic images and not applicable to base Fedora&lt;br /&gt;
* [[Enroll ublue secure boot key]]&lt;br /&gt;
* [[Add Windows to the grub menu and increase grub timeout]]&lt;br /&gt;
* [[Install JetBrains IDEs]]&lt;br /&gt;
* [[Unbreak pip so it can install most Python packages in venv correctly without having to use Distrobox or Toolbx]]&lt;br /&gt;
&lt;br /&gt;
== Gaming ==&lt;br /&gt;
* [[Introduction to gaming on Linux]]&lt;br /&gt;
* [[Running Windows games via Proton without going through Steam or Lutris]]&lt;br /&gt;
* [[Proton 10 window size bug]]&lt;br /&gt;
* [[Run a game using gamescope]]&lt;br /&gt;
* [[FluidSynth as a background service]] (required if you need MIDI support in any of your Wine/Proton software)&lt;br /&gt;
* [[Script to restart Pipewire if it starts bugging out]]&lt;br /&gt;
* [[Tell SDL to use Wayland and Pipewire]]&lt;br /&gt;
* [[Run game with mangohud]]&lt;br /&gt;
* [[OBS game capture]]&lt;br /&gt;
&lt;br /&gt;
==== Game-specific pages ====&lt;br /&gt;
* [[Old School RuneScape]]&lt;br /&gt;
* [[OpenTTD Windows Version]]&lt;br /&gt;
* [[Thelecraft]]&lt;br /&gt;
* [[Warcraft III]]&lt;br /&gt;
* [[World of Warcraft]]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
* [[OpenTTD in CLion devcontainer]]&lt;br /&gt;
&lt;br /&gt;
== Criticisms ==&lt;br /&gt;
Bugs, obvious missing features, design decisions that I found weird, etc&lt;br /&gt;
* [[Desktop environment bugs]]&lt;br /&gt;
* [[Questionable design choices]]&lt;/div&gt;</summary>
		<author><name>Theleruby</name></author>
	</entry>
</feed>