aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorPeter Geissler <peter@haxx.in>2026-09-20 20:23:23 +0200
committerPeter Geissler <peter@haxx.in>2026-09-20 20:23:23 +0200
commit07e1adf1124657aaea4fa32874282812281e4889 (patch)
treeab63600e4438260e3e5c650bc711645fe21d066a /docs
parentsidebar: a status can have more than one row (tab_bar_status_lines) (diff)
downloadslosh-07e1adf1124657aaea4fa32874282812281e4889.tar.gz
slosh-07e1adf1124657aaea4fa32874282812281e4889.tar.xz
slosh-07e1adf1124657aaea4fa32874282812281e4889.zip
sidebar: air between tabs (tab_gap)
A tab carrying three rows of wrapped status and the tab under it carrying three more read as one column of text: the labels are in there, but the list has stopped looking like a list. tab_gap is the blank rows between them, 0 by default, which is exactly what the sidebar has always drawn. It is the space *between* tabs and nothing else. Above the first tab is tab_bar_pad's and before the button is newtab_pad's, so the gap is applied before each label except the first and none of the three is ever paid twice. Given up a row at a time when the list is short of room, ahead of every label and the button, which is the same order the pad and the statuses already follow: a gap that pushed a tab off the bottom would be spacing costing you the thing it spaces. Paint rather than layout, so tuning it repaints without reflowing any pane. Sidebars only -- the top strip is one row, and the space between tabs there is the label's own padding.
Diffstat (limited to 'docs')
-rw-r--r--docs/config.md2
-rw-r--r--docs/panes.md9
-rw-r--r--docs/slosh.59
3 files changed, 19 insertions, 1 deletions
diff --git a/docs/config.md b/docs/config.md
index 6fa0300..fa287f1 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_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`) |
+| chrome | `status_bar` `status_line` `status_pad` `tab_bar_side` `tab_bar_width` `tab_bar_pad` `tab_gap` `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 6cc1055..96fefc8 100644
--- a/docs/panes.md
+++ b/docs/panes.md
@@ -56,6 +56,7 @@ The strip of tabs sits along the top by default. It does not have to:
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_gap 0 // ...and between one tab and the next
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
@@ -95,6 +96,14 @@ 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.
+**`tab_gap` puts air between one tab and the next**, which is what stops a
+list of tabs that each carry a paragraph of status from reading as one column
+of text. It is the space *between* tabs only: above the first is `tab_bar_pad`
+and before the `+` is `newtab_pad`, so none of the three is paid twice. Like
+them it is paint rather than layout, and like them it is given up a row at a
+time when the sidebar runs short — a gap must never be what costs you the tab
+it was separating.
+
**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
diff --git a/docs/slosh.5 b/docs/slosh.5
index 7fdd146..70cfa08 100644
--- a/docs/slosh.5
+++ b/docs/slosh.5
@@ -143,6 +143,15 @@ its inner line is the tab area's own ring, so the two meet in junctions and
come out as one figure. On by default; off gives the two columns back to the
labels.
.TP
+.BI tab_gap\ n
+Blank rows between one tab and the next in a sidebar. Tabs that each carry a
+paragraph of status read as one column of text; this makes them separate
+entries again. It is the space \fIbetween\fR tabs only \(em above the first
+is \fBtab_bar_pad\fR and before the button is \fBnewtab_pad\fR \(em and it
+is given up a row at a time when the list is short of room, so the gap can
+never be what costs you the tab it was separating. Paint rather than layout:
+panes keep the same rectangle whatever it is. Sidebars only.
+.TP
.BI tab_bar_status\ n
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