diff options
| author | user <user@clank> | 2026-08-15 20:10:27 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-08-15 20:10:27 +0200 |
| commit | bd84065613df44f131476d4b66fd39b2c76da801 (patch) | |
| tree | 9ee09027b05cea7f5210bef184b578cd62579ff7 /README.md | |
| parent | sl0ppty: answer the terminal when it is asked how big it is (diff) | |
| download | slosh-bd84065613df44f131476d4b66fd39b2c76da801.tar.gz slosh-bd84065613df44f131476d4b66fd39b2c76da801.tar.xz slosh-bd84065613df44f131476d4b66fd39b2c76da801.zip | |
sl0ppty: make the finder a modal, and a picker worth using
It was a bare coloured rectangle painted over whatever pane it landed
on: no border, no title, no scrim, no way out you could see. It read as
output from the program underneath rather than as a window in front of
it, which is the one thing an overlay has to get right. It is now a
modal like the cheatsheet -- same frame, same scrim, same close button
in the place a pane keeps one -- differing in the way that matters: the
cheatsheet is read, so any key dismisses it, while this one is used, so
it keeps the keyboard until it is answered.
The list was the other half of the problem. It showed `1:` for a tab
with no name, which looks like something failed to load; a row for a
pane with no purpose was three columns of nothing; there was no mark for
the pane you are already in, no count, and nothing to say a list had
more below the tenth row -- so a list that scrolled looked like a list
that ended. An empty result was an empty box, which reads as a broken
finder rather than a wrong query.
Now: a query field that looks like one (so it shows where the typing
goes before you type), the current pane marked, tab/title/purpose told
apart by weight, the row under the pointer lit, "N of M" in the footer,
arrows for what is off each end, and "no pane matches that" when there
is nothing.
Keys, because a picker in this shape is reached for by hands that
already know one: C-n/C-p, tab/shift-tab, home/end, page up/down, C-u to
clear the query, and wrapping at both ends -- one press of Up for the
last entry is worth more in a short list than overshoot protection.
Backspace deleted a *byte*, so one press through a multi-byte character
left the rest of it in the query; it deletes a character now, the way
the rename editor already did.
The finder owns the pointer as well as the keyboard: a press that is not
on one of its rows dismisses it and stops there, rather than also
landing on the layout behind and focusing the pane you were clicking
away from.
Found on the way: CSI Z (shift+tab) was not parsed at all, so it reached
neither a binding nor the program in the pane -- every terminal sends
back-tab that way, and it is the one chord whose shift lives in the
final byte rather than in a modifier param.
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -115,6 +115,12 @@ mistyped command in a fresh session no longer closes the session. ### The rest of it +- **Find a pane instead of remembering where it is.** `C-a f` opens a picker + over the whole session — every tab, including panes a small window has + collapsed out of sight. Type to narrow it by pane title, tab name or + purpose; arrows or `C-n`/`C-p` or tab to move, enter to go, and a dot marks + where you already are. Tabs stop being navigation somewhere around six + projects, and this is what replaces them. - **Select text to copy it.** Release the mouse and it is on your clipboard, sent to your terminal over ssh as well as locally. Middle click pastes. - **Images work.** Kitty graphics pass through to your terminal, which is the |
