aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-21 19:12:23 +0200
committerDanilo M. <danix@danix.xyz>2026-10-21 19:12:23 +0200
commitfe32352c14fc838e803bd224d43f251b9fa215da (patch)
tree87273171f9f753c326cab3bba942397b980b22da
parentecf59d1c7c74fe817ee4f9e392e319ad9a8b541a (diff)
downloadunified-desktop-theme-fe32352c14fc838e803bd224d43f251b9fa215da.tar.gz
unified-desktop-theme-fe32352c14fc838e803bd224d43f251b9fa215da.zip
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 <noreply@anthropic.com>
-rw-r--r--AGENTS.md6
-rwxr-xr-xinstall.sh13
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