aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/README.md
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-17 10:06:12 +0200
committerDanilo M. <danix@danix.xyz>2026-10-17 10:06:12 +0200
commit1c68c391cd10b5726d082d487b97e7decb823512 (patch)
tree803bf7f950f3475d122742f2588d6a8daa189a13 /desktop/README.md
parent74fde3e0dae5a40c522ada14cf04945f3c806730 (diff)
downloadquickshell-1c68c391cd10b5726d082d487b97e7decb823512.tar.gz
quickshell-1c68c391cd10b5726d082d487b97e7decb823512.zip
desktop: settings search finds rows, and a hit reveals its row
Search used to stop at the page: clicking a result opened it at the top and left the setting to be found by eye. Now each settings module keeps its rows as searchItems, {text, key}, reread on every window open since the page itself is not loaded until shown: git runs gitcfg list, and autostart watches its file. A row hit opens the page, and Page.reveal() finds the row whose objectName is the key, waiting up to 3s for the page's own data, scrolls to it and flashes it in the accent. The reveal lives in Page, so a page only names its rows. Git's long keyword list was a stand-in for exactly this and is cut to "gitconfig". The autostart page takes its path from the module now that both read the file. Also corrects the AGENTS note on missed hot reloads: it blamed sed -i replacing the file, but the Edit tool writes a new inode too and usually reloads. The cause is unknown; the note now says how to detect it and that a process that stops watching needs a restart. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'desktop/README.md')
-rw-r--r--desktop/README.md15
1 files changed, 10 insertions, 5 deletions
diff --git a/desktop/README.md b/desktop/README.md
index ed30620..42c2efb 100644
--- a/desktop/README.md
+++ b/desktop/README.md
@@ -39,11 +39,16 @@ gear tile opens it, and so does IPC:
a short About. A page's back arrow and Escape return there; Escape on the
landing page closes the window.
-The search above the list matches each page's label and its module's
-`keywords`, the settings buried inside the page; an entry matched by a
-keyword shows which one. Enter opens the first match, Escape clears. Pages
-load only when opened, so their live contents (a git alias, an autostart
-command) are not searched, only the keywords.
+The search above the list matches each page's label, its module's
+`keywords`, and the rows inside it: every git value, every autostart line.
+A row hit opens its page scrolled to that row, flashed in the accent. Enter
+opens the first result, Escape clears.
+
+Pages load only when opened, so a module keeps its own copy of its rows,
+`searchItems` (`[{text, key}]`), and the window calls its `refresh()` on
+every open. `key` is the `objectName` of the row in the page; `Page.reveal()`
+looks for it, waiting up to 3s for the page's data to arrive, scrolls to it
+and flashes it, so a page needs no highlight code of its own.
## The modules