Vicious Viper Dotfiles

Vicious Viper
A wallpaper-synced Hyprland rice for Arch Linux.
Material You theming ยท Automated backups ยท Modular installer ยท Clean daily workflow.
๐ผ Preview ยท โจ Features ยท ๐งฉ Stack ยท ๐ฆ Prerequisites ยท โก Installation ยท ๐ Layout ยท ๐ฉ Flags ยท โจ๏ธ Keybinds ยท ๐จ Theming ยท ๐ Zen ยท ๐ Updating ยท ๐ง Troubleshoot
๐ผ Preview
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
โจ Features
| ๐ฎ | ๐พ | ๐ | ๐ช | ๐ | | :-------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------: | | Material You theming โ Matugen derives a full palette from your wallpaper and applies it to every component | Safe installer โ every file that would be overwritten is backed up to a timestamped directory first | Modular installs โ choose exactly which modules to deploy: configs, scripts, icons, themes, fonts, dotfiles | Dry-run mode โ preview every single action without touching a single file | Shell-aware PATH patching โ detects Zsh, Bash, Fish, Ksh, and falls back to POSIX .profile |
| โฉ๏ธ | ๐ค | ๐ | ๐ | ๐จ | | :-------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------: | | One-command undo โ restore all your originals with ./install.sh --uninstall | Bundled fonts โ JetBrains Mono Nerd, Font Awesome, Icomoon Feather, Nerd Symbols โ installed and cached | Zen Browser CSS โ custom userChrome.css and userContent.css tuned to match the Viper aesthetic | 50+ custom scripts โ automatically marked executable and patched into PATH | Live theming โ change wallpaper, run matugen, everything recolors instantly |
๐งฉ Stack
| Role | Tool | | :------------------: | :-------------------------------------------------------------------------------------------------- | | ๐ Base | Arch Linux | | ๐ช Compositor | Hyprland | | ๐ Bar | Waybar | | ๐ฅ Terminal | Kitty + Foot | | ๐ Shell | Zsh + Starship | | ๐ Notifications | Mako | | ๐ Launcher | Rofi Wayland fork | | ๐ Browser | Zen Browser | | ๐ Locker | Hyprlock | | ๐ Files | Nautilus + Yazi | | ๐ Editor | Neovim | | ๐ผ Wallpaper | awww | | ๐จ Theming | Matugen | | ๐ก System Info | Fastfetch | | ๐ต Audio | cmus + Cava + mpv | | ๐ Monitor | btop | | โฌ Downloads | aria2 |
๐ฆ Prerequisites
[!IMPORTANT]
The installer checks for these and warns about anything missing. It will not block installation unless core system utilities likecporfindare absent.
Tested On
| | | | :------------: | :------------------------------------------------ | | ๐ฅ OS | Arch Linux (latest) | | GPU | Intel / AMD / NVIDIA (all supported via Hyprland) | | ๐ช Display | Wayland (Hyprland) |
Core packages
yay -S hyprland waybar foot kitty zsh rofi mako \
hyprlock matugen-bin btop yazi fastfetch neovim starship \
cava cmus mpv nautilus zen-browser-bin aria2 advcpmv
Supporting packages
Click to expand
| Package | Purpose | | ----------------------------------------------- | ----------------------------------------- | | xdg-desktop-portal-hyprland | Wayland portal โ screenshare, file picker | | polkit-gnome | GUI authentication agent | | grim + slurp + wl-clipboard | Screenshot toolchain | | brightnessctl | Brightness control | | pavucontrol | Audio volume GUI | | pipewire + pipewire-pulse + pipewire-alsa | Audio stack | | wireplumber | PipeWire session manager | | networkmanager | Networking | | bluez + bluez-tools | Bluetooth | | xorg-xwayland | X11 app compatibility | | eza | Better ls | | fd | Better find | | bat | Better cat | | bleachbit | System cleaner script dependency |
Fonts
The .fonts/ directory is bundled and installed automatically. To install manually:
yay -S ttf-jetbrains-mono-nerd ttf-font-awesome nerd-fonts-symbols-only
fc-cache -f
โก Installation
[!CAUTION]
Run --dry-run first on an existing setup. The installer backs up every file it will overwrite, but you should always confirm what it touches before committing.
Quick start
git clone https://github.com/Cybersnake223/Hypr
cd Hypr
chmod +x install.sh
./install.sh --dry-run # preview first
./install.sh # install when ready
What happens during install
[1] โ
Verify core system utilities
[2] ๐ Check Hyprland ecosystem packages
[3] ๐พ Backup all files that will be overwritten
[4] ๐ Copy selected modules into $HOME
[5] ๐ chmod +x all scripts in ~/.local/bin/scripts
[6] ๐ค Rebuild font cache via fc-cache -f
[7] ๐ค Detect shell and optionally patch PATH
[8] ๐ Print install summary with log path
Backups land here:
~/.local/share/hypr-dotfiles-backups/<YYYYMMDD-HHMMSS>/
Each backup contains a .manifest of every installed path โ used by --uninstall to restore precisely.
Manual install (no script)
The installer is just a Bash script โ review it, then replicate manually:
for dir in .config .icons .themes .fonts; do
[ -d "$dir" ] && cp -r "$dir" "$HOME/"
done
[ -d .local/bin/scripts ] && cp -r .local/bin/scripts "$HOME/.local/bin/"
for f in .Xresources .gtkrc-2.0; do
[ -f "$f" ] && cp "$f" "$HOME/"
done
find "$HOME/.local/bin/scripts" -type f -exec chmod +x {} +
fc-cache -f
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
๐ File Layout
$HOME
โโโ .config/
โ โโโ hypr/ โ Hyprland compositor
โ โโโ waybar/ โ Status bar
โ โโโ rofi/ โ App launcher
โ โโโ nvim/ โ Neovim
โ โโโ zsh/ โ Zsh (uses $ZDOTDIR)
โ โโโ kitty/ โ Kitty terminal
โ โโโ foot/ โ Foot terminal
โ โโโ mako/ โ Notifications
โ โโโ yazi/ โ TUI file manager
โ โโโ mpv/ โ Media player
โ โโโ btop/ โ System monitor
โ โโโ matugen/ โ Color templates
โ โโโ fastfetch/ โ System info
โ โโโ cava/ โ Audio visualizer
โ โโโ ...
โโโ .local/bin/scripts/ โ 50+ custom shell scripts
โโโ .fonts/ โ Bundled fonts
โโโ .icons/ โ Icon theme
โโโ .themes/ โ GTK/Qt themes
โโโ .Xresources
โโโ .gtkrc-2.0
/etc/ (system-level โ not installed, apply manually): โโโ auto-cpufreq.conf โ CPU governor tuning โโโ pacman.conf โ Pacman parallel downloads + eye candy โโโ pacman.d/
๐ฉ Installer Flags
| Flag | What it does | | :----------------------: | :----------------------------------------------- | | --dry-run | ๐ Preview every action โ zero changes made | | --yes | โ
Skip all confirmation prompts | | --select | ๐ Interactively pick which modules to install | | --no-backup | โ ๏ธ Skip backup โ also disables --uninstall | | --uninstall | โฉ๏ธ Restore originals from the most recent backup | | --list-backups | ๐ Show all backups with timestamps and sizes | | --install-deps | ๐ฆ Auto-install missing Hyprland ecosystem deps | | --install-nvim-deps | ๐ฆ Auto-install Neovim system dependencies | | --skip-deps | ๐ Skip the ecosystem dependency check | | --version | โน๏ธ Show version and exit | | -h / --help | ๐ Show usage |
# First-timer recommended flow
./install.sh --dry-run
Standard install
./install.sh
Non-interactive (CI / scripted)
./install.sh --yes --skip-deps
Pick only what you want
./install.sh --select
Undo the last install
./install.sh --uninstall
See all saved backups
./install.sh --list-backups
--select module picker
[โ] 1 .config Application configs (hypr, waybar, rofi, nvim, zshโฆ)
[โ] 2 scripts Custom scripts โ ~/.local/bin/scripts
[ ] 3 .icons Icon theme
[โ] 4 .themes GTK/Qt themes
[โ] 5 .fonts Custom fonts (triggers fc-cache rebuild)
[โ] 6 dotfiles Root dotfiles (.Xresources, .gtkrc-2.0)
Toggle a number, press Enter to confirm.
Shell-aware PATH patching
| Shell | Line added | File patched | | ------------ | --------------------------------------- | -------------------------------------- | | zsh | path=(~/.local/bin $path) | ~/.zshrc | | bash | export PATH="$HOME/.local/bin:$PATH" | ~/.bashrc | | fish | fishaddpath $HOME/.local/bin | ~/.config/fish/conf.d/hypr_path.fish | | ksh / mksh | export PATH="$HOME/.local/bin:$PATH" | ~/.kshrc | | Other | export PATH="$HOME/.local/bin:$PATH" | ~/.profile |
โจ๏ธ Keybinds
[!NOTE]
ALT is the primary modifier across the entire setup.
๐ง System
| Keybind | Action | | ------------- | ---------------------- | | F1 | Toggle mute (speakers) | | F2 / F3 | Volume โ/+ 10% | | F4 | Toggle mute (mic) | | F7 | Toggle Wi-Fi | | F9 | Lock screen | | F11 / F12 | Brightness โ/+ 10% | | Print | Screenshot |
๐ Apps & Launchers
| Keybind | Action | | --------------- | --------------------------- | | ALT + Enter | Terminal (Kitty) | | ALT + D | App launcher (Rofi) | | ALT + R | Yazi (TUI file manager) | | ALT + N | Neovim | | ALT + M | cmus | | ALT + H | btop | | ALT + T | aerc (email) | | ALT + E | Emoji picker | | ALT + X | Power menu | | ALT + B | Bluetooth menu | | ALT + L | AirPods TUI | | ALT + Y | YouTube downloader | | ALT + V | Clipboard history | | ALT + W | Change wallpaper | | ALT + K | Kill window | | ALT + C | Dismiss notifications | | ALT SHIFT + T | Nautilus (GUI files) | | ALT SHIFT + P | Audio mixer (wiremix) | | ALT SHIFT + V | Watch video | | ALT SHIFT + S | Universal snip (QuickShell) | | ALT SHIFT + K | System cleaner | | ALT SHIFT + D | aria2 downloader | | ALT SHIFT + C | Script editor | | ALT SHIFT + E | Config editor | | ALT SHIFT + N | Wi-Fi menu |
๐ Web shortcuts (personal โ edit before use)
[!NOTE]
These open personal bookmarks hardcoded in the Hyprland config. Edit them before adopting this setup.
| Keybind | Action | | --------------- | ------------------ | | ALT SHIFT + B | Zen Browser | | ALT SHIFT + I | Zen private window | | ALT + G | GitHub | | ALT SHIFT + Y | YouTube | | ALT SHIFT + G | Gemini | | ALT SHIFT + W | Wallhaven | | ALT SHIFT + O | ChatGPT | | ALT SHIFT + R | Reddit |
๐ช Window management
| Keybind | Action | | --------------------- | ----------------- | | ALT + Q | Close window | | ALT + F | Toggle fullscreen | | ALT + P | Toggle floating | | ALT + J | Toggle split | | ALT + โ โ โ โ | Move focus | | ALT SHIFT + โ โ โ โ | Swap window | | ALT CTRL + โ โ โ โ | Resize window | | ALT + LMB drag | Move window | | ALT + RMB drag | Resize window |
๐ Workspaces
| Keybind | Action | | ---------------------- | ----------------------------- | | ALT + 1โ0 | Switch to workspace 1โ10 | | ALT SHIFT + 1โ0 | Move window to workspace 1โ10 | | ALT + Scroll up/down | Cycle workspaces | | ALT + ` | Toggle scratchpad | | ALT SHIFT + ` | Move window to scratchpad |
๐จ Theming
This setup uses Matugen โ a Material You color extraction engine. Change your wallpaper, run Matugen, and Waybar, Rofi, Mako, Hyprlock, GTK apps, and the terminal all recolor automatically.
# Set wallpaper and regenerate palette
aww set /path/to/wallpaper.jpg
matugen image /path/to/wallpaper.jpg
# Force a refresh from the cached wallpaper
matugen image ~/.config/hypr/wallpaper/current.jpeg
[!NOTE]
Matugen templates live in .config/matugen/. Edit them to control exactly how color tokens map to each app's config format.
๐ Zen Browser
Custom styling for Zen Browser is included under .zen/chrome/ to match the Viper aesthetic.
| File | Purpose | | -------------------------------- | ------------------------------------------ | | .zen/chrome/userChrome.css | Browser chrome โ sidebar, tab bar, toolbar | | .zen/chrome/userContent.css | Internal pages โ new tab, about: pages | | .zen/chrome/zen-logo-mocha.svg | Custom logo asset |
[!IMPORTANT]
The installer does not copy .zen/ automatically. Apply it manually:
cp -r .zen/chrome "$HOME/.zen/chrome"
Then enable custom CSS in about:config:
toolkit.legacyUserProfileCustomizations.stylesheets = true
Restart Zen. If your profile is not at ~/.zen/ (e.g. Flatpak installs use ~/.var/app/), find the correct path via about:support โ Profile Directory.
๐ Updating
git pull
./install.sh --dry-run # preview what changed
./install.sh # apply
Each run creates a fresh backup. To roll back after an update:
./install.sh --uninstall # restore most recent backup
./install.sh --list-backups # or inspect all available backups
๐ง Troubleshooting
Waybar / Rofi / Mako not launching
./install.sh --dry-run
which hyprland waybar rofi mako hyprlock matugen kitty foot zsh
Scripts fail with
command not found
# Zsh
echo 'path=(~/.local/bin $path)' >> ~/.zshrc
source ~/.zshrc
Bash / others
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
GTK 2 theme broken after nwg-look
cp /path/to/Hypr/.gtkrc-2.0 ~/.gtkrc-2.0
Colors didn't update after wallpaper change
matugen image /path/to/your/wallpaper
Icon glyphs showing as boxes
yay -S ttf-font-awesome nerd-fonts-symbols-only
fc-cache -f
--uninstall says "No install manifest found"
The installer was never run, or the backup directory was deleted. Restore files manually from the repo tree.
Something went wrong mid-install
# Show the last 50 lines of the most recent install log
tail -50 /tmp/hypr-install-*.log 2>/dev/null
๐ Security
Do not open a public GitHub issue for vulnerabilities. See SECURITY.md for responsible disclosure.
๐ค Contributing
PRs are welcome for fixes, improvements, and documentation updates. Include screenshots when UI is affected.
๐ฌ Getting Help
Need help or have questions? Start a discussion:
- GitHub Discussions โ ask questions, share setups, get help
๐ License
MIT โ see LICENSE for details.











