Personal Arch Linux desktop configuration for Hyprland, Ghostty, Neovim, Starship, Waybar, Waypaper, Rofi, Zsh, GTK, VS Code, btop, cliphist, hypridle, hyprlock, snappy-switcher, satty, and keyd.
This repo is Arch-specific. It reflects the package names, filesystem layout, and desktop tooling used on the live Arch machine it configures.
The repo is structured to mirror the live filesystem paths so the active machine can use symlinks directly.
Launcher cleanup is handled with local desktop-entry overrides in ~/.local/share/applications/ so unwanted system apps can be hidden from Rofi without modifying the system package files.
- theme: Catppuccin Mocha
- config path:
~/.config/btop/btop.conf - custom themes live in
~/.config/btop/themes/
Neovim is configured as a small personal setup, not a full distribution.
- plugin manager:
lazy.nvim - theme: Catppuccin Mocha
- editor stack: Treesitter, native LSP,
blink.cmp,snacks.nvim - language servers are expected to come from normal packages on
$PATH - plugin versions are pinned in
lazy-lock.json
- settings path:
~/.config/Code/User/settings.json - editor font:
NotoSansM Nerd Font Mono - theme:
Catppuccin Frappé - icon theme:
catppuccin-frappe - Catppuccin italics are disabled via the theme's own settings
Wallpaper selection uses waypaper as the browser/picker UI and hyprpaper as the actual wallpaper daemon.
waypaperis configured withbackend = hyprpaper- selecting a wallpaper talks directly to
hyprpaper waypaperruns apost_commandthat immediately syncs the chosen wallpaper into bothhyprpaper.confandhyprlock.conf- startup uses
hyprpaperdirectly from the syncedhyprpaper.conf, notwaypaper --restore hyprpaper.confmust includeipc = on- the live wallpaper chooser is the source of truth, and the repo-managed configs are updated to match it
- GTK icon theme:
Papirus-Dark Papirus-Darkis set in both GTK config files and in live GNOME/Cinnamon desktop settings- Rofi icons are enabled and use
Papirus-Dark snappy-switcheris configured to usePapirus-Dark- Reversal was tried and removed; do not reinstall it unless there is a specific reason
- full-width top bar, not floating pills
- center clock uses
Geist - right side order is: network, volume, tray, power profile, battery, power
custom/power-profileis the power mode control- click the profile icon to choose
performance,balanced, orpower-saver - scroll the profile icon to cycle modes
- battery is icon-only and uses color for warning / critical / charging states
- power opens the Rofi power menu
cliphiststores clipboard historywl-paste --watch cliphist storeis used to feed itSuper+Yopens a Rofi-based clipboard picker
snappy-switcheris the active Alt-Tab replacement- the live setup is intentionally patched to use
Ctrlrelease instead of upstreamAltrelease - Hyprland binds are:
Ctrl+Tab-> nextCtrl+Shift+Tab-> previous
- the patch is stored at
patches/snappy-switcher-ctrl-release.patch - the packaged wrapper expects
/usr/local/bin/snappy-switcher, so Hyprland starts it with:env SNAPPY_BINARY=/usr/bin/snappy-switcher snappy-wrapper
- an AUR reinstall or upgrade will overwrite the local binary patch, so reapply the stored patch when updating the package
Reapply flow after an upgrade:
yay -G snappy-switcher
cd snappy-switcher
patch -p1 < ~/dotfiles/patches/snappy-switcher-ctrl-release.patch
makepkg -siSuper+Llauncheshyprlockhypridleautostarts and currently:- locks after 10 minutes
- turns displays off after 15 minutes
- locks before sleep
hyprlockuses native fingerprint auth- the lockscreen is a bottom-anchored centered stack with:
- time
- date
- input field
- fingerprint prompt
hyprlockwallpaper is kept in sync with the main Hyprland wallpaper
Printusesslurp + grim + satty- drag a region with
slurp - annotate or save in
satty - screenshots are saved under
~/Pictures/Screenshots/
The keyboard remapping is intentional and is meant to approximate Mac-style shortcut ergonomics on a Linux laptop with a more Windows-like physical layout.
Left Altis used as the primary shortcut key because it sits immediately to the left of the spacebar, which is whereCmdmuscle memory expects to live.Left Ctrlis repurposed as the fallback physicalAltso Linux and application-specificAltshortcuts are still available.- The goal is not a naive modifier swap. The goal is to preserve Mac-like copy/paste, tab, and selection ergonomics while still keeping Linux usable.
- Terminal behavior is handled separately in Ghostty because terminal shortcuts and GUI shortcuts have different expectations.
After changing keyd:
keyd check ~/.config/keyd/default.conf
sudo keyd reloadThen verify:
- GUI app:
Left Alt-C,Left Alt-V,Left Alt-T,Left Alt-W - Text field:
Left Alt-Left,Left Alt-Right,Left Alt-Up,Left Alt-Down - Selection:
Left Alt-Shift-Left,Left Alt-Shift-Right,Left Alt-Shift-Up,Left Alt-Shift-Down - Ghostty after full restart: selected text +
Left Alt-C, prompt +Left Alt-V
For raw event debugging:
sudo keyd monitor -tRun:
./scripts/link.shThis will recreate the user-level symlinks on the target Arch system. The keyd system symlink still requires sudo.