Complete guide to using hypricer for end users
- OS: Linux (tested on Arch, NixOS, Ubuntu 24.04+)
- Compositor: Hyprland 0.35+
- Tools:
- Rust 1.70+ (
rustc --version) - Git (
git --version) - Standard GNU coreutils
- Rust 1.70+ (
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/envcd ~/.config/hypr
git clone https://github.com/yourusername/hypricer
cd hypricercargo build --releaseOptional: Add to PATH
sudo ln -s ~/.config/hypr/hypricer/target/release/hypricer /usr/local/bin/hypricerEdit ~/.config/hypr/hyprland.conf:
# At the very top of the file
source = ~/.config/hypr/hypricer/live/active_session.conf
# ... rest of your configImportant: This line MUST be at the top so hypricer can manage your theme.
hypricer build --profile seikiYou should see:
🍚 hypricer v2.0
📂 Root: "/home/user/.config/hypr/hypricer"
📚 Loading Registry...
🎨 Compiling Theme: 'Seiki (The Sanctuary)'
🔍 Validating dependencies...
🧠 Injected: window_style -> logic::style
🧠 Injected: bar_style -> logic::bar
✅ Build Complete.
hyprctl reloadYour theme is now active!
# See if daemon is running
ps aux | grep hrm_daemon
# View live logs
tail -f ~/.config/hypr/hypricer/live/daemon.log
# Follow logs in real-time
journalctl --user -f -u hrm_daemon # if using systemd# Build and apply a different theme
hypricer build --profile modern_dark
# Reload Hyprland
hyprctl reloadThe daemon automatically restarts with the new theme.
# See the currently active config
cat ~/.config/hypr/hypricer/live/active_session.conf
# Check when it was last updated
stat ~/.config/hypr/hypricer/live/active_session.confcd ~/.config/hypr/hypricer
git pull
cargo build --release
# Rebuild your current theme
hypricer build --profile seikils ~/.config/hypr/hypricer/themes/Each directory is a theme:
seiki/- Advanced reactive thememodern_dark/- Simple starter themeyour_custom_theme/- Your creations!
Profiles are in profiles/*.toml and reference themes:
# profiles/my_setup.toml
base_theme = "seiki"
[overrides]
# Future: Override specific componentsWhy profiles?
- Same theme, different settings
- Example:
gaming.tomlandwork.tomlboth useseikibut with different watchers
cd ~/.config/hypr/hypricer/themes
git clone https://github.com/someone/amazing-theme
cd ../
hypricer build --profile amazing-theme~/.config/hypr/hypricer/
├── catalog/
│ ├── registry/ # Component definitions
│ └── static/ # Shared config files
│
├── themes/
│ ├── seiki/ # Theme packages
│ └── modern_dark/
│
├── profiles/
│ ├── seiki.toml # Profile definitions
│ └── default.toml
│
├── generated/ # Build artifacts (auto-generated)
│ └── source/
│
└── live/ # Runtime files
├── active_session.conf # Your active config
└── daemon # Running binary
✅ Safe to edit:
themes/*/- Your theme logic and templatesprofiles/*.toml- Profile definitionscatalog/registry/*.toml- Add new watchers/providers
generated/- Build artifactslive/active_session.conf- Active config
❌ Don't touch:
src/- hypricer CLI source (unless contributing)
Define available components:
[watcher.cpu_usage]
provider = "poll_cmd"
interval = 2000
cmd = "top -bn1 | grep 'Cpu(s)' | awk '{print $2}'"Wire components together:
[meta]
name = "My Theme"
template = "themes/mytheme/template.conf"
[static]
keybinds = "seiki_keybinds"
[dynamic]
window_style = "themes/mytheme/logic/style.rs"Select which theme to use:
base_theme = "mytheme"
[overrides]
# Future featureReduce watcher intervals for low-power setups:
# In catalog/registry/custom.toml
[watcher.battery]
interval = 30000 # 30s instead of 5sDisable unused watchers:
Edit your theme's theme.toml and remove watchers from inputs = [...]
Enable verbose logging:
RUST_LOG=debug hypricer build --profile seikiInspect generated code:
cat generated/source/src/main.rsCheck for compilation errors:
cd generated/source
cargo build --releaseAdd to your hyprland.conf:
# Quick theme switcher
bind = SUPER_SHIFT, T, exec, hypricer build --profile seiki && hyprctl reload
bind = SUPER_SHIFT, M, exec, hypricer build --profile modern_dark && hyprctl reloadUsing systemd:
Create ~/.config/systemd/user/hrm_daemon.service:
[Unit]
Description=Hypricer Theme Daemon
After=graphical-session.target
[Service]
Type=simple
ExecStart=%h/.config/hypr/hypricer/live/daemon
Restart=on-failure
[Install]
WantedBy=default.targetEnable:
systemctl --user enable hrm_daemon
systemctl --user start hrm_daemonA: No, hypricer is specifically designed for Hyprland. However, the concept could be adapted to other compositors.
A: No. The source = ... line simply loads hypricer's config on top of yours. You can still have other settings in hyprland.conf.
# Remove the source line from hyprland.conf
# Delete the directory
rm -rf ~/.config/hypr/hypricerChecklist:
- Did you run
hypricer build? - Did you reload Hyprland (
hyprctl reload)? - Check logs:
tail -f ~/.config/hypr/hypricer/live/daemon.log - Verify dependencies: Re-run build to see validation errors
A: Not directly yet, but it's planned! For now, you can copy logic files between themes manually.
A: Minimal. Typically <5MB RAM and <1% CPU. Watchers are lightweight polling threads.
A: Absolutely! See the Theme Developer Guide and submit a PR!
A: Yes, Hyprland is Wayland-only, so hypricer is too.
- Check logs: Most issues are visible in
live/daemon.log - Read error messages: hypricer gives detailed errors during build
- Ask the community: GitHub Discussions
- Report bugs: GitHub Issues
Next Steps: