Hyprland rice on Arch Linux with Catppuccin Mocha theming across the entire desktop.
| Component | Tool |
|---|---|
| Window manager | Hyprland (Wayland) |
| Terminal | Kitty |
| Shell | Fish with bang-bang, eza aliases, and done notifications |
| App launcher | Hyprlauncher |
| Notifications | Dunst |
| Wallpaper | swww |
| Screenshots | Grimblast |
| Audio mixer | Wiremix (TUI, bound to Super+S) |
| File manager | Nautilus |
| Editors | Zed, Micro |
| System monitor | btop |
Hyprland borders, Kitty, Fish, Dunst, GTK apps, Qt apps (Kvantum), btop, Zed, Micro, Steam (Millennium), Discord (BetterDiscord).
- GTK theme:
catppuccin-mocha-mauve-standard+default - Cursor:
catppuccin-mocha-mauve-cursors - Icons: Papirus-Dark (Dunst), Breeze-Dark (GTK)
- Fonts: JetBrainsMono Nerd Font (terminal/code), Noto Sans (UI)
- game-replay-watcher -- Monitors Hyprland IPC events to detect game windows. Automatically starts gpu-screen-recorder in replay buffer mode when a game launches and stops it when the last game window closes.
- gsr-save-replay -- Saves the current replay buffer (bound to Super+P). Sends a desktop notification on save.
- discord-vc-notify -- Discord bot that sends a desktop notification when someone joins a voice channel you're in.
- game-replay-watcher -- Runs the game detection script as a background service tied to your graphical session.
Steam with Millennium UI theming, Gamemode, Gamescope, MangoHud overlay, ProtonPlus, gpu-screen-recorder replay buffer, LSfG-VK (Vulkan frame scaling), MelonDS emulator.
dotfiles/
├── config/ # -> ~/.config/
│ ├── hypr/ # Hyprland, hypridle, color palette
│ ├── kitty/ # Terminal
│ ├── fish/ # Shell config, Catppuccin colors, done plugin
│ ├── dunst/ # Notifications
│ ├── btop/ # System monitor + theme
│ ├── gtk-3.0/ # GTK theme, icons, cursor
│ ├── zed/ # Editor settings + theme
│ ├── micro/ # Editor settings + colorschemes
│ ├── millennium/ # Steam UI theme
│ ├── BetterDiscord/themes/ # Discord theme
│ ├── game-replay-watcher/ # Replay watcher config
│ ├── lsfg-vk/ # Vulkan scaling config
│ ├── kdeglobals.d/ # KDE/Qt color scheme
│ └── mimeapps.list # File associations
├── local/bin/ # -> ~/.local/bin/
│ ├── game-replay-watcher # Game detection + replay buffer script
│ └── gsr-save-replay # Save replay hotkey script
├── services/
│ └── discord-vc-notify/ # Discord VC notification bot
│ ├── bot.py
│ └── requirements.txt
├── wallpapers/ # -> ~/Pictures/
├── packages.txt # Arch/AUR package list
└── install.sh # Installer
- Arch Linux (or an Arch-based distro)
base-develandgit(needed to bootstrap the AUR helper)- An AMD GPU is assumed for some packages (
vulkan-radeon,mesa). If you use NVIDIA or Intel, swap the GPU driver packages.
git clone https://github.com/aiodillen/dotfiles.git ~/dotfiles
cd ~/dotfiles
./install.shThis runs all steps: packages, configs, scripts, wallpaper, and services. Each step asks for confirmation before making changes.
If you prefer to install pieces individually:
# 1. Install packages only
./install.sh --packages
# 2. Symlink configs only
./install.sh --configs
# 3. Link custom scripts to ~/.local/bin
./install.sh --scripts
# 4. Set up wallpaper + Screenshots directory
./install.sh --wallpaper
# 5. Set up systemd services (discord bot, replay watcher)
./install.sh --services--packages
- Checks if
paru(AUR helper) is installed. If not, offers to build it from the AUR. - Reads
packages.txt, skips comment lines, and finds packages not yet installed. - Installs missing packages via
paru(falls back topacmanif paru was declined).
--configs
Creates symlinks from the repo into ~/.config/. Some configs are directory-level symlinks (hypr, kitty, dunst, etc.), others are file-level to avoid clobbering auto-generated files in shared directories (fish, btop, zed, micro).
fish_variables is copied rather than symlinked because Fish writes to it on every session.
If an existing config is found, it's backed up to <name>.bak.<timestamp> before being replaced.
--scripts
Symlinks game-replay-watcher and gsr-save-replay into ~/.local/bin/ and marks them executable.
--wallpaper
Symlinks wallpapers into ~/Pictures/ and creates ~/Pictures/Screenshots/ (used by the Grimblast screenshot keybinds).
--services
- discord-vc-notify: Creates a Python venv, installs
discord.py, generates a.envtemplate for your bot token, and writes the systemd unit file. - game-replay-watcher: Writes the systemd unit file tied to
graphical-session.target. - Enables both services and optionally starts them.
After running ./install.sh --services, you need to provide your bot credentials:
- Go to the Discord Developer Portal and create an application.
- Go to Bot and copy the token. Enable the Server Members Intent and Message Content Intent under Privileged Gateway Intents if needed.
- Go to OAuth2 > URL Generator, select
botscope, and invite it to your server. - Edit the
.envfile:
nano ~/dotfiles/services/discord-vc-notify/.envDISCORD_TOKEN=your_actual_bot_token
MY_USER_ID=your_discord_user_id
To get your user ID: Discord Settings > Advanced > enable Developer Mode, then right-click your name > Copy User ID.
- Start the service:
systemctl --user restart discord-vc-notify| File | What to change |
|---|---|
config/hypr/hyprland.conf |
Keybindings, monitor layout, keyboard layout (kb_layout = de) |
config/game-replay-watcher/config |
MONITOR="DP-1" -- set to your display output |
config/game-replay-watcher/config |
Replay duration, FPS, quality, codec, audio devices |
config/dunst/dunstrc |
Notification position, size, timeout |
config/fish/config.fish |
Default editor (zed), greeting, aliases |
| Key | Action |
|---|---|
Super + Q |
Open Kitty terminal |
Super + E |
Open Nautilus file manager |
Super + R |
App launcher (Hyprlauncher) |
Super + S |
Audio mixer (Wiremix in Kitty) |
Super + C |
Close window |
Super + V |
Toggle floating |
Super + Shift + F |
Fullscreen |
Super + P |
Save replay buffer |
Super + M |
Logout |
Super + 1-0 |
Switch workspace |
Super + Shift + 1-0 |
Move window to workspace |
Print |
Screenshot (full screen) |
Super + Print |
Screenshot (active window) |
Shift + Print |
Screenshot (select area) |
XF86Audio* |
Volume / mute / media controls |
XF86MonBrightness* |
Brightness up/down |
Since configs are symlinked, any changes you make in ~/.config/ are reflected in the repo. To save changes:
cd ~/dotfiles
git add -A
git commit -m "description of changes"
git pushTo re-run the installer after pulling updates:
cd ~/dotfiles
git pull
./install.shThe installer is safe to run multiple times -- it replaces existing symlinks and backs up real files.