diff options
| author | Peter Geissler <peter@haxx.in> | 2026-09-20 19:55:03 +0200 |
|---|---|---|
| committer | Peter Geissler <peter@haxx.in> | 2026-09-20 19:55:03 +0200 |
| commit | 65a694b194bd68f8c6ba4b961e2cc906b8738a6c (patch) | |
| tree | 0c915581b19fd379b4da9e118814c022fefe4e1d /docs | |
| parent | sidebar: a talkative pane can no longer cost you a tab (diff) | |
| download | slosh-65a694b194bd68f8c6ba4b961e2cc906b8738a6c.tar.gz slosh-65a694b194bd68f8c6ba4b961e2cc906b8738a6c.tar.xz slosh-65a694b194bd68f8c6ba4b961e2cc906b8738a6c.zip | |
sidebar: a status can have more than one row (tab_bar_status_lines)
Sixteen cells is not enough for a sentence, and a sentence is what a pane
has to say: "add a summary…" is most of a status and none of its meaning.
tab_bar_status_lines 3 word-wraps instead of cutting, and the same column
carries forty-eight cells rather than sixteen.
Wrapped, the rows under a tab stop being a list of panes and become a
paragraph each, so the shape no longer says where one pane's status ends and
the next begins -- both are italic text down one column. Alternate panes are
drawn on alternate bands to say it instead: tab_status_stripe, derived from
the theme like tab_status_fg, so a theme that has never heard of any of this
still gets a band in its own family. Nothing is painted at one line, where
there is no ambiguity to resolve and a band would take a translucent
terminal's background away for nothing.
1 is the default and is the old behaviour exactly, down to cutting at the
column rather than the last word before it: with no next row to move the word
to, breaking early would spend cells on nothing. The reason to prefer a word
boundary only exists once there is somewhere for the word to go.
Rows count against tab_bar_status as before, so wrapping trades panes for
words within the same allowance, and the allowance itself still gives way to
the tabs. A status that will not fit whole is dropped whole and reported with
the ellipsis, rather than shown as a fragment that reads like the whole
thing. Every row of a status is the same `find:` door.
tabstatus's buffer goes to 256 to match pane_status's own slot: at one line
the drawing cut it anyway, but wrapped it is the whole string that has to
survive the trip.
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/config.md | 2 | ||||
| -rw-r--r-- | docs/panes.md | 14 | ||||
| -rw-r--r-- | docs/slosh.5 | 13 |
3 files changed, 26 insertions, 3 deletions
diff --git a/docs/config.md b/docs/config.md index 0da27a6..6fa0300 100644 --- a/docs/config.md +++ b/docs/config.md @@ -83,7 +83,7 @@ theme { frame_focus "#00ff88" } // ...but that one colour is mine | group | what is in it | | --------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | geometry | `gap` `gap_aspect` `padding` `compact` `rounded` `title_align` `title_inset` `min_pane` `min_split` | -| chrome | `status_bar` `status_line` `status_pad` `tab_bar_side` `tab_bar_width` `tab_bar_pad` `tab_bar_status` `tab_bar_chrome` `hints` `version_banner` `pane_buttons` `bell_indicator` `newtab_button` `newtab_pad` and the marks (`zoom_mark` `zoom_on_mark` `close_mark` `min_mark` `newtab_mark` `bell_mark`) | +| chrome | `status_bar` `status_line` `status_pad` `tab_bar_side` `tab_bar_width` `tab_bar_pad` `tab_bar_status` `tab_bar_status_lines` `tab_bar_chrome` `hints` `version_banner` `pane_buttons` `bell_indicator` `newtab_button` `newtab_pad` and the marks (`zoom_mark` `zoom_on_mark` `close_mark` `min_mark` `newtab_mark` `bell_mark`) | | behaviour | `focus_follows_mouse` `ctrl_d_exits` `scroll_lines` `scrollback` `scrollback_bytes` `toast_ms` `splash_ms` `hover_delay_ms` `double_click_ms` `word_separators` `anim_ms` `modal_scrim` `dim_unfocused` `float_shadow` `keep_dead` `in_band_shaders` `multi_attach` `attach_indicator` `size_follows` `shell` `editor` | | projects | `project_roots` `project_layout` (see [workspaces](workspaces.md)) | | colour | `theme { }` | diff --git a/docs/panes.md b/docs/panes.md index 9e437a2..6cc1055 100644 --- a/docs/panes.md +++ b/docs/panes.md @@ -57,6 +57,7 @@ tab_bar_side "left" // or "right"; "top" is the default tab_bar_width 18 // columns the sidebar takes tab_bar_pad 0 // blank rows above the first tab tab_bar_chrome true // frame it like a pane +tab_bar_status_lines 1 // rows one status may wrap onto newtab_button true // the `+` at the end of the list newtab_pad 1 // ...and the air before it ``` @@ -92,7 +93,18 @@ and the last row is an ellipsis rather than a status pretending the list is complete. A short terminal cuts the list the same way, and says so the same way: **the statuses give way before the tabs do**, because the list is how you navigate and a status is only an annotation on it — a talkative pane must not -be able to cost you a tab you can click. **Clicking a status row jumps to the +be able to cost you a tab you can click. + +**A status can be given more than one row.** `tab_bar_status_lines 3` word-wraps +it instead of cutting it, which is the difference between `add a summary…` and +the sentence — three rows of a sixteen-column sidebar is forty-eight cells. The +rows under a tab then read as a paragraph per pane rather than a line per pane, +so **alternate panes sit on alternate bands** (`tab_status_stripe`, derived from +the theme unless you name it): with the shape no longer saying where one pane's +status ends, the band does. At one line there is nothing to disambiguate and no +band is drawn, which leaves a translucent terminal's own background alone. Every +row of a status is the same door — clicking any of them jumps to that pane — and +they all count against `tab_bar_status`. **Clicking a status row jumps to the pane that said it**, across tabs. A status is set in italic rather than indented under its tab — the slant says "this belongs to the row above" without spending columns a narrow sidebar has none of, and says it on a monochrome theme too. The colour is part way diff --git a/docs/slosh.5 b/docs/slosh.5 index ec2d6fe..7fdd146 100644 --- a/docs/slosh.5 +++ b/docs/slosh.5 @@ -147,7 +147,18 @@ labels. Under each of a sidebar's tabs, up to \fIn\fR rows of what the panes inside said through OSC 5577 status \(em or how they died \(em with an ellipsis when there was more. Clicking a status row jumps to the pane that said it. -0 turns it off; \fBtop\fR has no room for it either way. +0 turns it off; \fBtop\fR has no room for it either way. The statuses give +way before the tabs do when the sidebar is short of rows: the list is how you +navigate, and a talkative pane must not cost you a tab you can click. +.TP +.BI tab_bar_status_lines\ n +How many rows one pane's status may wrap onto, rather than being cut at the +sidebar's width. 1, the default, is a single truncated row. Above that the +text is word-wrapped \(em three rows of a sixteen-column sidebar is +forty-eight cells rather than sixteen \(em and alternate panes are drawn on +alternate bands (\fBtab_status_stripe\fR), because wrapped rows are a +paragraph per pane and the shape alone no longer says where one ends. Rows +still count against \fBtab_bar_status\fR. .TP .BI hints\ bool What the pointer is resting on, said in the status line. |
