aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorPeter Geissler <peter@haxx.in>2026-09-20 19:55:03 +0200
committerPeter Geissler <peter@haxx.in>2026-09-20 19:55:03 +0200
commit65a694b194bd68f8c6ba4b961e2cc906b8738a6c (patch)
tree0c915581b19fd379b4da9e118814c022fefe4e1d /docs
parentsidebar: a talkative pane can no longer cost you a tab (diff)
downloadslosh-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.md2
-rw-r--r--docs/panes.md14
-rw-r--r--docs/slosh.513
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.