Niri Minimal Dots!
A clean, minimal Niri Wayland compositor configuration for Arch Linux with Catppuccin Mocha theme.
Preview
| Neovim |
Power Menu |
Wallpaper Picker |
 |
 |
 |
| btop |
Cava |
 |
 |
Features
- Niri — scrollable tiling Wayland compositor with blur and animations
- Waybar — modular status bar with player, clipboard, notifications, power modules
- Fuzzel — fast Wayland-native application launcher
- Fish — smart shell with Catppuccin Mocha syntax highlighting
- Catppuccin Mocha — cohesive color scheme across all components
- Custom scripts — clipboard history, notification history, power menu, wallpaper picker
- gtklock — styled lock screen
- Minimal footprint — no unnecessary bloat
Applications Used
Installation
Prerequisites
- Fresh Arch Linux installation
- Internet connection
- SDDM display manager
Quick Start
# Clone the repository
git clone https://github.com/youngcoder45/New-Niri-minimal-dots.git ~/.config
cd ~/.config
# Run the installer
chmod +x install.sh
./install.sh
# Reboot
sudo reboot
Manual Installation
# Install packages
sudo pacman -S --needed - < packages.txt
# Install yay (AUR helper)
git clone https://aur.archlinux.org/yay-bin.git /tmp/yay-bin
cd /tmp/yay-bin && makepkg -si
# Install AUR packages
yay -S niri-git niri-settings-git niri-utils bibata-cursor-theme-bin brave-bin vesktop-bin sddm-sugar-candy-git pomoru
# Symlink configs
for dir in */; do
case "$dir" in .git|Screenshots|wallpapers|local) continue;; esac
ln -sfn "$(pwd)/$dir" "$HOME/.config/$dir"
done
# Set fish as default shell
chsh -s /usr/bin/fish
# Enable SDDM
sudo systemctl enable sddm
Keybindings
Applications
| Keybinding |
Action |
Mod + Return |
Open terminal (Alacritty) |
Alt + Return |
Open terminal (Kitty) |
Mod + Space |
Application launcher (Fuzzel) |
Mod + B |
Open browser (Firefox) |
Mod + C |
Open code editor (VS Code) |
Mod + V |
Open Vesktop (Discord) |
Mod + E |
Open file manager (Nautilus) |
Mod + Z |
Open Zed editor |
Mod + L |
Lock screen (Gtklock) |
Mod + T |
Power menu (Wlogout) |
Print |
Screenshot (Flameshot) |
Window Management
| Keybinding |
Action |
Mod + Q |
Close window |
Mod + F |
Maximize column |
Mod + Shift + F |
Fullscreen window |
Mod + D |
Toggle floating |
Mod + Shift + V |
Switch focus floating/tiling |
Mod + W |
Toggle tabbed column |
Mod + R |
Cycle column width |
Mod + H/J/K/L |
Focus left/down/up/right |
Mod + Ctrl + H/J/K/L |
Move window left/down/up/right |
Workspaces
| Keybinding |
Action |
Mod + 1-9 |
Switch to workspace 1-9 |
Mod + Ctrl + 1-9 |
Move window to workspace 1-9 |
Mod + U/I |
Workspace down/up |
Mod + Ctrl + U/I |
Move window to workspace down/up |
Monitors
| Keybinding |
Action |
Mod + Shift + H/J/K/L |
Focus monitor left/down/up/right |
Mod + Shift + Ctrl + H/J/K/L |
Move window to monitor |
Media Keys
| Keybinding |
Action |
XF86AudioRaise/Lower |
Volume up/down |
XF86AudioMute |
Toggle mute |
XF86AudioMicMute |
Toggle mic mute |
XF86AudioPlay/Prev/Next |
Media controls |
XF86BrightnessUp/Down |
Brightness up/down |
Screenshots
| Keybinding |
Action |
Print |
Screenshot (Flameshot GUI) |
Ctrl + Print |
Screenshot (current output) |
Alt + Print |
Screenshot (current window) |
Scripts
Waybar Scripts (waybar/scripts/)
| Script |
Description |
powermenu.sh |
Fuzzel-based power menu |
clipboard.sh |
Cliphist clipboard manager |
bluetooth-control.sh |
Bluetooth device picker |
bluetooth.sh |
Bluetooth status display |
volume-control.sh |
Volume control with device selection |
network-control.sh |
Network manager with WiFi scanning |
notifications.sh |
Notification count display |
mediaplayer.sh |
Media player status |
launch-waybar.sh |
Waybar launcher |
User Scripts (local/bin/)
| Script |
Description |
powermenu |
Fuzzel-based power menu (standalone) |
set-wallpaper |
Wallpaper picker with swaybg integration |
clipboard-history |
Cliphist clipboard manager with fuzzel |
notification-history |
Notification history viewer |
mako-history |
Mako notification history |
Directory Structure
├── alacritty/ # Terminal configuration
│ └── alacritty.toml
├── btop/ # System monitor
│ └── btop.conf
├── bottom/ # System monitor (alternative)
│ └── bottom.toml
├── cava/ # Audio visualizer
│ ├── config
│ ├── shaders/
│ └── themes/
├── environment.d/ # Environment variables
│ ├── cursors.conf
│ └── unset-gtk-theme.conf
├── fastfetch/ # System info display
│ └── config.jsonc
├── fish/ # Shell configuration
│ ├── config.fish
│ └── conf.d/
├── flameshot/ # Screenshot tool
│ └── flameshot.ini
├── fuzzel/ # Application launcher
│ └── fuzzel.ini
├── godot/ # Game engine settings
│ └── editor_settings-4.5.tres
├── gtk-3.0/ # GTK3 theme settings
│ ├── settings.ini
│ ├── gtk.css
│ ├── colors.css
│ └── bookmarks
├── gtk-4.0/ # GTK4 theme settings
│ ├── settings.ini
│ ├── gtk.css
│ ├── gtk-dark.css
│ └── colors.css
├── kitty/ # Kitty terminal
│ ├── kitty.conf
│ ├── colors.conf
│ └── sessions/
├── lazygit/ # Git TUI
│ └── config.yml
├── local/bin/ # User scripts
│ ├── powermenu
│ ├── set-wallpaper
│ ├── clipboard-history
│ ├── notification-history
│ └── mako-history
├── mako/ # Notification daemon
│ └── config
├── mpv/ # Media player
│ ├── mpv.conf
│ ├── fonts/
│ ├── script-opts/
│ └── scripts/
├── niri/ # Window manager
│ ├── config.kdl
│ ├── basicsettings.kdl
│ ├── keybinds.kdl
│ ├── window_rules.kdl
│ ├── autostart.sh
│ └── index.theme
├── niri-lock/ # Lock screen
│ ├── config.ini
│ ├── lock.sh
│ └── style.css
├── nvim/ # LazyVim config
│ ├── init.lua
│ ├── lazy-lock.json
│ └── lua/
├── pomoru/ # Pomodoro timer
│ └── config.toml
├── qt6ct/ # Qt6 theme
│ └── qt6ct.conf
├── starship/ # Shell prompt
│ └── starship.toml
├── swappy/ # Screenshot annotation
│ └── config
├── tmux/ # Terminal multiplexer
│ └── tmux.conf
├── vlc/ # Media player
│ └── vlcrc
├── waybar/ # Status bar
│ ├── config.jsonc
│ ├── style.css
│ ├── modules/
│ └── scripts/
├── wlogout/ # Power menu
│ ├── layout
│ ├── style.css
│ └── icons/
├── zed/ # Zed editor
│ ├── settings.json
│ ├── snippets/
│ └── themes/
├── wallpapers/ # Wallpaper storage
├── Screenshots/ # Repository screenshots
├── packages.txt # Package list
├── install.sh # Installation script
├── LICENSE # MIT License
└── README.md # This file
Themes
| Component |
Theme |
| GTK Theme |
adw-gtk3-dark |
| Icon Theme |
Papirus-Dark |
| Cursor Theme |
Bibata-Modern-Classic |
| Fish Shell |
Catppuccin Mocha |
| Waybar |
Catppuccin Mocha |
FAQ
Q: How do I change the wallpaper?
Place images in ~/Pictures/wallpapers/. Run ~/.local/bin/set-wallpaper to pick a wallpaper interactively.
Q: How do I change the color scheme?
Edit the color values in:
waybar/style.css — Waybar styling
mako/config — Notification colors
fish/conf.d/fish_frozen_theme.fish — Fish syntax highlighting
niri-lock/style.css — Lock screen colors
Q: How do I add more Waybar modules?
Edit waybar/config.jsonc and add modules to modules-left, modules-center, or modules-right. Module definitions are in waybar/modules/.
Q: How do I change the terminal font?
Edit alacritty/alacritty.toml for Alacritty or kitty/kitty.conf for Kitty.
Troubleshooting
Waybar not showing
killall waybar
~/.config/waybar/scripts/launch-waybar.sh
No notifications
killall mako
mako &
Wallpaper not changing
# Test manually
swaybg -i ~/Pictures/wallpapers/your-wallpaper.jpg -m fill &
Lock screen not working
# Test gtklock manually
gtklock --config ~/.config/niri-lock/config.ini
Credits
License
This project is licensed under the MIT License — see the LICENSE file for details.
Made with ❤️ by Aditya Verma