Personal dotfiles for Arch Linux with Hyprland, managed with GNU Stow.
| Component | Tool |
|---|---|
| Window Manager | Hyprland |
| Terminal | Kitty |
| Shell | ZSH + Oh My ZSH + Starship |
| Editor | Neovim (LazyVim) |
| File Manager | Yazi (TUI) / Nautilus (GUI) |
| Launcher | Rofi |
| Bar | Waybar |
| Notifications | SwayNC |
| Color Scheme | Pywal |
| Wallpaper | swww |
| Lock Screen | Hyprlock + Hypridle |
| Browser | Zen Browser |
| Git UI | Lazygit |
sudo pacman -S hyprland kitty waybar rofi neovim yazi zsh starship \
swww swaync hypridle hyprlock python-pywal nautilus \
brightnessctl playerctl wl-clipboard grim slurp grimblast \
bluez bluez-utils networkmanager gnome-keyringparu -S oh-my-zsh-git zsh-autosuggestions zsh-syntax-highlighting \
zsh-you-should-use zsh-bat eza neofetch fastfetch hyprpicker \
zen-browser-bin webcord-bin# zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# you-should-use
git clone https://github.com/MichaelAquilina/zsh-you-should-use.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/you-should-use
# zsh-bat
git clone https://github.com/fdellwing/zsh-bat.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-bat- Clone the repository:
git clone https://github.com/yourusername/dotfiles.git ~/dotfiles
cd ~/dotfiles- Backup existing configs (optional but recommended):
mv ~/.zshrc ~/.zshrc.backup
mv ~/.config/hypr ~/.config/hypr.backup
# ... etc- Install with GNU Stow:
stow .This will symlink all dotfiles to your home directory.
- Set ZSH as default shell:
chsh -s $(which zsh)- Set up Pywal with your wallpaper:
wal -i /path/to/your/wallpaper.jpg- Reboot or re-login to apply changes.
| Keybind | Action |
|---|---|
Super + T |
Terminal (Kitty) |
Super + B |
Browser |
Super + Shift + B |
Browser (Private) |
Super + C |
Code Editor |
Super + D |
Discord |
Super + N |
Notes (Obsidian) |
Super + Shift + N |
Document Editor (LibreOffice) |
Super + E |
File Manager (Yazi dropdown) |
Super + Shift + E |
File Manager (Nautilus) |
Super + Space |
App Launcher (Rofi) |
| Keybind | Action |
|---|---|
Super + Q |
Close Window |
Super + F |
Fullscreen |
Super + Arrow Keys |
Move Focus |
Super + 1-0 |
Switch Workspace |
Super + Shift + 1-0 |
Move Window to Workspace |
Super + Mouse Scroll |
Scroll Workspaces |
Super + LMB |
Move Window |
Super + RMB |
Resize Window |
| Keybind | Action |
|---|---|
Super + L |
Lock Screen |
Super + Shift + L |
Power Off |
Print |
Screenshot (Area) |
Super + G |
Wallpaper Switcher |
Super + A |
AI Assistant (Rofi) |
Super + P |
Package Installer |
| Key | Action |
|---|---|
Volume Up/Down/Mute |
Audio Control |
Brightness Up/Down |
Screen Brightness |
Play/Pause/Next/Prev |
Media Control |
dotfiles/
├── .config/
│ ├── hypr/ # Hyprland config (modular)
│ │ ├── modules/ # Keybinds, style, env, etc.
│ │ └── scripts/ # Hypr-specific scripts
│ ├── kitty/ # Terminal config
│ ├── nvim/ # Neovim (LazyVim)
│ ├── rofi/ # Launcher themes
│ ├── scripts/ # General scripts
│ ├── starship/ # Prompt config
│ ├── swaync/ # Notification center
│ ├── wal/ # Pywal colorschemes
│ ├── waybar/ # Status bar
│ ├── yazi/ # File manager
│ └── zed/ # Zed editor
├── .zshrc # ZSH configuration
├── .zprofile # ZSH profile (env vars)
├── .gitignore # Git ignore rules
└── .stow-local-ignore # Stow ignore rules
This setup uses Pywal for dynamic color schemes based on your wallpaper.
# Set new wallpaper and generate colors
wal -i /path/to/wallpaper.jpg
# Or use the built-in wallpaper switcher
Super + GColors are automatically applied to:
- Hyprland borders
- Kitty terminal
- Waybar
- Rofi
- Starship prompt
The default AUR helper is set to paru. Change it in .zshrc:
export aurhelper="yay" # or your preferred helperEdit ~/.config/hypr/modules/programs.conf to change default applications.
Create ~/.config/hypr/modules/monitors.conf (machine-specific, not tracked by git):
monitor=DP-1,2560x1440@144,0x0,1
monitor=HDMI-A-1,1920x1080@60,2560x0,1- The
zed/settings.jsonis gitignored because it contains API keys. Copy fromzed/settings.json.exampleif provided. - Monitor configuration is machine-specific and not tracked.
- Fastfetch is preferred over Neofetch for faster shell startup.
MIT License - feel free to use and modify as you like!