aboutsummaryrefslogtreecommitdiffstats
path: root/config/config.kdl
diff options
context:
space:
mode:
authoruser <user@clank>2026-08-15 13:45:21 +0200
committeruser <user@clank>2026-08-15 13:45:21 +0200
commit015ba12fde4fcce15440b39cb6369a4ad66238cf (patch)
treed5cf6edb0d7de3535a07e9249380d14ec391fe4e /config/config.kdl
parentsl0ppty: centre the middle of the status line on the row (diff)
downloadslosh-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.kdl23
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