Skip to content

🇺🇸 Fedorion: a fedora custom theme

TL;DR

turned my brand-new Zenbook into Fedorion (Fedora + Orion): a minimalist KDE Plasma desktop themed as a silent spaceship drifting through the cosmos.

  • Rules of the game: battery life over eye candy, dark tones for the OLED screen, a retro-futuristic look with pixel art, and a bit of Asimov and 2001.
  • Palette: generated with Claude[1], sanity-checked on Coolors (deep space black, midnight blue, stellar cyan, nebula violet).
  • Under the hood: a full Plasma Color Scheme, plus a Kvantum theme (KvArcDark) whose hard-coded colors had to be overridden, or the palette gets ignored.
  • Look and feel: Tela icons, Bibata cursor, a lightly tweaked native dock.
  • Wallpapers: a space background generator fed with my palette, rotating every 20 minutes through a systemd timer (cron can't do it under Wayland).
  • Login / desktop / lock: boarding, flight, chilling in the ship.
  • Extras: four virtual desktops named after Asimov planets, and a Konsole with Oh-My-Zsh, p10k and a random lolcat ASCII banner.

Spoiler: p5.js failed, I'm a lazybones, and I did it anyway. Because I can.

Intro

I've been a Fedora user with KDE Plasma as my desktop environment for about a year. When I installed Fedora in dual-boot on my Vivobook, I decided to use a portmanteau as my username: Fedorage, a contraction of Fedora and Rage. Back then I hadn't tried to customize the OS all that much: a nice ASCII art in the .zshrc, a ready-made theme, a few tweaks to the dock, and nothing more.

Buying a new PC at the beginning of September gave me the excuse to experiment a bit more with what my OS can do in terms of customization.

Initial vision

Happy with my Asus Vivobook, I decided to keep trusting the brand by going for the Zenbook 14, with a bit more RAM, a bit more storage, a chip built for AI, and a beautiful OLED screen.

The PC has a futuristic look, you could believe it was made of the same material as the famous monolith from 2001: A Space Odyssey. I have no trouble picturing it sailing through the cosmos, cleaving space in search of its next encounter. That seems to lay the foundations of the theme to come: a space voyage.

Of course, this has to come with a brand-new, unheard-of portmanteau, which will give substance to the whole thing.

And so Fedorion, Fedora + Orion, was born.

A few rules

The broad lines of my desktop customization are as follows: I'm trying to build something minimalist, that gives the feeling of navigating through space and contemplating its depth, aboard a clean, silent ship.

Constraints were set upfront:

  • Performance/battery ratio takes priority over aesthetics. The laptop's battery life is to be favored, so we rule out any heavy effects (animated wallpaper in particular), favor dark tones (with an OLED screen, the blacker a pixel, the less it consumes) and disable a number of power-hungry effects (Wobbly Windows, Magic Lamp, reduced blur)
  • A proud taste for a retro AND futuristic vision. Pixel art becomes central.
  • Cultural affinities with certain sci-fi works: Asimov's univers and "2001: A Space Odyssey" in particular.

I'm Matrixed by 2001, my Obsidian Vault is called HAL. But in this project, the only thing that is 2001's oriented is the profile picture.

The palette

I'm certainly a man of taste, but probably a peculiar one, since my graphic proposals have mostly been rejected or reworked, across all the projects where I've had a say, professional and personal.

So I decided to generate my theme's palette through Claude first. Being stuffed with all the knowledge of what I call the Colormagic of this world, it will surely be better than me at generating a progressive and relevant palette.

Colormagic is the branch of witchcraft that lets you match colors with one another without any faux pas of taste. As a muggle, I have none of it. As a Frenchman, I'm a disgrace to my fellow countrymen for having none of it.

I still take the time, as a second step, to check that the palette suits my taste with a tool I'm fond of: coolors.

Next step: applying this palette to the system.

System palette: the Plasma Color Scheme

To dress up a KDE desktop, there are two things to tell apart. The Color Scheme says which colors to use: background, text, selection, links. The style decides how those colors are drawn: rounded corners or not, flat buttons or raised ones, and so on. We start with the colors.

I write (understand "have Claude write", because I'm a big lazybones) a Fedorion.colors file, which translates the previous palette into KDE's format. Every group is filled in (windows, buttons, selection, tooltips, views), and not only the two or three that jump out at you. Otherwise, applications fall back on default colors for everything that isn't defined, and the whole thing ends up looking disgusting.

A bit of documentation to understand what a .colors file contains:
https://develop.kde.org/docs/plasma/theme/theme-details/
https://api.kde.org/kcolorscheme.html

Then all that's left is to apply the scheme to the whole system:

mkdir -p ~/.local/share/color-schemes/
cp Fedorion.colors ~/.local/share/color-schemes/
plasma-apply-colorscheme Fedorion

Qt and Kvantum

Qt (pronounced "cute") is a framework for developing graphical interfaces, born in the 1990s. All of KDE Plasma is built on it: Dolphin, Konsole, System Settings. To keep it simple, Qt widgets (buttons, menus, scrollbars) are actors who don't do their own makeup. They delegate their appearance to a "style", which plays the role of costume designer. Under KDE, the default style is called Breeze.

Kvantum is a highly customizable alternative style, developed by Tsu Jan. Its rendering relies on two files:

  • an SVG file, which draws the shapes;
  • a configuration file, which sets the colors, spacing and transparency.

Kvantum: picking a base, then getting trapped

Rather than creating a theme from scratch (I have neither the skills nor the time), I start from an existing theme through the Kvantum manager. My choice falls on KvArcDark, whose overall look suits me. I only touch it for the colors and the transparency.

This choice has a consequence: the shapes live in the theme's SVG. A detail like the corner radius can't be set with a simple number in the configuration, so I leave it as is.

Here's the trap. KvArcDark ships with its own hard-coded colors, in the [GeneralColors] section of its ~/.config/Kvantum/KvArcDark#/KvArcDark#.kvconfig file. Kvantum uses them instead of the Color Scheme we just applied. The .colors file is therefore not enough: this section has to be rewritten with the Fedorion palette.

[GeneralColors]
window.color=#0a0a12
base.color=#0d1b3e
alt.base.color=#0f1426
button.color=#0f1426
light.color=#232a45
mid.light.color=#171d33
dark.color=#05050a
mid.color=#0c0e1a
highlight.color=#4fc3f7
inactive.highlight.color=#3f7fa3
text.color=#e8f4fdc8
window.text.color=#e8f4fdc8
button.text.color=#e8f4fdc8
disabled.text.color=#e8f4fd73
tooltip.text.color=#eaf7ff
highlight.text.color=#0a0a12
link.color=#4fc3f7
link.visited.color=#b18aff
progress.indicator.text.color=#0a0a12

Icons, cursor and dock

In the same way that building a 100% custom Qt theme is impossible for me for lack of skills and time, creating a custom icon set and cursor is set aside. The point here isn't to invent a theme from A to Z, but to choose its constituent elements and assemble them.

So I go with the Tela icon theme, the Bibata-Modern-Classic pack for the pointer, and a light modification of the default native Plasma dock.

These choices support the color theme, deliberately contrasting with it to break the monotony: no deep cosmic blue or violet from some Milky Way's nebula here.

Wallpapers

Rotating desktop wallpaper

I first tried to generate custom backgrounds through a p5.js script, hoping to fully automate a wallpaper rotation, procedurally.

p5.js is a free JavaScript library for creative coding: it lets you draw, animate and generate visuals in a browser with very little code.

The result turned out to be catastrophic. Even searching for snippets online, even iterating like a filthy pig with the AI: it's ugly, unsuitable, dégueulasse.

I had to find something else.

Heads up, a gem!

During my wanderings, I came across this project: https://deep-fold.itch.io/space-background-generator. This is an online generator that lets you make space background images through a customizable 9-shade palette.

So I applied a variation of the Fedorion palette to it, and generated about twenty different wallpapers.

I write a script that randomly picks one of the generated images and applies it via plasma-apply-wallpaperimage. This script, triggered automatically every 20 minutes, gives me a rotating wallpaper, and simulates a semblance of space travel among the stars.

#!/usr/bin/env bash

set -euo pipefail

WALLS_DIR="$HOME/Fedorion/walls/generated"

if [ ! -d "$WALLS_DIR" ]; then
  echo "Dossier introuvable : $WALLS_DIR" >&2
  exit 1
fi

PICK=$(find "$WALLS_DIR" -maxdepth 1 -type f \( -iname '*.png' -o -iname '*.jpg' \) | shuf -n 1)

if [ -z "$PICK" ]; then
  echo "Aucune image trouvée dans $WALLS_DIR" >&2
  exit 1
fi

plasma-apply-wallpaperimage "$PICK"
echo "Fond appliqué : $PICK"

Cron doesn't inherit the graphical environment under Wayland, so it doesn't know which graphical session it's in, and the command that changes the wallpaper fails without displaying the slightest error. A user systemd timer, on the other hand, lives inside the session and has everything it needs.

Login screen

Fedora 44 uses the brand-new Plasma Login Manager (PLM), which doesn't allow full customization. Only the wallpaper and the color theme can be customized.

So I choose to set a static image found on Wallhaven. This pixel art, uploaded by miraclemegalodon, arrives as a complete break from the palette: it shows the console of a spaceship, predominantly gray/lavender.

The reading is as follows: this is the "inside of the ship" before the "outside view of the cosmos" of the desktop.

Maybe I tried beforehand, without success, to find a background in the style of "accelerated stars in Interstellar". Or maybe not. You'll never know.

Lock screen

As for the lock screen, I chose another pixel art depicting the interior of a spaceship on Wallhaven:

This fan art "Metroid Chill" by Pixel Jeff shows Samus chilling to the max in her ship, and bridges the "outside view of the cosmos" of the desktop and the "return to the comfort of the shuttle", corresponding to a lock and the return to the real world.

The final cycle is as follows: login = boarding; desktop = flight; lock = chilling to the max in the space vehicle.

Themed virtual desktops

For a brief moment, I fancied the ambition of building a theme per virtual desktop. It was possible before KDE 5; today it's Activities that allow it. I'm not excluding the possibility of taking on this project sooner or later. But at this precise moment in my exploration of desktop theming, I was struck by a phenomenon as well known as it is inexplicable: a serious case of can't-be-bothered (or as we say in a proper langage: la flemme).

So for now I'm ok with creating 4 desktops, and giving each of them the name of a planet from Isaac Asimov's universe (Foundation series and Robot series), detailed here:

#NameUniverse
1TrantorFoundation
2TerminusFoundation
3HeliconFoundation
4AuroraRobot series

I'm not much of a virtual desktop user for now; I tend to do everything in the same place, regardless of considerations, and I even think compartmentalization is more of a limitation for me than a relevant organizing system.

Still, we can imagine dedicating a different virtual desktop to each use: Trantor for dev? Terminus for cyber? Helicon for writing? Aurora for multimedia and relaxation?

Maybe. I still prefer the happy mess in which I have no trouble finding my way to this day.

The Konsole terminal

First, create 2 files: Fedorion.colorscheme (color palette) and Fedorion.profile (JetBrains Mono 12pt font + reference to the color scheme), to be placed in ~/.local/share/konsole/.
Then, point the console profile at the Fedorion theme, add a bit of transparency, and voilà.

Oh, of course we install Oh-My-zsh with the p10k theme, classic!

And OBVIOUSLY we add a little ASCII art called in the .zshrc with random lolcat, so that the name FEDORION shows up, every time, like a new nebula you'd stumble upon at a turn of a galaxy.

Oh bordel, that's look fabulous.

A custom theme: why bother?

Four reasons:

  • To understand and master your desktop environment. When you come from Windows, you're used to a desktop you accept as is. Dressing up Fedorion taught me that a KDE environment can be taken apart piece by piece: colors, widget style, icons, cursor, wallpaper, login screen and lock screen are independent layers, each with its own file and its own settings. I also understood why a Qt application and a GTK application don't get dressed the same way, why cron can't change a wallpaper, and why Latte Dock didn't survive Plasma 6. You only really remember what you've broken at least once.
  • Because it's pretty. I spend hours in front of this screen, might as well make it pleasant to look at.
  • Don't you have any decorations in your apartment??
  • Because I can.

  1. As a newbie, I worked on customizing my desktop environment with the help of Claude. The use of LLMs is a central topic in our societies, and I believe it's important for everyone to take a stand on how they use them. I'm currently writing a short manifesto that will clarify my position on the use of generative AI, as well as my view on how this field is being monopolized by companies whose interests are manifestly not aligned with the well-being of humanity, and my hope of seeing alternative ways emerge to shape our future with AI. Stay tuned ;)↩︎

Did you enjoy this article?

Recommend it — Standard Reader surfaces well-loved writing to more readers across the network.

Across the AtmosphereDiscussions