Most people don’t think about their desktop as something you can change. Windows manages your windows. macOS puts the dock somewhere. You drag things around. That’s that.
On Linux, none of that is fixed. The thing that draws your windows, handles your taskbar, decides how you switch between apps — it’s just a program. You can swap it out, or configure it yourself.
This post isn’t “Linux is better.” Here’s what’s possible and what it looks like in practice.
Hyprland
The centerpiece is Hyprland, a tiling window manager. If you haven’t used one, the concept takes five minutes to understand and then it’s hard to go back.
In a normal desktop, windows float. You resize them, drag them, snap them to sides. In a tiling manager, windows arrange themselves. Open a terminal, full screen. Open a second, split in half. Open a third, thirds. Every pixel is used, nothing overlaps, and you move between them with the keyboard.
It sounds rigid. In practice, you stop thinking about window placement. The layout just happens. You think about your work instead.
Hyprland runs on Wayland (the modern display system) and is smooth with good performance. Everything—every keybinding, animation, behavior—is in a plain text config file.
Pywal
One of the cooler parts: Pywal. It looks at your wallpaper, extracts colors, and applies them everywhere—terminal, status bar, window borders, app launcher. Change the wallpaper, the whole system recolors itself.
It’s not just cosmetic. The desktop feels visually coherent without manual work. Pick an image, run one command, everything updates.
The Tools
Here’s what actually runs day-to-day:
Kitty — GPU-accelerated terminal. Scrolling through thousands of lines of logs never stutters. Bonus: it displays images inline, which matters for the file manager below.
Zsh + Starship — Starship shows your directory, git branch, unstaged changes, language runtime. Small things, but they remove a lot of git status reflexes.
Yazi — A terminal file manager. Three-column layout, navigate with h/j/k/l, previews files as you move. Text files show syntax-highlighted content. Images render inline via Kitty. PDFs, videos, archives — all previewed without opening anything. When you quit, your shell follows you to wherever you were.
Zoxide + fzf — cd is tedious. Zoxide tracks which directories you visit and weights them by frequency. After a few days, j dot jumps straight to ~/dotfiles. Pair it with fzf and you get a fuzzy jump menu in under a second.
Zellij — Terminal multiplexer. Split panes, persistent sessions. You close your laptop, come back the next morning, reattach, and everything is exactly where you left it—server still running, logs still scrolling. Once you use it, a single terminal window feels wasteful.
Neovim (LazyVim) — A text editor operated almost entirely through keyboard shortcuts. No mouse, no menus. The learning curve is steep but the ceiling is high. LazyVim gives you LSP, fuzzy file finding, git integration, and syntax highlighting out of the box.
Zathura — PDF viewer controlled by keyboard. Open a slide deck, navigate with j/k, search with /. No mouse, no toolbar.
Aerc — Email in the terminal. Sounds like a joke until you realize how much calmer it is without a browser tab competing for your attention.
eza, bat, ripgrep, delta — Modern replacements for ls, cat, grep, and git diffs. Colored output, icons, syntax highlighting, way faster. They don’t change what you type. They just make the output worth reading.
The Status Bar
Waybar shows active workspace, window title, CPU, network, volume, brightness, clock. Every element is positioned and formatted in a config file. Add a weather widget? Add a module. Remove the clock? Delete a line.
Nothing is decided for you. Nothing is mysterious. It’s all text files.
What If It Breaks?
Arch has a reputation for being fragile. It can break, and you’re more responsible for fixing it than on Ubuntu or macOS. That’s a real tradeoff.
The upside: when something breaks, you understand why. This setup includes an install.sh script that automates everything — packages, config files, symlinks via GNU Stow. Fresh Arch install to fully working desktop takes under 20 minutes.
The full configuration is on GitHub if you want to look through the files.