Personal Arch Linux dotfiles built around the niri scrollable-tiling Wayland compositor, themed with Rosé Pine, and driven by the Noctalia desktop shell.
Configs are organized as GNU Stow packages so each application can be symlinked into $HOME independently.
Desktop
Launcher
Lazygit
| Component | Application | Notes |
|---|---|---|
| Compositor | niri | Scrollable-tiling Wayland WM |
| Desktop shell | Noctalia | Bar, control center, launcher, wallpaper, session (v5) |
| Bar (alt) | waybar | Alternative status bar |
| Launcher | rofi | App launcher, clipboard, display menu |
| Launcher (alt) | fuzzel | Wayland-native launcher |
| Notifications | Noctalia | Notifications handled by the shell (swaync config kept as fallback) |
| Browser | Brave | |
| Terminal | alacritty / kitty | Alacritty is $TERMINAL; kitty spawned by niri keybinds |
| Shell | zsh | zinit, fzf-tab, zoxide, fzf, starship |
| Prompt | starship / oh-my-posh | Starship active |
| Editor | neovim | $EDITOR / $VISUAL |
| Multiplexer | tmux | |
| File manager | Thunar / yazi | Thunar (GUI), yazi (TUI) |
| Git TUI | lazygit | |
| System monitor | btop | |
| Audio visualizer | cava | |
| Audio effects | easyeffects | |
| PDF viewer | Okular | zathura config also included |
| Fetch | fastfetch | |
| Idle / lock | swayidle, hypridle, hyprlock | |
| Theming | GTK 3/4, Qt5ct / Qt6ct | Rosé Pine |
Each top-level directory is a Stow package. The tree inside mirrors where files land relative to $HOME:
dotfiles/
├── alacritty/.config/alacritty/
├── btop/.config/btop/
├── cava/.config/cava/
├── easyeffects/.config/easyeffects/
├── fastfetch/.config/fastfetch/
├── fuzzel/.config/fuzzel/
├── gtk/.config/gtk-3.0/ gtk-4.0/
├── lazygit/.config/lazygit/
├── niri/.config/niri/config.kdl
├── noctalia/.config/noctalia/
├── nvim/.config/nvim/
├── ohmyposh/.config/ohmyposh/
├── qt/.config/qt5ct/ qt6ct/
├── qt6ct/.config/qt6ct/
├── rofi/.config/rofi/
├── shell/.config/shell/ # shared alias / profile / secrets
├── swayidle/.config/swayidle/
├── swaync/.config/swaync/
├── tmux/.config/tmux/
├── waybar/.config/waybar/
├── yazi/.config/yazi/
├── zathura/.config/zathura/
└── zsh/.config/zsh/ # ZDOTDIR (.zshrc, .zprofile)
The shell/ package holds shell-agnostic config (alias, profile) sourced by zsh so bash/POSIX shells share it. profile exports XDG base dirs, $EDITOR, $TERMINAL, $BROWSER, toolchain paths (cargo, go, java, bun, fnm), and sets ZDOTDIR to ~/.config/zsh.
Requires git and stow.
git clone https://github.com/sirinezanina/dotfiles.git ~/dotfiles
cd ~/dotfilesStow individual packages:
stow niri noctalia zsh shell nvim tmuxOr stow everything at once:
stow */This symlinks each package's contents into $HOME (e.g. niri/.config/niri/config.kdl -> ~/.config/niri/config.kdl).
To remove a package's symlinks:
stow -D niriRestow after changes (re-sync symlinks):
stow -R zshNote: because $ZDOTDIR is ~/.config/zsh, ensure your login shell loads it. ~/.zshenv should set export ZDOTDIR="$HOME/.config/zsh" (or rely on /etc/zsh/zshenv).
Core:
niri noctalia stow zsh starship
Wayland session / desktop tooling referenced by the niri config:
xdg-desktop-portal-gnome polkit-gnome gnome-keyring
cliphist wl-clipboard hypridle hyprlock hyprpicker
rofi swaync waybar
Applications bound to keys in niri:
kitty brave thunar okular yazi discord btop cmus nmtui bluetui
localsend protonvpn-app
Shell / CLI tools:
fzf zoxide fnm bun tmux yazi lazygit fastfetch neovim
Install what you use; the list above reflects the full setup, not a hard requirement. AUR packages (e.g. noctalia, bluetui, protonvpn-app) need an AUR helper such as yay or paru.
Mod is the Super key. Full list lives in niri/.config/niri/config.kdl; press Mod+Shift+/ for the in-session hotkey overlay.
| Bind | Action |
|---|---|
Mod+Return |
Terminal (kitty) |
Mod+B |
Browser (brave) |
Mod+E |
File manager (thunar) |
Mod+M |
Discord |
Mod+G |
btop |
Mod+X |
cmus |
Mod+Y |
nmtui (network) |
Mod+A |
bluetui (bluetooth) |
Mod+Space |
App launcher (rofi) |
Mod+W |
Wallpaper picker (Noctalia) |
Mod+S |
Noctalia settings |
Mod+N |
Control center (Noctalia) |
Mod+P |
Display layout menu (rofi) |
Mod+Shift+C |
Clipboard (cliphist) |
Mod+Delete |
Wipe clipboard |
Mod+Escape |
Session menu (Noctalia) |
Mod+F12 |
Lock screen (hyprlock) |
Mod+Alt+C |
Color picker (hyprpicker) |
shell/.config/shell/secrets.sh is gitignored. Create it locally for machine-specific or private environment variables; zsh/.config/zsh/.zprofile sources it if present.
Rosé Pine across niri, Noctalia (v5), GTK, Qt, and terminal. Wallpapers and accent colors are managed through Noctalia's wallpaper picker (Mod+W).


