diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-24 12:18:21 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-24 12:18:21 +0200 |
| commit | 2b05dad2041cbefe9551d0dd475e52fc229e2798 (patch) | |
| tree | 6c8f6cd3b71519622eedd0f0f494733f37af2d19 /docs/superpowers/specs/2026-10-24-companion-seat-design.md | |
| parent | f7ff49d41fab4a168858c35316bffa4063d1e630 (diff) | |
| download | quickshell-2b05dad2041cbefe9551d0dd475e52fc229e2798.tar.gz quickshell-2b05dad2041cbefe9551d0dd475e52fc229e2798.zip | |
docs: the companion's seat on the assistant card
Records that Hyprland's typing binds fire under the canvas's exclusive
keyboard, which is why the canvas reports no typing of its own, and that
the seat fixes her right edge rather than her centre.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'docs/superpowers/specs/2026-10-24-companion-seat-design.md')
| -rw-r--r-- | docs/superpowers/specs/2026-10-24-companion-seat-design.md | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/docs/superpowers/specs/2026-10-24-companion-seat-design.md b/docs/superpowers/specs/2026-10-24-companion-seat-design.md index b858e5a..3e7fb0f 100644 --- a/docs/superpowers/specs/2026-10-24-companion-seat-design.md +++ b/docs/superpowers/specs/2026-10-24-companion-seat-design.md @@ -1,6 +1,6 @@ # Companion seat: design -Date: 2026-10-24. Status: designed, not implemented. +Date: 2026-10-24. Status: implemented; the sitting art is generated by the user. ## Goal @@ -14,6 +14,10 @@ short card would need its own art to read anything below her feet. ## Verified before designing +- **Hyprland's typing binds fire under the canvas.** With the canvas open + and holding the keyboard `Exclusive`, socket2 carried + `custom>>keystone-typing` and `custom>>keystone-delete` for every burst + typed into it, so the companion needs no input of the canvas's own. - **The tall card has a fixed top.** `Card.tall` is `mode === "chat" || panel`, and while tall its height is `fullHeight`, set by the window to 70% of the screen height. The card is centred, so its top is @@ -41,9 +45,11 @@ card. The companion's `seated` is `asst.open && asst.tall`. Seated, her window is on `asst.screenObj` and its margins put her seat's bottom 35 px below -the card's top, with her centre 60 px right of the screen's centre: the -window stays anchored right and bottom, `margins.bottom = screenH - cardTop -- 35`, `margins.right = screenW / 2 - 60 - seatWidth / 2`. Not seated, the +the card's top, with her right edge 90 px right of the screen's centre: +the window stays anchored right and bottom, `margins.bottom = screenH - +cardTop - 35`, `margins.right = screenW / 2 - 90`. Her right edge rather +than her centre, because frames differ in width and the window would move +with every frame. Both numbers were checked by eye. Not seated, the margins are today's 24 and 16. `seated` changing runs the monitor hop's path: she drops out, the window @@ -82,11 +88,7 @@ ungenerated set shows. ### Inputs Typing and BackSpace keep arriving as `keystone-typing` and -`keystone-delete` from Hyprland. The canvas holds the keyboard -`Exclusive`; Hyprland binds should still fire, since the compositor -matches binds before delivering keys. Checked first, by typing into the -canvas with `qs log` open. If they do not fire, the card's input -`onTextChanged` sets `typingAt`, and a shorter text sets the mock. +`keystone-delete` from Hyprland, which fire under the canvas (see above). ## Check |
