diff options
| author | user <user@clank> | 2026-08-15 13:45:21 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-08-15 13:45:21 +0200 |
| commit | 015ba12fde4fcce15440b39cb6369a4ad66238cf (patch) | |
| tree | d5cf6edb0d7de3535a07e9249380d14ec391fe4e /config/config.kdl | |
| parent | sl0ppty: centre the middle of the status line on the row (diff) | |
| download | slosh-015ba12fde4fcce15440b39cb6369a4ad66238cf.tar.gz slosh-015ba12fde4fcce15440b39cb6369a4ad66238cf.tar.xz slosh-015ba12fde4fcce15440b39cb6369a4ad66238cf.zip | |
sl0ppty: dim the panes you are not in, and a knob to say how much
`dim_unfocused 60`, on by default, 0 to turn it off.
The dimming itself was already possible -- `states { unfocused { dim } }` --
and deliberately not the default. The argument then was that ambient contrast
is a taste, and shipping a taste as a default is how a tool earns a
reputation for fighting you. That argument was mostly about the escape hatch:
"turn it off" meant knowing the states block exists and what a shader chain
is. A single number does not have that problem, so the objection goes away
and the default can be the one most people want.
The knob and the table are one mechanism -- the knob fills the unfocused
chain in when the config has not -- so writing the chain by hand still wins,
including writing an empty one. `states { unfocused { } }` means nothing at
all, and is not quietly refilled, which needed the parser to distinguish
"said nothing" from "said none".
60 by choice: white text lands on #c3c3c3, which reads as "not this one"
without reading as "not available", because half the time you are reading the
other pane. Picked by looking at 40, 55, 70, 90 and 120 rather than by taste
alone.
The tests that had to change are the interesting part. Six in test_shaders.py
asserted "back to green after the drag", which is no longer what normal looks
like -- and rewriting them to compare against a snapshot taken before the
drag failed too, because a drag *moves focus*: press a title and that pane is
yours, so the two panes legitimately swap appearances across one. They assert
the rule now (the pane you are in keeps its colour, the others are pushed
back), which is both what we mean and immune to the next change of defaults.
test_states.py's "an unfocused pane is left alone" is inverted, with the
reason written where the assertion used to be, because a test that flips
should say why it flipped.
Diffstat (limited to 'config/config.kdl')
| -rw-r--r-- | config/config.kdl | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/config/config.kdl b/config/config.kdl index 1d0857e..c8b6ff2 100644 --- a/config/config.kdl +++ b/config/config.kdl @@ -113,6 +113,17 @@ newtab_mark "+" // last thing a failing command printed. keep_dead true +// How far the panes you are *not* in are pushed back, 0..255, and 0 for not +// at all. On by default and gently: at 60 white text lands on #c3c3c3, which +// reads as "not this one" without reading as "not available", because half +// the time you are still reading the other pane. +// +// This is the one taste shipped as a default, and it is shipped because +// turning it off is a single obvious number rather than a shader incantation. +// Writing the chain yourself still wins -- `states { unfocused { ... } }` +// replaces it, and `states { unfocused { } }` means nothing at all. +dim_unfocused 60 + bell_indicator true // What to draw. A short string rather than a fixed glyph, because the obvious @@ -245,10 +256,12 @@ modal_scrim 120 // the past. None of that is discoverable by looking unless something says // so, which is the entire argument for colouring it. // -// a pane that is merely *not the one you are in* does not -- unfocused, and -// one being dragged. That is ambient contrast, which is a taste, and a taste -// shipped as a default is how a tool gets a reputation for fighting you. -// `unfocused { dim amount=90 }` is one line away if you disagree. +// a pane that is merely *not the one you are in* is a taste rather than a +// fact, and gets a default anyway -- but through `dim_unfocused` above, +// which is one number to change or zero out. The objection to shipping a +// taste was never the taste, it was that turning it off should not require +// knowing this block exists. `dragging` still has no default: the pane in +// your hand keeping its colour is what makes it lift off the page. // // All the defaults are gentle: a dead pane, a suspended one and scrollback are // all things you still want to read. The compiled-in scrolled tint uses the @@ -263,7 +276,7 @@ states { suspended { grayscale amount=170; dim amount=60 } scrolled { tint amount=22 color="#ff5fd7" } // = theme's scroll_bg // dragging { } - // unfocused { dim amount=90 } + // unfocused { dim amount=60 } // = dim_unfocused above; yours replaces it } // While a pane is being dragged its border stays solid and every other pane's |
