A personal dotfile suite for debian | arch | fedora — Hyprland setups Its dark, minimal, and opinionated. Ships with a full installer that handles symlinks, backups, packages, and optional apps across Debian, Arch, and Fedora based systems.
Caution
Check Hyprland support for your distro version BEFORE installing. Running this on an unsupported distro version will waste your time — packages won't exist, dependencies will conflict, and the install will fail halfway through.
Verified working:
- Arch — always up to date, no version concerns
- Fedora [ 40, 41, 42 ] — supported via
solopasha/hyprlandCOPR - Fedora [ 43, 44+ ] — ⚠ COPR not updated yet, Hyprland will fail to install
- Linux Mint [ 21 / 22 ] — supported via JaKooLit's script
- Ubuntu [ 22.04 / 24.04 ] — supported via JaKooLit's script
Before installing on Fedora, check if your version is supported: solopasha/hyprland COPR
Before installing on Debian/Mint, check JaKooLit has a branch for your base version: JaKooLit/Ubuntu-Hyprland branches
Warning
Do not run as root. Symlinks will be created owned by root inside your home directory.
Run as your normal user — sudo is invoked internally only where needed.
Note
Recommended to run this after Hyprland is already installed and you are inside a Hyprland session. On Debian/Mint, Hyprland is not installed by this script — see the Installing Hyprland section first. On Arch and Fedora, Hyprland is installed automatically by the script.
Skip this section if you are on Arch or Fedora — the install script handles Hyprland for those distros automatically.
Click to expand — Debian / Linux Mint installation steps
This guide covers installing Hyprland on Linux Mint using JaKooLit's automated script.
[!NOTE] Credits: This setup uses scripts maintained by JaKooLit. Consider starring the original repo to support the developer.
Original Repository: JaKooLit/Ubuntu-Hyprland
sudo apt update && sudo apt upgrade -y
sudo apt install git make cmake -yLinux Mint is built on top of Ubuntu LTS — clone the branch that matches:
- Linux Mint 22 → Ubuntu 24.04 base → use branch
24.04 - Linux Mint 21 / 21.1 / 21.2 / 21.3 → Ubuntu 22.04 base → use branch
22.04
Mint 22:
cd ~
git clone -b 24.04 --depth 1 https://github.com/JaKooLit/Ubuntu-Hyprland.gitMint 21:
cd ~
git clone -b 22.04 --depth 1 https://github.com/JaKooLit/Ubuntu-Hyprland.gitcd Ubuntu-Hyprland
chmod +x install.sh
./install.sh- Enter your
sudopassword when prompted - Select options matching your hardware — pay attention if you are on Nvidia
- Reboot once complete
- On the login screen, select your username
- Click the session icon (small gear near the password field)
- Select Hyprland from the list
- Log in
Resources
# 1. Clone the repository
git clone https://github.com/Avdhut-code/Hypr-Trinity.git
cd Hypr-Trinity
# 2. Make executable
chmod +x install.sh
# 3. Run with your distro flag
./install.sh --debian # Debian / Ubuntu / Linux Mint
./install.sh --arch # Arch
./install.sh --fedora # Fedora| Flag | Short | Description |
|---|---|---|
--help |
-h |
Show usage and exit |
--restore |
-r |
Remove symlinks and restore backed up configs |
--update |
-u |
Pull latest changes and re-apply symlinks |
--yes-optional |
-y |
Automaticaly installs optional app no [y/n] |
--no-optional |
-n |
Skip optional app installs |
--debian |
-d |
Install for Debian / Ubuntu / Linux Mint (apt) |
--arch |
-a |
Install for Arch (pacman + yay) |
--fedora |
-f |
Install for Fedora (dnf + COPR) |
Examples:
# install on Arch, skip optional apps
./install.sh --no-optional --arch
# install on Arch, install all optional apps
./install.sh --yes-optional --arch
# restore original configs
./install.sh --restore
# update after new changes
hyprtrinity --updateIn order:
- Checks you are in the correct directory and running on the right distro
- Writes
DOTFILE_SYSTEM=<distro>to~/.bashrcfor use byhyprtrinity - Installs system packages via your distro's package manager
- Copies the repo to
~/.local/share/Hypr-Trinity/(permanent home) - Adds current user to
i2cgroup for DDC-CI brightness control - Backs up any existing configs from
~/.config/to a timestamped backup folder - Creates symlinks in
~/.config/pointing to the repo configs - Creates symlinks in
~/.local/bin/pointing to the custom scripts - Appends environment variables and PATH exports to
~/.bashrc - Applies the GTK theme via
gsettings/xfconf-querybased on your desktop session - Optionally prompts to install: Hyprshot, Walk, Obsidian, Zen Browser, VSCode
- Optionally symlinks
install.shashyprtrinityin~/.local/bin
# 1. Source your shell in the current terminal
source ~/.bashrc
# 2. Verify commands are reachable
which custombrightnessctl
which hyprtrinity
# 3. Log out and back into Hyprland
# configs are symlinked but Hyprland needs a fresh session to pick them up
# 4. i2c group (for brightness) takes effect after re-login
groups | grep i2cHyprland is not installed by this script on Debian-based systems — too many version and hardware variables to automate reliably. Install it first via JaKooLit's script, then run this installer.
Packages installed via apt:
git ddcutil btop htop libnotify-bin pavucontrol wireplumber pipewire playerctl wofi swaybg alacritty evince xed nemo mpv curl
Hyprland and all related Wayland packages are installed via pacman. AUR packages (Obsidian, VSCode) require yay — the script installs it automatically if not found.
Packages installed via pacman:
git ddcutil btop htop libnotify pavucontrol wireplumber pipewire pipewire-pulse playerctl wofi swaybg alacritty evince gedit nemo mpv curl hyprland hyprlock hypridle hyprpaper waybar swaync polkit-gnome xdg-desktop-portal-hyprland uwsm
The installer enables the solopasha/hyprland COPR repository automatically before installing packages. You will be prompted to confirm this by dnf.
Packages installed via dnf:
git ddcutil btop htop libnotify pavucontrol wireplumber pipewire pipewire-pulse playerctl wofi swaybg alacritty evince xed nemo mpv curl hyprland hyprlock hypridle hyprpaper waybar SwayNotificationCenter polkit-gnome xdg-desktop-portal-hyprland uwsm
After install, the script optionally symlinks itself as hyprtrinity into ~/.local/bin — so you can update the dotfiles at any time without needing the original cloned repo.
hyprtrinity --updateThis will:
git pullthe latest changes from~/.local/share/Hypr-Trinity/- Re-run the full install for your distro — asking user for updating optional apps and take the confirmation prompt
- Re-apply all symlinks to pick up any new config files added in the update
Note
hyprtrinity reads $DOTFILE_SYSTEM from your environment to know which distro installer to call.
This variable is written to ~/.bashrc automatically during first install.
If the command fails with "DOTFILE_SYSTEM not set", run source ~/.bashrc first and try again.
To undo the installation — remove all symlinks and restore your original configs:
./install.sh --restore
# or if hyprtrinity is set up:
hyprtrinity --restoreThis will:
- Remove all symlinks from
~/.config/and~/.local/bin/ - Move your original config folders back from the backup to
~/.config/ - Print the manual uninstall command for packages
Note
Installed packages and applications are not removed automatically. The restore output will print the exact command to remove them for your distro.
Backup location:
~/.local/share/Hypr-Trinity/backupConfigs/backup_<YYYYMMDD_HHMMSS>/
Multiple backups are kept. --restore always uses the most recent one.
All configs, scripts, and themes live in a single directory and are linked to their target locations via symlinks — nothing is duplicated outside the repo.
Hypr-Trinity/
├── bin/ # Custom scripts (→ ~/.local/bin/)
│ ├── custombrightnessctl.sh # DDC-CI brightness control via ddcutil
│ ├── custombtoplauncher.sh # Custom btop terminal launcher
│ ├── customhyprlandexit.sh # Hyprland session exit handler
│ ├── customlinkopenr.sh # Open URLs from keybind
│ ├── customwofisearch.sh # Wofi search launcher
│ └── startup.sh # Exec-once startup script
├── config/ # App configs (→ ~/.config/)
│ ├── hypr/ # Hyprland compositor
│ │ ├── hyprland.conf # Main config
│ │ ├── hypridle.conf # Idle and screen lock behavior
│ │ ├── hyprlock.conf # Lock screen config
│ │ ├── webappsbinds.conf # Web app keybindings
│ │ └── workspace.conf # Workspace and monitor setup
│ ├── waybar/ # Status bar
│ │ ├── config.jsonc
│ │ └── style.css
│ ├── wofi/ # App launcher
│ │ ├── config
│ │ ├── style.css
│ │ └── SearchBarStyle.css
│ ├── btop/ # System monitor
│ │ ├── btop.conf
│ │ └── theme/
│ └── swaync/ # Notification daemon
├── theme/ # Theming
│ ├── gtkThemes/
│ │ └── Graphite-Dark/ # GTK theme (→ ~/.local/share/themes/)
│ └── Obsidian/
│ └── pitchBlack/ # Obsidian theme (manual install)
├── wallpaper/ # Desktop wallpapers
├── backupConfigs/ # Created on install — timestamped backups of original configs
├── bashAppend.sh # Appended to ~/.bashrc on install
├── install.sh # Main installer (also symlinked as hyprtrinity)
└── README.md
| Source | Target | Notes |
|---|---|---|
config/hypr/ |
~/.config/hypr |
Entire folder symlinked |
config/waybar/ |
~/.config/waybar |
Entire folder symlinked |
config/wofi/ |
~/.config/wofi |
Entire folder symlinked |
config/btop/ |
~/.config/btop |
Entire folder symlinked |
config/swaync/ |
~/.config/swaync |
Entire folder symlinked |
config/alacritty/ |
~/.config/alacritty |
Entire folder symlinked |
theme/gtkThemes/Graphite-Dark/ |
~/.local/share/themes/Graphite-Dark |
Theme folder symlinked |
bin/custombrightnessctl.sh |
~/.local/bin/custombrightnessctl |
Individual binary symlink |
bin/custombtoplauncher.sh |
~/.local/bin/custombtoplauncher |
Individual binary symlink |
bin/customhyprlandexit.sh |
~/.local/bin/customhyprlandexit |
Individual binary symlink |
bin/customlinkopenr.sh |
~/.local/bin/customlinkopenr |
Individual binary symlink |
bin/customwofisearch.sh |
~/.local/bin/customwofisearch |
Individual binary symlink |
bin/customwallpaperswitcher.sh |
~/.local/bin/customwallpaperswitcher |
Individual binary symlink |
install.sh |
~/.local/bin/hyprtrinity |
Optional — prompted during install |
The Graphite-Dark GTK theme is bundled in this repo and applied automatically during install. It works across Hyprland, GNOME, Cinnamon, and XFCE sessions.
mkdir -p ~/.local/share/themes
cp -r ./theme/gtkThemes/Graphite-Dark ~/.local/share/themes/Via command line (pick your desktop):
# Hyprland / GNOME
gsettings set org.gnome.desktop.interface gtk-theme "Graphite-Dark"
# Cinnamon (Linux Mint default)
gsettings set org.cinnamon.desktop.interface gtk-theme "Graphite-Dark"
# XFCE
xfconf-query -c xsettings -p /Net/ThemeName -s "Graphite-Dark"Via Linux Mint GUI: System Settings → Appearance → Themes → select Graphite-Dark
Theme applied in gsettings but not showing:
# log out and back in — Hyprland needs a fresh session
# verify gsettings actually has the value
gsettings get org.gnome.desktop.interface gtk-themeReverting to default:
gsettings reset org.gnome.desktop.interface gtk-theme
gsettings reset org.cinnamon.desktop.interface gtk-themeScreenshot utility integrated via keybindings.
| Keybinding | Action |
|---|---|
Print |
Capture current monitor |
Super + Print |
Capture active window |
Shift + Print |
Capture region (drag to select) |
Screenshots are saved to ~/Pictures/Screenshots/ by default.
The install script prompts automatically. Select 1 to auto-install.
git clone https://github.com/Gustash/hyprshot.git ~/Hyprshot
chmod +x ~/Hyprshot/hyprshot
mkdir -p ~/.local/bin
ln -s ~/Hyprshot/hyprshot ~/.local/bin/hyprshot
hyprshot --helphyprshot -m output # capture monitor
hyprshot -m window # capture window
hyprshot -m region # capture region
hyprshot -m region -o ~/custom.png # save to custom pathrm ~/.local/bin/hyprshot
rm -rf ~/HyprshotResources: Hyprshot Repository · Hyprland Bindings Wiki
Minimal terminal file manager — navigate your filesystem interactively and cd directly into directories.
The install script prompts automatically. Select 1 to auto-install.
The script clones ~/walk and runs its bundled install.sh which handles the build and binary placement.
git clone https://github.com/antonmedv/walk.git ~/walk
chmod +x ~/walk/install.sh
bash ~/walk/install.sh
walk --helpwalk # browse current directory
walk ~/docs # browse a specific path
cd $(walk) # navigate and cd into selected directoryrm -rf ~/walk
which walk && rm "$(which walk)"Resources: Walk Repository
Note-taking app — not available in standard repos. The script fetches the latest .deb / .rpm from GitHub releases and installs via your package manager.
A Pitch Black Obsidian theme is also bundled in this repo under theme/Obsidian/pitchBlack/.
- Checks if
obsidianis already installed — skips if found - Fetches the latest version from the GitHub API
- Downloads the appropriate package to
/tmp/ - Installs via
apt/dnf/ AUR (yay) - Cleans up the package file from
/tmp/
The install script prompts automatically. Select 1 to auto-install.
# Debian/Ubuntu/Mint — replace version number
curl -L https://github.com/obsidianmd/obsidian-releases/releases/download/v1.5.12/obsidian_1.5.12_amd64.deb \
-o /tmp/obsidian.deb
sudo apt install -y /tmp/obsidian.deb
rm /tmp/obsidian.deb# replace YourVault with your actual vault folder name
mkdir -p ~/YourVault/.obsidian/themes/
cp -r ~/.local/share/Hypr-Trinity/theme/Obsidian/pitchBlack \
~/YourVault/.obsidian/themes/Then inside Obsidian: Settings → Appearance → Themes → select Pitch Black.
sudo apt remove obsidian # Debian
sudo dnf remove obsidian # Fedora
yay -Rns obsidian # ArchResources: Obsidian Download · GitHub Releases
Firefox-based browser with a minimal, distraction-free UI. Not in standard repos — the script downloads and extracts the official tarball.
Note
Zen lives at ~/zen-browser/. Do not delete this folder — ~/.local/bin/zen symlinks directly to the binary inside it.
On Arch, yay installs zen-browser-bin from the AUR instead, which handles updates automatically.
- Checks if
zenis already installed — skips if found - Arch: installs
zen-browser-binviayay - Debian/Fedora: downloads
zen.linux-x86_64.tar.xzfrom GitHub to/tmp/ - Extracts to
~/zen-browser/ - Symlinks
~/zen-browser/zen→~/.local/bin/zen - Cleans up the tarball
The install script prompts automatically. Select 1 to auto-install.
curl -L https://github.com/zen-browser/desktop/releases/latest/download/zen.linux-x86_64.tar.xz \
-o /tmp/zen.tar.xz
mkdir -p ~/zen-browser
tar -xf /tmp/zen.tar.xz -C ~/zen-browser --strip-components=1
ln -sfn ~/zen-browser/zen ~/.local/bin/zen
rm /tmp/zen.tar.xz
zen --versionls -la ~/.local/bin/zen # check symlink exists
ls -la ~/zen-browser/zen # check binary exists
echo $PATH | grep .local/bin # check PATH
# missing dependencies
sudo apt install libgtk-3-0 libdbus-glib-1-2rm ~/.local/bin/zen
rm -rf ~/zen-browserResources: Zen Browser GitHub · Zen Browser Website
Not in standard repos by default. The script downloads the latest stable .deb / .rpm directly from Microsoft and installs it via your package manager. The Pitch Black theme extension is also installed automatically.
- Checks if
codeis already installed — skips if found - Arch: installs
visual-studio-code-binviayay - Debian/Fedora: downloads latest stable package from Microsoft to
/tmp/ - Installs via
apt/dnf - Cleans up the package file
- Installs the Pitch Black theme extension via
code --install-extension - Writes the theme to
~/.config/Code/User/settings.json
The install script prompts automatically. Select 1 to auto-install.
# always gets latest stable
curl -L "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64" \
-o /tmp/vscode.deb
sudo apt install -y /tmp/vscode.deb
rm /tmp/vscode.deb
code --version
# install theme
code --install-extension viktorqvarfordt.vscode-pitch-black-themeCtrl + Shift + P → Color Theme → Pitch Black
sudo apt remove code # Debian
sudo dnf remove code # Fedora
yay -Rns visual-studio-code-bin # ArchResources: VSCode Download · Pitch Black Theme







