diff options
| author | srdusr <[email protected]> | 2026-07-05 16:06:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2026-07-05 16:06:00 +0200 |
| commit | 744757fad22db7a5ebebca9a685cdb00589a1b02 (patch) | |
| tree | 1e73a425a307bae3274dad360b145560ce3e3e27 /docs/DEFAULTS.md | |
| parent | d448a82990efb5c510064f1de5b5d32e932a4f9e (diff) | |
| download | srdwm-744757fad22db7a5ebebca9a685cdb00589a1b02.tar.gz srdwm-744757fad22db7a5ebebca9a685cdb00589a1b02.zip | |
Let the config file take back a setting changed at runtime
Reported as windows still being tinted. The tint is the drop shadow, and
init.lua sets general.shadows to false - loading that same config in a
fresh compositor reports false, while the running session reported true.
The reason it could not be corrected is a defect in the live-settings replay
added earlier today. That replay re-applies every srd set after a config
reload so the titlebar menu's Customize rows survive a save. The unintended
half is that a live override then outranked the config file permanently:
editing init.lua and saving put the override straight back, which is the
state the session was found in.
Live-always-wins and config-always-wins are both wrong. The rule is now that
the config wins for anything it states, and a live override survives only
where the config is silent. That distinction cannot come from `values`,
where defaults are seeded before any script runs so every key looks set, so
the config engine records which keys srd.set actually touched during the
load. That record is cleared and rebuilt on each load and restored along
with everything else when a reload fails.
Verified both directions: a config-stated key reverts to the file's value on
the next reload, and a key the config never mentions keeps its live
override.
529 tests pass, clippy clean.
Diffstat (limited to 'docs/DEFAULTS.md')
| -rw-r--r-- | docs/DEFAULTS.md | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/docs/DEFAULTS.md b/docs/DEFAULTS.md index ded5b03..e0da5ef 100644 --- a/docs/DEFAULTS.md +++ b/docs/DEFAULTS.md @@ -868,7 +868,13 @@ checks the config directory's `.lua` modification times once a second and reloads when one changes. Set it to `false` for a config that does expensive work at load time. `Mod4+Ctrl+r` still reloads on demand in either case. -**A hand-made change is not undone by a reload.** A reload rebuilds the +**The config file wins for anything it states.** A reload drops any live +`srd set` override for a key the config sets itself, because the file is the +more deliberate statement and has to be able to correct a runtime change. +Without that rule a value changed once at runtime can never be fixed by +editing the config: every reload puts it straight back. + +**A hand-made change is not undone by a reload, where the config is silent.** A reload rebuilds the theme and general settings from the config file, which is right for a file edit but would also wipe every live `srd set` - and the titlebar right-click menu's "Customize" rows are all live `srd set`s. Every setting |