Hypr-U is a lightweight Go daemon that watches your Hyprland configuration files (or any files you choose) and automatically runs commands when they change.
Perfect for users who frequently edit configs and want instant reloads of:
waybarhypridlehyprpaper- custom scripts
- anything you want to auto-restart
Hypr-U is fast, minimal, self-reloading, and extremely configurable.
- 🚀 Automatically reload Hyprland components when configs change
- 🔄 Multiple commands per file (stop → start sequences)
- ⚙️ Background or foreground execution per command
- 🔍 Watches any file or directory
- 🧠 Watches and reloads its own config file automatically
- 💾 Creates a default
~/.config/hypr-u.yamlif missing - 📁 Supports
~expansion in paths - 🧵 Non-blocking, channel-based event system
- 📦 Fully self-contained (default config embedded with
go:embed)
Clone and build:
git clone https://github.com/Seann-Moser/hypr-u
cd hypr-u
go build -o hypr-u .Install:
sudo cp hypr-u /usr/local/bin/Or run directly:
./hypr-uAdd this line to your Hyprland config:
exec-once = hypr-uThis ensures Hypr-U runs in the background and reloads your Hyprland components whenever configs change.
Hypr-U reads:
~/.config/hypr-u.yaml
If this file does not exist, it will automatically create it using the embedded default config.
Hypr-U watches its own config file and automatically reloads whenever you edit it.
You never need to restart hypr-u.
interval: 2s # polling interval
files: # files to watch Each watched file has:
| Field | Description |
|---|---|
path |
File to watch |
commands |
List of commands to run on change |
commands[].path |
Executable to run |
commands[].args |
Arguments for command |
commands[].background |
Run in background? |
# Default polling interval
interval: 2s
# Default files
files:
- path: ~/.config/hypr/hypridle.conf
commands:
- path: killall
args: ["hypridle"]
background: false
- path: /usr/bin/hypridle
background: true
- path: ~/.config/waybar/**
commands:
- path: killall
args: ["waybar"]
background: false
- path: /usr/bin/waybar
background: true- Runs
killall hypridle - Starts
hypridlein background
- Runs
killall waybar - Starts
waybarin background
Run manually:
hypr-uOr let Hyprland launch it:
exec-once = hypr-uYou'll see logs like:
Watching files...
Change detected in ~/.config/waybar/config.jsonc
Ran command killall
Started background command /usr/bin/waybar
This project is licensed under the MIT License - see the LICENSE file for details.