aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authoruser <user@clank>2026-09-10 16:10:33 +0200
committeruser <user@clank>2026-09-10 16:10:33 +0200
commitfca50377124202217c9cf5071d346f1bb30907bb (patch)
tree5c3530974568e88ae4794387e5f7d9f88f9fe6ee /docs
parentdocs: the tab bar's new shapes, written down (diff)
downloadslosh-fca50377124202217c9cf5071d346f1bb30907bb.tar.gz
slosh-fca50377124202217c9cf5071d346f1bb30907bb.tar.xz
slosh-fca50377124202217c9cf5071d346f1bb30907bb.zip
sidebar: framed like a pane, and in compact mode framed *with* it (tab_bar_chrome)
A list of tabs sitting in bare columns beside a framed layout reads as text that wandered in from outside. So the sidebar gets a frame of its own -- and in compact mode not its own: its inner vertical lands on the tab area's ring column, and because the lines are strokes that union with whatever is already in the cell, the corners become tees without anyone computing a junction. The sidebar and the layout come out as one figure, which is the whole point. Classic mode gets a free-standing frame in the idle frame colour, rounded or square with everything else. The frame costs a column each side and a row top and bottom, taken from the sidebar's own budget -- and dropped entirely, before the list is, when the sidebar is too small to afford it: chrome must not displace what it is chrome for. The content box (cx/cw) now feeds the labels, the status rows, their hits and the truncation budget alike, so the frame cannot disagree with where the clicks land.
Diffstat (limited to 'docs')
-rw-r--r--docs/config.md2
-rw-r--r--docs/panes.md7
-rw-r--r--docs/slosh.58
3 files changed, 16 insertions, 1 deletions
diff --git a/docs/config.md b/docs/config.md
index 4b964ac..edebc8d 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` `hints` `version_banner` `pane_buttons` `bell_indicator` 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_chrome` `hints` `version_banner` `pane_buttons` `bell_indicator` 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 dd3fdba..913d2cb 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 1 // blank rows above the first tab
+tab_bar_chrome true // frame it like a pane
```
A **sidebar lists one tab per row** down the chosen edge, and the panes trade
@@ -66,6 +67,12 @@ to the sidebar's bottom rows; the [status line](config.md) along the bottom
keeps the full width. A terminal too narrow to give up the columns falls back
to the top row until it grows.
+**The sidebar is framed like a pane**, so it belongs to the chrome rather than
+floating beside it. Under [`compact`](config.md#compact) the frame's inner line
+_is_ the tab's outer ring: the two meet in real junctions (`┬`, `┴`) and read
+as one figure, the same way a divider running into the ring does. Set
+`tab_bar_chrome false` to give those two columns back to the labels.
+
**Under each tab, the sidebar says what the panes inside are up to.** A pane
that announced a status over [OSC 5577](scripting.md#a-pane-can-draw-its-own-chrome)
puts that line under its tab — visible from every other tab, which is the
diff --git a/docs/slosh.5 b/docs/slosh.5
index 367d79e..4f22a06 100644
--- a/docs/slosh.5
+++ b/docs/slosh.5
@@ -135,6 +135,14 @@ The strip's indicators move to the sidebar's bottom rows; the status line
keeps the full width. A terminal too narrow to give up the columns falls
back to \fBtop\fR until it grows.
.TP
+.BI tab_bar_chrome\ bool
+Frame a sidebar the way panes are framed, so it reads as part of the chrome
+rather than as text floating beside it. Under
+.B compact
+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_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