diff options
| author | Danilo M. <danix@danix.xyz> | 2026-09-14 12:44:09 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-09-14 12:44:09 +0200 |
| commit | 60eae607ab75988fc441bb4d87ef790175009572 (patch) | |
| tree | b200101e43856d0cf2629b4b3d9564f54ec10be6 /desktop/README.md | |
| parent | 901e7d83f8af3defe2c602daad98fd3c67e1dd7c (diff) | |
| download | quickshell-60eae607ab75988fc441bb4d87ef790175009572.tar.gz quickshell-60eae607ab75988fc441bb4d87ef790175009572.zip | |
fix(desktop): honest alwaysActive docs and working Escape in confirm
Diffstat (limited to 'desktop/README.md')
| -rw-r--r-- | desktop/README.md | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/desktop/README.md b/desktop/README.md index e443ca0..29223b7 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -43,8 +43,9 @@ drawer needs to show it: null for a tile that says nothing beyond its name. - `page`: a `Component` for the full-height page behind the tile, or null. - `activate()`: what a tile with no page does when clicked. -- `alwaysActive`: whether the module's background service runs while the - drawer is closed, covered below. +- `alwaysActive`: declares whether the module's service is meant to run while + the drawer is closed. The drawer does not read it, the module implements its + own lifetime. Covered below. A module provides a tile, a page, both, or neither. The drawer does not care which: it reads those properties and does the obvious thing. A page is wrapped @@ -53,7 +54,8 @@ fire-and-forget, so its click calls `activate()` and closes the drawer. `modules/appearance/AppearanceModule.qml` is the smallest complete example: a name, an icon, a label, and an `activate()` that launches the separate -appearance shell. It has no page and no service. Sound, mail and vm each add a +appearance shell. It has no page, and it owns only a `Process` that fires the +picker on click, no always-active service. Sound, mail and vm each add a service and a page on top of that same shape. Module files live under `desktop/modules/<name>/` and reference root types @@ -63,20 +65,22 @@ directory import does not reach the parent. The moved `TransportButton.qml` and ## alwaysActive -Sound and mail are `alwaysActive: true`; vm is false. The property governs the -module's background service, not its page: pages are lazily loaded either way. +`alwaysActive` is declarative metadata: it documents whether a module's service +is meant to run while the drawer is closed. The drawer does not read or enforce +it. Each module implements its own service lifetime, and the property records +that choice rather than driving it. Sound and mail are `alwaysActive: true`; vm +is false. Sound's OSD has to answer a volume keypress with no drawer open, which is the -whole point of it, so its PipeWire service runs for the session. Mail's unread -count outlives the drawer and its config watcher makes a newly added account -appear without a restart, so its service runs too. The vm module's 2s stats -poll exists only to paint a page nobody is looking at, so it starts and stops -with the page. +whole point of it, so its PipeWire service is instantiated eagerly and runs for +the session. Mail's unread count outlives the drawer and its config watcher +makes a newly added account appear without a restart, so its service is +instantiated eagerly too. The vm module's 2s stats poll exists only to paint a +page nobody is looking at, so it starts and stops with the page. -That last line is not the whole story for vm: its lifecycle event stream runs +vm is not only its poll, however: its lifecycle event stream runs unconditionally, which is what keeps the VM list and the tile's dots current -while the page is closed. `alwaysActive` gates the poll, not everything the -module does. +while the page is closed. Pages are lazily loaded in every module. ## Geometry |
