aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoruser <user@clank>2026-08-14 20:12:51 +0200
committeruser <user@clank>2026-08-14 20:12:51 +0200
commitebd051073d5fc0ed5b8e59dd70501c07241ec3ed (patch)
tree32c48022582c1c27a3a6c83c4c313de9ec582ab5
parentsl0ppty: minimise a pane into a strip along the bottom (diff)
downloadslosh-ebd051073d5fc0ed5b8e59dd70501c07241ec3ed.tar.gz
slosh-ebd051073d5fc0ed5b8e59dd70501c07241ec3ed.tar.xz
slosh-ebd051073d5fc0ed5b8e59dd70501c07241ec3ed.zip
sl0ppty: pick a minimise mark that fills its cell
The buttons looked unevenly spaced. They are not: the cells are mark, space, space, mark, space, space, mark, exactly even, which is worth checking before touching any arithmetic. The gap was in the glyph. An en dash is a short stroke floating in a mostly empty cell, so it donated its own whitespace to the space beside it and sat further from the zoom button than the zoom button sat from close, which fill theirs. A lower one-eighth block has weight comparable to the square and the cross, and is also the conventional minimise icon and a fair description of where the pane actually goes. Noted in the config beside the width warning, since it is the same class of problem: the mark is yours to choose and the two things to know about the choice are that emoji are drawn double-width and that a light glyph will look badly spaced next to heavy ones.
-rw-r--r--README.md2
-rw-r--r--config/config.kdl7
-rw-r--r--src/config.c2
-rw-r--r--src/config.h4
4 files changed, 11 insertions, 4 deletions
diff --git a/README.md b/README.md
index 51b51c5..b203b2b 100644
--- a/README.md
+++ b/README.md
@@ -83,7 +83,7 @@ fills the tab until you put it back; the other panes keep running, they are
just not drawn. `×` beside it closes the pane. `pane_buttons false` takes both
buttons off without touching the keybindings.
-**Minimise a pane** with `C-a m` or the `–` button and it leaves the layout for
+**Minimise a pane** with `C-a m` or the `▁` button and it leaves the layout for
a strip along the bottom, one row each, still running — the panes it leaves
behind take the space back. Click its row to bring it back. Once a tab is too
small and has flattened into a list, being minimised means nothing: every pane
diff --git a/config/config.kdl b/config/config.kdl
index 39e185c..2567060 100644
--- a/config/config.kdl
+++ b/config/config.kdl
@@ -54,12 +54,15 @@ title_inset 2
pane_buttons true
// Emoji are drawn two columns wide by many terminals while chrome here is
-// booked as one, so these default to narrow glyphs. Put the character itself
+// booked as one, so these default to narrow glyphs. Pick marks of similar
+// visual weight: the buttons are evenly spaced, but a glyph that floats in a
+// mostly-empty cell donates that space to the gap and looks further off than
+// its neighbours. Put the character itself
// here; this file has no \u escape.
zoom_mark "□"
zoom_on_mark "▣"
close_mark "×"
-min_mark "–"
+min_mark "▁"
bell_indicator true
diff --git a/src/config.c b/src/config.c
index bc82d7b..f6c9e5f 100644
--- a/src/config.c
+++ b/src/config.c
@@ -175,7 +175,7 @@ void config_defaults(config_t *c) {
snprintf(c->zoom_mark, sizeof c->zoom_mark, "\u25a1");
snprintf(c->zoom_on_mark, sizeof c->zoom_on_mark, "\u25a3");
snprintf(c->close_mark, sizeof c->close_mark, "\u00d7");
- snprintf(c->min_mark, sizeof c->min_mark, "\u2013");
+ snprintf(c->min_mark, sizeof c->min_mark, "\u2581");
c->bell_indicator = true;
snprintf(c->bell_mark, sizeof c->bell_mark, "\u2022");
c->min_pane_cols = 24;
diff --git a/src/config.h b/src/config.h
index bbd9e0c..0bbaa9e 100644
--- a/src/config.h
+++ b/src/config.h
@@ -85,6 +85,10 @@ typedef struct {
/* Buttons in the top-right of a pane's frame: zoom, and close. Off leaves
* the keyboard bindings alone; it is about the affordance, not the verb. */
bool pane_buttons;
+ /* Marks of similar visual weight, so the even spacing between the buttons
+ * reads as even: a glyph that floats in a mostly-empty cell donates its own
+ * whitespace to the gap beside it and looks further away than its
+ * neighbours, which is what an en dash did here. */
char zoom_mark[16], zoom_on_mark[16], close_mark[16], min_mark[16];
bool bell_indicator;
/* What to draw. A short string rather than a fixed glyph: the obvious