niri + DankMaterialShell setup on EndeavourOS.
- niri — scrollable-tiling Wayland compositor (
config.kdlonly; see below) - ghostty — terminal, with tmux-style splits on a
Ctrl+sleader - neovim — LazyVim with Catppuccin Mocha, Rust LSP
- zed — editor with Catppuccin Mocha
- yazi — terminal file manager
- mise — tool version manager (python, node, go, rust, pnpm, uv, etc.), configured via
mise.tomlat the repo root - zsh — oh-my-zsh with syntax highlighting, autosuggestions, fzf, fzf-tab
- zoxide — smarter cd
- atuin — shell history search
- git — per-folder identity: work email by default, personal email for
~/dotfiles - claude — Claude Code settings and status line script (model, dir, git, plan usage bars)
DankMaterialShell (dms) provides the bar, launcher, notifications, clipboard, lock screen and
wallpaper-based theming. It generates ~/.config/niri/dms/*.kdl (including keybinds),
~/.config/ghostty/themes/dankcolors and the GTK colors itself, so those are not tracked here.
Assumes EndeavourOS with niri + DankMaterialShell already selected in the installer.
git clone https://github.com/<your-username>/dotfiles.git ~/dotfiles
cd ~/dotfilesThe repo is expected at ~/dotfiles — .zshrc points MISE_GLOBAL_CONFIG_FILE there.
sudo pacman -S --needed stow zsh neovim mise zoxide atuin fzf ripgrep fd btop ttf-firacode-nerdgit clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions.git ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
git clone https://github.com/Aloxaf/fzf-tab ~/.oh-my-zsh/custom/plugins/fzf-tab
chsh -s /usr/bin/zshniri/ghostty/zed already have default configs from the installer; move them aside first so stow can link over them:
mv ~/.config/niri/config.kdl{,.bak}
mv ~/.config/ghostty/config{,.bak}
mv ~/.config/zed/settings.json{,.bak}
stow config
stow zsh
stow git
stow claudeexport MISE_GLOBAL_CONFIG_FILE="$HOME/dotfiles/mise.toml"
mise installThis installs: python, node, go, rust, pnpm, uv, shellcheck, shfmt, btop, yazi.
# git identity — kept out of the repo; work email is the default, personal for ~/dotfiles
mkdir -p ~/.config/git-identity
printf '[user]\n\temail = you@work.com\n' > ~/.config/git-identity/default
printf '[user]\n\temail = you@personal.com\n' > ~/.config/git-identity/personal
# ssh-agent socket used by .zshrc
systemctl --user enable --now ssh-agent.socketLog out and back in (for the shell change). First nvim launch will auto-install all plugins.
| Key | Action |
|---|---|
Mod+T |
Terminal (Ghostty) |
Mod+Space |
App launcher |
Mod+Tab / Mod+O |
Overview |
Mod+V |
Clipboard history |
Mod+N |
Notification center |
Mod+Comma |
DMS settings |
Mod+Y |
Wallpapers |
Mod+Alt+L |
Lock screen |
Super+X |
Power menu |
Mod+Shift+E |
Quit niri |
| Key | Action |
|---|---|
Ctrl+s then | |
Split right |
Ctrl+s then - |
Split down |
Ctrl+s then h/j/k/l |
Navigate splits |
Ctrl+s then z |
Zoom split |
Ctrl+s then x |
Close split |
Ctrl+s then c |
New tab |
Ctrl+s then n/p |
Next/prev tab |
| Key | Action |
|---|---|
Ctrl+R |
Fuzzy search history (atuin) |
Ctrl+T |
Fuzzy find files |
Alt+C |
Fuzzy cd into directory |
Tab |
fzf-tab completion |