My Sway Dotfiles: A Complete Wayland Desktop in One Command
A keyboard-driven Sway + Waybar setup themed with Catppuccin Mocha, with a safe installer that backs up your old configs and can undo itself
A tiling window manager is easy to install and slow to finish. Sway itself takes a minute. The bar, the launcher, the lock screen, notifications, screenshots, clipboard history, idle handling and the volume pop-ups take the next few weekends.
I've packaged all of that into one repository so the whole desktop comes up with a single command:
repo.unix3r.com/unix3r/dotfiles
It's Sway, Waybar, Wofi, Foot, Kitty, Mako, Swaylock, Swayidle, Wlogout, Gammastep and Swappy, all themed with Catppuccin Mocha, and it installs on Ubuntu/Debian, Arch and Fedora.
Quick start
That installs the packages, downloads JetBrainsMono Nerd Font, and symlinks every config into /.config. Log out, pick Sway on the login screen, and log back in.
If you'd rather see what it does first:
This prints every step and changes nothing.
What you get
One theme everywhere. Catppuccin Mocha across sway, waybar, wofi, both terminals, notifications and the lock screen. The palette uses the same colour names in every file, so changing a colour is a search-and-replace.
A modular sway config. Instead of one long file, the config is split into config.d/: appearance, input, outputs, keybindings, modes, rules, bar and autostart. You open the file for the thing you want to change and nothing else.
A bar that does real work. Waybar runs as a floating pill with workspaces, media player, calendar clock, weather, a CPU module that expands on hover into RAM, temperature and disk, plus volume, brightness, network, bluetooth, battery, an update counter, caffeine, night light, Do Not Disturb, tray and power. Most modules respond to click, right-click and scroll.
A built-in cheat sheet. Super + / opens a searchable list of every keybinding. It's generated from the config itself: put a #: description comment above a bindsym and it shows up in the list, so the cheat sheet never goes out of date.
The small tools you'd otherwise script yourself:
Screenshots of an area, the screen or the focused window, copied to the clipboard and saved, with optional annotation in swappy
Clipboard history for text and images (Super + Shift + V)
Emoji and symbol picker with around 1900 entries (Super + .)
Colour picker that puts the hex value in your clipboard (Super + Shift + P)
Volume and brightness pop-ups that replace each other instead of stacking
Wallpaper switcher that remembers your choice across reboots
Quake-style drop-down terminal (Super + )
Idle handling that dims, locks, then turns the screens off, and stays out of the way while a video is fullscreen
An installer that can undo itself
Running someone else's dotfiles usually means overwriting your own. This installer doesn't:
Anything already in /.config/<app> is moved to /.local/state/dotfiles/backups/<date>/ before a symlink is created.
./install.sh --uninstall removes the symlinks and restores your latest backup.
./install.sh --check lists any required program that's missing.
You can link only the parts you want: ./install.sh waybar mako.
Because the configs are symlinks into the repo, updating is short:
Keybindings worth knowing first
| Keys | Action |
|---|---|
| Super + Enter | Terminal |
| Super + D | App launcher |
| Super + Q | Close window |
| Super + / | Keybinding cheat sheet |
| Super + H J K L | Move focus |
| Super + 1 … 0 | Switch workspace |
| Super + R | Resize mode |
| Print | Screenshot an area |
| Super + Escape | Lock screen |
Everything else is in the cheat sheet and the README.
Making it yours
Machine-specific settings go in config/sway/config.d/99-local.conf. The file is git-ignored and loaded last, so it overrides everything else and survives git pull:
Two things to set on day one:
1. Night-light location. Put your own lat / lon in gammastep/config.ini.
2. Weather city. Set WEATHERLOCATION and WEATHERUNITS in /.config/environment.d/weather.conf.
After editing, Super + Shift + C reloads sway, and waybar and mako reload with it. make lint checks the sway config for errors before you find them the hard way.
If something doesn't work
The README has a troubleshooting section for the usual suspects: icons showing as boxes (the Nerd Font isn't installed), screen sharing, volume and brightness keys, the wrong temperature sensor, NVIDIA, and sway not starting.
Get it
The repository is at repo.unix3r.com/unix3r/dotfiles. Fork it, copy the parts you like, or take just the scripts. If you only want one piece, the installer will link a single module and leave the rest of your setup alone.