From fe32352c14fc838e803bd224d43f251b9fa215da Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Wed, 21 Oct 2026 19:12:23 +0200 Subject: docs(conky): conky reloads its config on an in-place write conky holds an inotify watch (IN_MODIFY) on the inodes of conky.conf and dashboard.lua and reloads when either is written in place: changing a colour line made the live dashboard recolour within one update, with the same PID. AGENTS.md and install.sh said it never rereads its config. The restart in install.sh stays: a first install, a config replaced by rename (which ends the watch) and a cached widget module still need it. Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 6 ++++-- install.sh | 13 ++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index a069dd7..9576bc6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -385,7 +385,9 @@ them by exit code: rofi exits non-zero for ordinary reasons such as Escape. - **conky**: change colours in the `conky.config` block only. `conky.text` is laid out with absolute `${goto}` pixel offsets tuned to label widths, so editing text means re-tuning every goto on that line. See - `~/.config/conky/CLAUDE.md`. Conky does not hot-reload. + `~/.config/conky/CLAUDE.md`. Conky reloads `conky.conf` and `dashboard.lua` + when either is written in place (inotify on the inode); an editor or tool + that saves by rename ends the watch, and then only a restart picks it up. - **Committed files carry no home paths.** A gitleaks hook blocks them, and it has been right every time. Where a live config mixes theme keys with personal data (`qt6ct.conf` has an `ignored_applications` list), track only the @@ -417,7 +419,7 @@ The table is what it does, and what to run if you change a config by hand. | hyprlock | nothing; it reads its config per lock, so the next lock picks it up | | kitty | `pkill -USR1 -x kitty` | | Sublime Text | nothing; it watches `Packages/User` and reloads both the scheme and the theme | -| conky | restart it; no hot-reload | +| conky | nothing; it reloads `conky.conf` on an in-place write. Restart it after a widget edit, or a save by rename | | neovim | `:colorscheme udt`, or restart it | | Qt / GTK apps | restart the app | | btop, Joplin | restart the app | diff --git a/install.sh b/install.sh index 1c202d7..e25e4ec 100755 --- a/install.sh +++ b/install.sh @@ -254,8 +254,9 @@ fi # already listed there. Skipped silently when neither app is installed. "$repo/bin/udt-appthemes" || true -# conky reads one config at startup and never rereads it, so the generated file -# has to be in place before the restart below. +# conky rereads its config when it is written in place, but the links below +# have to exist for it to find the file at all, and the restart further down +# covers a first install and a config replaced by rename. # # The Lua dashboard lives in its own repo; udt-palette renders its colours into # conky.conf there. Both the config and the Lua it loads are linked, since @@ -283,7 +284,7 @@ if [ -d "$hypr_repo" ]; then fi # Reload what is running. Writing the configs is not enough: kitty and -# Hyprland reread on a signal, conky only on a restart, and rofi +# Hyprland reread on a signal, conky on an in-place write, and rofi # reads its theme per launch so it needs nothing. Each is guarded, because none # of them is necessarily running, and a missing one is not an error. reloaded="" @@ -297,8 +298,10 @@ if command -v udt-accent >/dev/null 2>&1 && [ -e "$HOME/.cache/udt/wpaper" ]; th udt-accent "$HOME/.cache/udt/wpaper" >/dev/null 2>&1 && reloaded="$reloaded accent" fi -# conky has no hot-reload and nothing respawns it, so it is restarted only if -# it was already running. +# conky reloads an in-place write on its own, but its inotify watch is on the +# inode, so a first install or a config replaced by rename goes unseen, and a +# widget module stays cached until a restart. Nothing respawns it, so it is +# restarted only if it was already running. if pgrep -x conky >/dev/null 2>&1; then pkill -x conky 2>/dev/null sleep 0.5 -- cgit v1.2.3