I did not start this because I wanted a screenshot for /r/unixporn. I wanted to stop moving windows around manually. That was basically the entire plan. Four days later I have Hyprland, Waybar, Rofi, custom battery logic, a terminal file manager, several small helper scripts, a reproducible installer and documentation explaining how to rebuild the whole thing from scratch. So that went well.
I have been using Fedora Workstation with GNOME and I still like GNOME.
The problem was not that GNOME suddenly became bad. I simply wanted to experiment with a workflow built more around the keyboard, automatic window placement and workspaces.
The goal was also not to transform my desktop into a transparent animated spaceship dashboard consuming half the GPU just to display a terminal.
I wanted something:
and still reasonably close to normal Linux applications instead of a desktop that requires a six-month apprenticeship to understand.
So I started configuring Hyprland.
The biggest change is surprisingly simple: windows arrange themselves. Open one application, then another, and the screen splits automatically. Open a third and the layout adjusts again. Switching workspaces, moving windows between them and going fullscreen quickly becomes something I do without thinking about where each window should physically sit.
After learning maybe a dozen shortcuts, manually dragging windows around starts feeling strangely inefficient.
My most common ones are basically:
That last one may be the most important.
The desktop is built from fairly normal pieces.
- Hyprland handles the compositor and window management.
- Waybar is the bar.
- Rofi launches applications and provides a few menus.
- SwayNC handles notifications.
- Kitty is the terminal.
- Bash, fzf and tmux cover the shell side.
- Thunar remains my normal graphical file manager, while Yazi has become the terminal alternative to Midnight Commander.
- Hyprlock and Hypridle take care of locking and idle behaviour.
- Grim, Slurp and Satty handle screenshots.
- Waypaper and Hyprpaper deal with wallpapers.
There are also a few small scripts for things such as display switching, public IP information, battery warnings, screenshots and menus. That sounds like a lot when written as a paragraph. In practice each thing does one small job and then shuts up. Which is generally how I prefer software.
I also deliberately avoided some of the usual rice temptations.
- No blur.
- No ridiculous transparency.
- No animated wallpaper consuming enough electricity to qualify as home heating.
There are rounded corners, small shadows, a colour scheme I like and enough animation to make the desktop feel smooth.
That is enough.
Of course, changing the desktop environment is never just changing the desktop environment. My laptop has a high-resolution display, which means fractional scaling, Wayland, XWayland applications, virtual machines using SPICE and several GUI toolkits all having their own interpretation of what “scale this correctly” apparently means.
None of this is particularly unique to my laptop. Search the issue trackers around Wayland, fractional scaling, XWayland and virtual machine display resizing and you will not exactly find an empty room.
Most things worked immediately. Some required small workarounds.
The important part for me was not to build increasingly complicated workarounds on top of increasingly complicated workarounds until the desktop required a Kubernetes cluster to launch Calculator.
One interesting side effect was improving my x-resize project. I originally wrote it to make dynamic resizing of Linux guests under virt-manager/SPICE less painful. Working on the Hyprland setup exposed more edge cases around HiDPI host scaling, guest resolution changes and resize events. So the desktop project somehow also became another x-resize development session, which was not part of the original plan but ended up being useful.
The result is that my host can stay at its proper native resolution and scaling, while virtual machines remain at sane guest scaling and x-resize handles the changing resolutions. This solved more annoyance than changing another twenty compositor settings ever would.
Once the desktop stopped being a configuration project for five minutes, I started noticing why people like tiling window managers. It is not really about the appearance. It is about not thinking about window placement. I can have a browser, terminal and notes on one workspace. Burp, terminals and documentation on another. A virtual machine somewhere else. Music, chat or random background applications somewhere I do not currently care about. Switching context becomes:
instead of searching through overlapping windows and discovering that the thing I wanted is underneath four other things because apparently window archaeology is a user interface paradigm. I still use floating windows when I want them, and the mouse has not been confiscated either. I simply need it much less.
For now. I am currently running Hyprland next to GNOME and keeping GDM as the login manager. This is intentional. If some future update turns Hyprland into modern art five minutes before I need the laptop for something important, I can select GNOME and continue working. I call this a fallback strategy. Others may call it cowardice. I can live with both interpretations.
I want this setup to survive at least the Fedora 45 and Fedora 46 upgrades before I consider removing GNOME completely. If it survives both without becoming a recurring repair hobby, I will probably switch the machine fully to the lighter login stack and finally let GNOME retire. Until then it costs me some disk space and gives me a very convenient emergency exit, which seems like a good trade.
This whole thing took around four days, working on it for a few hours each day. Without AI assistance I suspect it would have turned into two weeks of documentation, issue trackers, forgotten configuration syntax, random GitHub comments from 2023 and me wondering why a Lua expression that looked perfectly reasonable had just killed the session. AI did not decide how I wanted the desktop to work. That part still required actually using it. I would change something, test it, decide I hated it, change it again, discover an edge case and then realise that fixing it had created another one. Very advanced engineering.
Where AI helped enormously was iteration speed.
- Generating small scripts.
- Comparing configuration approaches.
- Finding why something behaved differently under Wayland.
- Cleaning up configs.
- Turning temporary experiments into something reproducible.
- Checking that I had not forgotten half the environment after four days of changing it.
This is exactly the kind of work where AI is useful: lots of small technical decisions with immediate feedback from a real system. It is also perfectly capable of confidently suggesting configuration for a version of a tool that you do not actually have. So testing remains a feature.
Once the desktop reached the point where I liked using it, I collected the entire current state and built myself an installer and a manual. The installer recreates the Hyprland environment either next to an existing Fedora Workstation/GNOME installation or on a cleaner Fedora system.
I am not publishing it as some new Hyprland distribution. The world will survive without another opinionated dotfiles repository called something like HyperMegaRiceOS. It exists because if I reinstall this laptop in two years, I do not want to reconstruct four days of decisions from shell history and vague memories.
The installer handles the desktop. My other workstation-specific things — NAS mounts, backups, Syncthing, SSH aliases, virtualization, YubiKey helpers and similar archaeological layers — remain documented separately. Those are exactly the things I may want to rethink during the next clean installation instead of blindly restoring decisions made by previous me. Previous me has caused enough incidents already.
The one thing still missing is games. Desktop applications behave nicely, but games occasionally have more creative opinions about fullscreen, focus, monitor selection, launch options and how they want to interact with the rest of the session.
So the next small project is HyprPlay, a lightweight launcher around my game setup. The idea is not to replace Steam or build another gaming platform. I just want one predictable place to handle the Hyprland-specific workarounds some games need while leaving games that already behave properly completely alone.
That will remain a separate project, because this one has already escaped far enough from the original idea.
The configuration phase is mostly finished, which means the real testing finally begins.
- Daily work.
- Virtual machines.
- Pentesting.
- Photography.
- Random tools.
- External monitors.
- Docking and undocking.
- Updates.
- Suspend and resume.
All the boring normal things that reveal whether a desktop configuration is actually good or merely looked good for twenty minutes while I was configuring it. I fully expect to change more things, probably quite a few of them, but the important part is that the basic workflow already feels faster and more natural than what I was doing before.
- Windows arrange themselves.
- Workspaces keep contexts separated.
- The keyboard handles most navigation.
- The desktop stays lightweight.
And if everything explodes, GNOME is one login away. For now.
Four days of ricing Fedora and somehow I did not install Arch.
Apparently it is possible.