Building Your Own Desktop Shell
On Windows, the taskbar is the taskbar. You get a few settings, and that's the end of it. Coming to Linux, the thing that genuinely surprised me is that the desktop shell is just software you can replace — the bar, the panels, the notifications, the widgets, all of it. So I did. This page isn't a step-by-step (my shell is a personal project), it's a tour of what's actually possible, in case it gives you ideas.
Quickshell — a shell you write yourself
Quickshell is a framework for building desktop shell components in Qt/QML on Wayland. You write QML, and it draws real desktop surfaces — top/side bars, slide-in popups, on-screen displays, overlays — as layer-shell windows on your compositor. It's the modern, scriptable answer to "I want my desktop to work my way."
You don't have to start from a blank file, either. There are polished community shells you can run as-is or fork — I based mine on caelestia. If you just want a beautiful custom desktop without writing QML, installing one of those is a perfectly good destination on its own.
I run mine on Nobara (KDE Plasma / KWin, Wayland). My shell is called Lumen — a thin left-hand bar with drawer panels that slide out from the edges, and the whole thing recolors itself to match my wallpaper. Everything below is stuff it does, to show the range of what a custom shell can be.
What a custom shell can do
Theming that follows your wallpaper. Using Material You color generation (via matugen), the entire shell re-themes from whatever wallpaper is up — even sampling a frame from a live video wallpaper. Change the wall, the desktop's accent colors change with it.
A real dashboard. A slide-out panel with system stats and performance rings, a clock with stopwatch / countdown timers / alarms, and quick notes — the "glanceable" surface Windows never really gave you.
An app launcher and favorites. Fuzzy app search bound to the Meta key, plus a separate favorites grid — summoned by keyboard, dismissed by clicking away.
Notifications on your terms. Custom per-app rules (different emoji, color, and sound per app, and letting important ones bypass Do-Not-Disturb), a history panel, and — my favorite touch — notifications that automatically hide while you're screen-sharing, so nothing embarrassing pops up on stream.
Summonable mini-tools, each on its own global shortcut, each a little popup bubble:
- A calculator that also does unit conversions and live currency (backed by
qalc). - A timezone converter that handles the "6am Chicago in my time" question — and gets the UTC±N sign right, which even Google fumbles.
- QR from clipboard — copy a link, hit the shortcut, scan it off your screen.
- A color-picker eyedropper (native Wayland portal) with HEX/RGB/HSL and history.
- Urban Dictionary and translate lookups.
- Synced, karaoke-style lyrics for whatever's playing (pulled from LRCLIB, highlighting the current line).
A drag-and-drop file converter. Drop an audio/video/image file from the file manager onto a drawer, tap a target format, and it writes the converted file right next to the original (ffmpeg and ImageMagick under the hood).
A game launcher with cover art — a grid of your Steam and non-Steam games (artwork from SteamGridDB), launched straight from the desktop.
Local AI, no cloud required. An OpenAI-compatible chat panel with image input, plus push-to-talk voice input that runs fully offline on the GPU via whisper.cpp — about 0.4 seconds to transcribe an utterance, with nothing leaving the machine.
How it hangs together
A couple of ideas that made the whole thing pleasant to live with:
- Everything is keyboard-summoned. Each panel and tool has a global shortcut, so the desktop is mostly invisible until you call a piece of it. (On current KDE Wayland, the tidy way to register those shortcuts turned out to be
.desktopfiles rather than the System Settings GUI — a small rabbit hole of its own.) - Many small pieces, not one monolith. Running the bar, the chat popup, the tools, etc. as separate processes means a crash in one never takes down the others — the taskbar stays up even if a panel falls over.
The takeaway
Even if you never write a line of QML, the point stands: on Linux your desktop is yours to reshape. You can tweak KDE or GNOME to taste, install a ready-made custom shell like caelestia, or — if you catch the bug like I did — build the exact desktop you always wished you had. That freedom, more than any single app, is what made switching from Windows feel worth it.