From 1e87ee1599d9660731e86332b1d4e906b40cf2da Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 1 Feb 2026 13:25:16 -0600 Subject: fix(hyprland): dismiss plugin notifications on startup Add hyprctl dismissnotify after hyprpm update to clear hardcoded plugin initialization messages. Also document set-theme and plugin notification issues in todo.org. --- dotfiles/hyprland/.config/hypr/hyprland.conf | 2 +- todo.org | 54 ++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/dotfiles/hyprland/.config/hypr/hyprland.conf b/dotfiles/hyprland/.config/hypr/hyprland.conf index 78c5bdf..aef8d2e 100644 --- a/dotfiles/hyprland/.config/hypr/hyprland.conf +++ b/dotfiles/hyprland/.config/hypr/hyprland.conf @@ -17,7 +17,7 @@ exec-once = systemctl --user start xdg-desktop-portal-hyprland xdg-desktop-porta # Core services exec-once = /usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh exec-once = dunst > ~/.local/var/log/dunst-$(date +%Y-%m-%d-%H%M%S).log 2>&1 -exec-once = hyprpm update -n && sleep 2 && hyprctl dismissnotify -1 +exec-once = hyprpm -n update && sleep 1 && hyprctl dismissnotify -1 # Desktop appearance (after portal is ready) exec-once = swww-daemon && sleep 1 && swww img ~/pictures/wallpaper/trondheim-norway.jpg diff --git a/todo.org b/todo.org index aea7e6f..4f4f5c2 100644 --- a/todo.org +++ b/todo.org @@ -429,6 +429,60 @@ Removed the Hardware Workarounds section from archsetup entirely. The only worka (AMD Zen 5 RDSEED32) didn't actually suppress the warning message - the kernel detection runs separately. Proper fix requires BIOS updates from vendors with AGESA microcode. +*** TODO [#A] Fix set-theme overwriting repo configs on login +The set-theme script runs on every Hyprland startup (exec-once) and copies theme files +to symlinked config locations. Since stow creates symlinks pointing to the repo, +this overwrites repo files with theme directory contents. + +**** Problem +- hyprland.conf:25 runs: exec-once = set-theme "$(cat ~/.config/current-theme...)" +- set-theme copies from ~/.config/themes/dupre/* to ~/.config/* +- Since ~/.config/waybar/style.css is a symlink → repo, the REPO file gets overwritten +- Theme files have OLD versions (wireplumber instead of pulseaudio) +- Every login reverts fixes made to main config files + +**** Root Cause Files +- dotfiles/hyprland/.config/themes/dupre/waybar.css has #wireplumber (should be #pulseaudio) +- set-theme script copies theme files over symlinks, overwriting repo + +**** Solutions to Consider +1. Update theme files to match main configs (sync waybar.css → themes/*/waybar.css) +2. Make theme files the source of truth and symlink TO them instead +3. Remove set-theme from exec-once (only run manually) +4. Modify set-theme to detect symlinks and skip or warn + +**** Related +See also: TODO [#C] Review theme config architecture for dunst/fuzzel (same issue) + +*** TODO [#A] Suppress Hyprland plugin "Initialized" notifications +Plugin initialization messages ("[hyprscrolling] Initialized successfully!") appear +on every login despite removing -n flag from hyprpm update command. + +**** ROOT CAUSE FOUND +The notifications are HARDCODED in the plugin binaries themselves, NOT in hyprpm: +- strings hyprscrolling.so | grep "Initialized" → "[hyprscrolling] Initialized successfully!" +- strings xtra-dispatchers.so | grep "Initialized" → "[xtra-dispatchers] Initialized successfully!" +- hy3.so does NOT have this string (no notification from hy3) + +The plugins call HyprlandAPI::addNotification() directly in their PLUGIN_INIT() function. +The hyprpm -n flag only controls hyprpm's own "[hyprpm] Loaded plugins" message. + +**** Solution Options +1. **Dismiss after delay** (workaround): + exec-once = hyprpm reload && sleep 1 && hyprctl dismissnotify -1 + +2. **File issue with hyprland-plugins** requesting config option to disable + URL: https://github.com/hyprwm/hyprland-plugins/issues + +3. **Build plugins from source** with notification removed (not practical) + +4. **Wait for upstream fix** - this is common complaint, may be addressed + +**** References +- [[https://github.com/hyprwm/Hyprland/issues/8101][Issue #8101: Only notify if something fails]] +- [[https://wiki.hypr.land/Plugins/Using-Plugins/][Hyprland Plugin Wiki]] +- Plugin binaries: /var/cache/hyprpm/cjennings/hyprland-plugins/ + *** TODO [#A] Ensure sleep/suspend works on laptops Critical functionality for laptop use - current battery drain unacceptable **NOTE:** This applies to Framework Laptop (velox), not Framework Desktop (ratio) -- cgit v1.2.3