Vicious Viper

May 11, 2026 · View on GitHub

Vicious Viper Logo

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 componentSafe installer — every file that would be overwritten is backed up to a timestamped directory firstModular installs — choose exactly which modules to deploy: configs, scripts, icons, themes, fonts, dotfilesDry-run mode — preview every single action without touching a single fileShell-aware PATH patching — detects Zsh, Bash, Fish, Ksh, and falls back to POSIX .profile
↩️🔤🌐📜🎨
One-command undo — restore all your originals with ./install.sh --uninstallBundled fonts — JetBrains Mono Nerd, Font Awesome, Icomoon Feather, Nerd Symbols — installed and cachedZen Browser CSS — custom userChrome.css and userContent.css tuned to match the Viper aesthetic50+ custom scripts — automatically marked executable and patched into PATHLive theming — change wallpaper, run matugen, everything recolors instantly


🧩 Stack

RoleTool
🏗 BaseArch Linux
🪟 CompositorHyprland
📊 BarWaybar
🖥 TerminalKitty + Foot
🐚 ShellZsh + Starship
🔔 NotificationsMako
🚀 LauncherRofi Wayland fork
🌐 BrowserZen Browser
🔒 LockerHyprlock
📁 FilesNautilus + Yazi
📝 EditorNeovim
🎨 ThemingMatugen
📡 System InfoFastfetch
🎵 Audiocmus + Cava + mpv
📈 Monitorbtop
Downloadsaria2


📦 Prerequisites

Important

The installer checks for these and warns about anything missing. It will not block installation unless core system utilities like cp or find are absent.

Tested On

🖥 OSArch Linux (latest)
GPUIntel / AMD / NVIDIA (all supported via Hyprland)
🪟 DisplayWayland (Hyprland)

Core packages

yay -S hyprland waybar foot kitty zsh rofi-lbonn-wayland-git mako       \
        hyprlock matugen-bin btop yazi fastfetch neovim starship          \
        cava cmus mpv nautilus zen-browser-bin aria2 advcpmv

Supporting packages

Click to expand
PackagePurpose
xdg-desktop-portal-hyprlandWayland portal — screenshare, file picker
polkit-gnomeGUI authentication agent
grim + slurp + wl-clipboardScreenshot toolchain
brightnessctlBrightness control
pavucontrolAudio volume GUI
pipewire + pipewire-pulse + pipewire-alsaAudio stack
wireplumberPipeWire session manager
networkmanagerNetworking
bluez + bluez-toolsBluetooth
xorg-xwaylandX11 app compatibility
ezaBetter ls
fdBetter find
batBetter cat
bleachbitSystem 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)

cp -r .config/* "$HOME/.config"
cp -r .local/bin/scripts "$HOME/.local/bin"
cp -r .icons "$HOME/.icons"
cp -r .themes "$HOME/.themes"
cp -r .fonts "$HOME/.fonts"
cp .Xresources "$HOME/.Xresources"
cp .gtkrc-2.0 "$HOME/.gtkrc-2.0"
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


🚩 Installer Flags

FlagWhat 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
--skip-deps🚀 Skip the ecosystem dependency check
-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

ShellFile patched
zsh~/.zshrc
bash~/.bashrc
fish~/.config/fish/conf.d/hypr_path.fish
ksh / mksh~/.kshrc
Other~/.profile


⌨️ Keybinds

Note

ALT is the primary modifier across the entire setup.

🔧 System
KeybindAction
F1Toggle mute (speakers)
F2 / F3Volume −/+ 10%
F4Toggle mute (mic)
F7Toggle Wi-Fi
F9Lock screen
F11 / F12Brightness −/+ 10%
PrintScreenshot
🚀 Apps & Launchers
KeybindAction
ALT + EnterTerminal (Kitty)
ALT + DApp launcher (Rofi)
ALT + RYazi (TUI file manager)
ALT + NNeovim
ALT + Mcmus
ALT + Hbtop
ALT + Taerc (email)
ALT + EEmoji picker
ALT + XPower menu
ALT + BBluetooth menu
ALT + LAirPods TUI
ALT + YYouTube downloader
ALT + VClipboard history
ALT + WChange wallpaper
ALT + KKill window
ALT + CDismiss notifications
ALT SHIFT + TNautilus (GUI files)
ALT SHIFT + PAudio mixer (wiremix)
ALT SHIFT + VWatch video
ALT SHIFT + SUniversal snip (QuickShell)
ALT SHIFT + KSystem cleaner
ALT SHIFT + Daria2 downloader
ALT SHIFT + CScript editor
ALT SHIFT + EConfig editor
ALT SHIFT + NWi-Fi menu
🌐 Web shortcuts (personal — edit before use)

Note

These open personal bookmarks hardcoded in the Hyprland config. Edit them before adopting this setup.

KeybindAction
ALT SHIFT + BZen Browser
ALT SHIFT + IZen private window
ALT + GGitHub
ALT SHIFT + YYouTube
ALT SHIFT + GGemini
ALT SHIFT + WWallhaven
ALT SHIFT + OChatGPT
ALT SHIFT + RReddit
🪟 Window management
KeybindAction
ALT + QClose window
ALT + FToggle fullscreen
ALT + PToggle floating
ALT + JToggle split
ALT + ↑ ↓ ← →Move focus
ALT SHIFT + ↑ ↓ ← →Swap window
ALT CTRL + ↑ ↓ ← →Resize window
ALT + LMB dragMove window
ALT + RMB dragResize window
🗂 Workspaces
KeybindAction
ALT + 1–0Switch to workspace 1–10
ALT SHIFT + 1–0Move window to workspace 1–10
ALT + Scroll up/downCycle workspaces
ALT + `` `` `Toggle scratchpad
ALT SHIFT + `` `` `Move window to scratchpad


🎨 Theming

Every color, everywhere — driven by your wallpaper.

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.png

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.

FilePurpose
.zen/chrome/userChrome.cssBrowser chrome — sidebar, tab bar, toolbar
.zen/chrome/userContent.cssInternal pages — new tab, about: pages
.zen/chrome/zen-logo-mocha.svgCustom 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
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
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
cat /tmp/hypr-install-*.log | tail -50


🔐 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:

For bugs and issues, use the Issue Tracker.


📄 License

MIT — see LICENSE for details.



Crafted with 💜 by Cybersnake


footer