aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorPeter Geissler <peter@haxx.in>2026-09-20 19:40:05 +0200
committerPeter Geissler <peter@haxx.in>2026-09-20 19:40:05 +0200
commit6c8d99cd71858955c0e9c9d93d738c855e652ce8 (patch)
treea02b83f33773df0119a669ba697dfeefe3971a29 /docs
parenttests: a pane's status is output, so write the pty, not the input decoder (diff)
downloadslosh-6c8d99cd71858955c0e9c9d93d738c855e652ce8.tar.gz
slosh-6c8d99cd71858955c0e9c9d93d738c855e652ce8.tar.xz
slosh-6c8d99cd71858955c0e9c9d93d738c855e652ce8.zip
tabs: air before the new-tab button, and the option to do without it
The `+` is the one entry in the strip that does not mean "go here", and it sits at the end of a list where every other entry does. Flush against them it is what you hit when you meant the last tab -- most easily in a sidebar, where the target is the full width of the row and the pointer only has to be one row low. newtab_pad is the nothing in between: blank rows in a sidebar, blank columns on top, one by default, which is enough to make the slip a miss. It is paint rather than layout, like tab_bar_pad: the panes' rectangle is the same at 0 as at 5, so tuning it repaints without reflowing anyone. And it is given up before the button is -- a strip short of room drops the spacing one cell at a time and still draws what the spacing was protecting, because spacing must never cost you the thing it spaces. newtab_button false removes the button outright, for people who make tabs from the keyboard and would rather have the row (or the columns) back. Only the place to click it goes: the chord and the palette entry still work. Setting newtab_mark "" already did this by omission; this says it on purpose, and says it in --dump-config.
Diffstat (limited to 'docs')
-rw-r--r--docs/config.md2
-rw-r--r--docs/panes.md11
-rw-r--r--docs/slosh.511
3 files changed, 22 insertions, 2 deletions
diff --git a/docs/config.md b/docs/config.md
index edebc8d..0da27a6 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` 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` `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 f5fab23..1884b53 100644
--- a/docs/panes.md
+++ b/docs/panes.md
@@ -57,13 +57,22 @@ 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
+newtab_button true // the `+` at the end of the list
+newtab_pad 1 // ...and the air before it
```
A **sidebar lists one tab per row** down the chosen edge, and the panes trade
the strip's row for its columns. Everything the strip does travels with it:
click to switch, double-click to rename in place, drag a pane onto a tab or
onto the `+` — which, given a row of its own and the columns to spare, spells
-itself out as `+ new tab`. The pane count and the prefix badge move
+itself out as `+ new tab`. That button sits `newtab_pad` rows below the last
+tab (columns after it, in the top strip): it is the one row in the list that
+does something other than "go here", and flush against the tabs it is what you
+hit when you meant the last one. The air is paint, not layout — the panes keep
+their rectangle whatever it is, and it is given up before the button is when
+the strip runs out of room. Set `newtab_button false` to drop the button
+altogether; `new-tab` is still a [chord](keys.md) and a palette entry, and a
+pane can no longer be dropped onto it. The pane count and the prefix badge move
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.
diff --git a/docs/slosh.5 b/docs/slosh.5
index 4f22a06..ec2d6fe 100644
--- a/docs/slosh.5
+++ b/docs/slosh.5
@@ -163,6 +163,17 @@ Whether a pane's bell shows at all (the mark, and the frame effect).
.TP
.BR zoom_mark ,\ zoom_on_mark ,\ close_mark ,\ min_mark ,\ newtab_mark ,\ bell_mark
The glyphs themselves, each one string.
+.TP
+.BR newtab_button\ \fIbool\fR ,\ newtab_pad\ \fIn\fR
+The new-tab button at the end of the tab strip, and the air between it and
+the last tab \(em \fIn\fR blank rows in a sidebar, \fIn\fR blank columns in
+the top strip. The button is the one entry in the list that does not mean
+\[dq]go here\[dq], so flush against the tabs it is what a low pointer hits;
+one cell of nothing makes that a miss. The pad is dropped before the button
+is when the strip is short of room, and it is paint rather than layout \(em
+panes keep the same rectangle either way. Off, tabs are made from the
+keyboard (\fBnew-tab\fR) and a pane can no longer be dropped onto the button
+to get a tab of its own.
.SH BEHAVIOUR
.TP
.BI focus_follows_mouse\ bool