A comprehensive, modular dotfiles configuration for Arch Linux featuring Hyprland window manager with full pywal integration for dynamic theming.
- Hyprland: Modern Wayland compositor with smooth animations and excellent performance
- Comprehensive Launcher: Omarchy-inspired launcher for apps, packages, themes, and system settings
- Pywal Integration: Dynamic color schemes from wallpapers applied across all applications
- Universal Clipboard: Omarchy-style unified clipboard shortcuts that work in terminals AND GUI apps
- Package Manager: Install/remove packages from Arch repos and AUR directly from launcher
- Theme Manager: Change wallpapers, color schemes, GTK themes, icons, and more
- Modular Configuration: Clean, organized configs split into logical files
- Beautiful UI: Waybar, Rofi, Mako notifications with consistent theming
- Productivity Tools: Tmux, Zsh/Bash with useful aliases and functions
- Utility Scripts: Power menu, screenshot tools, wallpaper picker
- Auto-theming: Automatic theme reload when wallpaper changes
- Hyprland: Wayland compositor with animations and eye-candy
- hyprlock: Screen locker
- hypridle: Idle daemon for auto-lock and DPMS
- Waybar: Customizable status bar with system information
- Mako: Lightweight notification daemon
- Kitty: GPU-accelerated terminal emulator
- Rofi: Application launcher and menu system
- Thunar: File manager
- Firefox: Web browser
- Pywal: Automatic color scheme generation from wallpapers
- swww: Smooth wallpaper transitions
- GTK/Qt theming: Consistent appearance across toolkits
- grimblast or grim + slurp: Screenshot utilities (grimblast recommended for Hyprland)
- wl-clipboard: Clipboard management
- cliphist: Clipboard history
- brightnessctl: Backlight control
- pipewire: Audio server
- swappy: Screenshot editor (optional)
Install required packages:
# Core Hyprland and components
sudo pacman -S hyprland hyprlock hypridle waybar mako rofi kitty \
polkit-gnome xdg-desktop-portal-hyprland
# Utilities
sudo pacman -S grim slurp wl-clipboard cliphist brightnessctl \
swww python-pywal networkmanager bluez bluez-utils \
pipewire wireplumber pavucontrol thunar wtype
# Fonts
sudo pacman -S ttf-jetbrains-mono-nerd ttf-font-awesome
# Optional but recommended
sudo pacman -S starship zoxide fzf htop tmux neovim firefox \
jq bc playerctl swappy
# AUR packages (recommended) - use your AUR helper (paru, yay, etc.)
paru -S grimblast-git # Better screenshot tool for HyprlandThis dotfiles repository is designed to work with GNU Stow for easy management:
# Install stow
sudo pacman -S stow
# Clone the repository
git clone https://github.com/yourusername/dotfiles.git ~/dotfiles
cd ~/dotfiles
# Stow the dotfiles
stow -v -t $HOME .
# This creates symlinks for all configs in your home directoryAlternatively, manually copy the configs:
git clone https://github.com/yourusername/dotfiles.git ~/dotfiles
cd ~/dotfiles
# Copy configs
cp -r .config/* ~/.config/
cp .zshrc ~/.zshrc
cp .bashrc ~/.bashrc
# Copy scripts
cp -r scripts ~/.local/bin/
chmod +x ~/.local/bin/*After installation, run the first-run script:
~/dotfiles/scripts/first-run.shThis will:
- Enable required systemd services
- Create necessary directories
- Set up a default wallpaper and theme
- Configure system services
Main configuration: ~/.config/hypr/hyprland.conf
Modular configs in ~/.config/hypr/conf.d/:
00-env.conf- Environment variables, animations, decorations10-input.conf- Keyboard and mouse settings20-binds.conf- Keybindings30-rules.conf- Window rules40-looks.conf- Theme and appearance45-monitors.conf- Monitor configuration50-autostart.conf- Startup applications
| Keybind | Action |
|---|---|
SUPER + Return |
Launch terminal (Kitty) |
SUPER + Space |
Application launcher (Rofi) |
SUPER + D |
Comprehensive Launcher (Omarchy-inspired) |
SUPER + B |
Launch browser (Firefox) |
SUPER + E |
File manager (Thunar) |
SUPER + Q |
Close window |
SUPER + F |
Fullscreen |
SUPER + T |
Toggle floating |
SUPER + SHIFT + E |
Exit Hyprland |
SUPER + SHIFT + X |
Power menu |
SUPER + CTRL + L |
Lock screen |
These work everywhere - terminals AND GUI applications!
| Keybind | Action |
|---|---|
SUPER + C |
Copy (works in terminals and apps) |
SUPER + V |
Paste (works in terminals and apps) |
SUPER + X |
Cut (GUI apps only) |
SUPER + CTRL + V |
Clipboard history manager |
How it works: Automatically detects terminal windows and sends Ctrl+Shift+C/V for terminals or Ctrl+C/V for other apps. No more remembering different shortcuts!
| Keybind | Action |
|---|---|
SUPER + H/J/K/L |
Move focus (vim keys) |
SUPER + SHIFT + H/J/K/L |
Move window |
SUPER + R |
Enter resize mode |
SUPER + 1-0 |
Switch workspace |
SUPER + SHIFT + 1-0 |
Move window to workspace |
| Keybind | Action |
|---|---|
SUPER + S |
Screenshot area to clipboard |
SUPER + SHIFT + S |
Screenshot area & save to file |
SUPER + CTRL + S |
Screenshot active window & save |
SUPER + ALT + S |
Screenshot full screen & save |
Note: Uses grimblast if installed (recommended), automatically falls back to grim + slurp.
| Keybind | Action |
|---|---|
SUPER + SHIFT + W |
Wallpaper picker |
The setup automatically generates color schemes from your wallpaper:
# Set a new wallpaper and theme
~/.local/bin/set-wall ~/Pictures/Wallpapers/your-image.jpg
# Reload theme without changing wallpaper
~/.local/bin/reload-themePywal integration affects:
- Waybar colors
- Rofi theme
- Kitty terminal colors
- Mako notification colors
- Hyprland border colors
- GTK applications (partially)
Inspired by Omarchy, this setup provides unified clipboard shortcuts that work seamlessly across terminals and GUI applications.
The Problem:
- Terminals use
Ctrl+Shift+C/Vfor copy/paste - GUI apps use
Ctrl+C/Vfor copy/paste - You have to remember which shortcut to use where
The Solution:
Super+C- Copy (works everywhere)Super+V- Paste (works everywhere)Super+X- Cut (GUI apps)
How it works: The universal-clipboard script automatically detects if you're in a terminal window and sends the appropriate key combination:
- In terminals (kitty, alacritty, etc.): Sends
Ctrl+Shift+C/V - In other apps: Sends
Ctrl+C/V
Requirements:
wtype(preferred, installed by default) orydotool(fallback)jqfor JSON parsing
Supported terminals: Automatically detected: kitty, Alacritty, foot, konsole, gnome-terminal, xfce4-terminal, terminator, tilix, and more.
Inspired by Omarchy, this setup includes a powerful all-in-one launcher accessible with Super+D that provides:
1. Applications
- Launch GUI applications
- Launch TUI (terminal) applications
- Categorized app browsing (Development, Internet, Multimedia, Office, System Tools)
- Favorites management
- Recent applications
2. Package Manager
- Search and install from Arch official repositories
- Search and install from AUR (requires paru or yay)
- Update system (official repos, AUR, or both)
- Remove packages with dependency removal
- Clean package cache
- View installed packages (official, AUR, all, recent)
- Install common applications by category
3. Theme Manager
- Change wallpaper with instant preview
- Random wallpaper selection
- Pre-made color schemes (Dark, Light, Nord, Dracula, Gruvbox, Solarized, Monokai, etc.)
- GTK theme switcher
- Icon theme switcher
- Cursor theme switcher
- Font settings
- Export current theme configuration
4. System Settings
- Display settings (resolution, refresh rate, scale, rotation)
- Audio settings (opens pavucontrol)
- Network settings (Network Manager)
- Bluetooth settings
- Power management (idle timeout, lock timer, power profiles)
- Input devices (keyboard layout, mouse, touchpad)
- Hyprland settings (animations, borders, gaps, blur, shadows)
- Startup applications
5. Quick Actions
- Screenshot with multiple modes
- Screen recording (requires wf-recorder)
- Color picker (requires hyprpicker)
- Clipboard history
- Emoji picker (requires rofimoji)
- Calculator
- File search (uses fd if available)
- Process manager (htop/btop)
- System monitor
- Disk usage analyzer
- Network information
- System information
- Kill active window
- Reload Waybar/Hyprland
# Press Super+D to open the main launcher menu
# Then select from:
- Applications # Browse and launch apps
- Package Manager # Install/remove software
- Theme Manager # Customize appearance
- System Settings # Configure system
- Quick Actions # Common tasksThe launcher makes it easy to install software:
- Press
Super+D→Package Manager→Search & Install Package - Type package name (e.g., "firefox")
- Select from results
- Package installs in a terminal window
For AUR packages:
- Press
Super+D→Package Manager→Search AUR - Type AUR package name (e.g., "visual-studio-code-bin")
- Select and install
Or install by category:
- Press
Super+D→Package Manager→Install Common Apps - Choose category (Development, Internet, Multimedia, etc.)
- Multi-select packages
- Install all at once
Change your entire theme instantly:
- Press
Super+D→Theme Manager→Change Wallpaper - Select wallpaper → pywal automatically generates colors
- All apps update with new color scheme
Or apply preset color schemes:
- Press
Super+D→Theme Manager→Color Schemes - Choose scheme (Nord, Dracula, Gruvbox, etc.)
- Hyprland colors update immediately
Edit ~/.config/hypr/conf.d/45-monitors.conf to configure your displays:
monitor=DP-1,2560x1440@144,0x0,1
monitor=HDMI-A-1,1920x1080@60,2560x0,1
Find your monitor names with: hyprctl monitors
The configuration includes NVIDIA-specific environment variables in 00-env.conf. If you're not using NVIDIA, comment out these lines:
# env = LIBVA_DRIVER_NAME,nvidia
# env = GBM_BACKEND,nvidia-drm
# etc.
dotfiles/
├── .config/
│ ├── hypr/ # Hyprland configuration
│ │ ├── conf.d/ # Modular configs
│ │ └── scripts/ # Hyprland scripts (power menu, etc.)
│ ├── waybar/ # Status bar config
│ ├── rofi/ # Application launcher
│ ├── mako/ # Notifications
│ ├── kitty/ # Terminal
│ ├── tmux/ # Terminal multiplexer
│ ├── wal/ # Pywal templates and hooks
│ └── systemd/user/ # User systemd services
├── scripts/ # Utility scripts
│ ├── set-wall # Set wallpaper and theme
│ ├── reload-theme # Reload theme
│ └── first-run.sh # Initial setup
├── .zshrc # Zsh configuration
├── .bashrc # Bash configuration
└── README.md # This file
Edit ~/.config/hypr/conf.d/20-binds.conf:
bind = $mod, KEY, action, params
Edit the wallpaper picker binding in 20-binds.conf to point to your directory.
Enable/disable modules in ~/.config/waybar/config.jsonc:
"modules-right": ["network", "pulseaudio", "cpu", "memory", "battery", "tray"]The configuration supports both grimblast (recommended) and grim + slurp (fallback).
Why grimblast?
- Better Hyprland integration
- Easier syntax and usage
- Can capture active windows without geometry calculations
- Per-output screenshot support
- Built-in notification support
Installation:
# grimblast (AUR - recommended)
paru -S grimblast-git
# OR grim + slurp (official repos - fallback)
sudo pacman -S grim slurp
# Optional: screenshot editor
sudo pacman -S swappyThe screenshot script automatically detects which tool is available and uses grimblast if present.
Run manually to check for errors:
waybarEnsure pywal template is generated:
ls ~/.cache/wal/waybar-wal.cssCheck if keybind is conflicting:
hyprctl bindsTest hyprlock manually:
hyprlockCheck hypridle service:
systemctl --user status hypridle- Hyprland: https://hyprland.org/
- Pywal: https://github.com/dylanaraps/pywal
- Waybar: https://github.com/Alexays/Waybar
MIT License - Feel free to use and modify as needed.