aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authoruser <user@clank>2026-08-19 13:46:57 +0200
committeruser <user@clank>2026-08-19 13:46:57 +0200
commit42b3c10995eb67778d9dd3aa2fd80624896acd5f (patch)
tree751bcb8604967dc8687cf23fbeb1033aa26ca427 /docs
parentslosh: a website that is a page, not a mock session (diff)
downloadslosh-42b3c10995eb67778d9dd3aa2fd80624896acd5f.tar.gz
slosh-42b3c10995eb67778d9dd3aa2fd80624896acd5f.tar.xz
slosh-42b3c10995eb67778d9dd3aa2fd80624896acd5f.zip
slosh: defaults most people can live in, said by shaders
The out-of-the-box look, rethought as one piece: - the compiled-in palette calms down: muted blue #7aa2f7 on the same neutral darks, with the colours that mean something kept semantic -- amber bell, red-orange dead. sl0p stays one include away as the house style, and contrib/themes/default.kdl is the starting point written down (theme-tour shows it). - derived state defaults now actually follow the theme: the scrolled wash is rebuilt from scroll_bg after the theme block (it used to bake the compiled accent), and declaring a state -- in any file of an include chain -- still wins. The dump writes derived states as comments so C-a e cannot pin what is meant to keep following. - a bell you can see: the frame blinks three times in theme's bell colour then breathes until answered, and a soft diagonal shimmer -- the bell colour halved towards default_fg, width breathing on a sine -- crosses the body for the same 900ms. bell_indicator false silences all of it; states { bell { } } replaces it like any state. since carries the clock dependency, so an idle session pays nothing. - scrollback says where it continues: while scrolled, the viewport's top and bottom rows melt towards an edge with content past it and turn solid at the buffer's end. New expression variables above/below (lines hidden past each edge, own dependency bit, cached per scroll position), carried in shade_ctx_t -- SLOSH_SHADER_ABI 3 -> 4. - expressions survive the dump: a program keeps its source and cb_chain writes it back, so amount="(y % 2) * 40" no longer dumps as a number. - headers move to include/, -Iinclude everywhere; the plugin Makefile's SLOSH var becomes SLOSH_DIR because slosh exports SLOSH=1 into every pane it runs, and building from inside a session read that as a path. - comment drift culled where features outran the prose, and the derivation boilerplate folded into derived_pass()/ctx_scroll().
Diffstat (limited to 'docs')
-rw-r--r--docs/chrome.md7
-rw-r--r--docs/config.md9
-rw-r--r--docs/shaders.md7
3 files changed, 19 insertions, 4 deletions
diff --git a/docs/chrome.md b/docs/chrome.md
index a348fcc..5262b18 100644
--- a/docs/chrome.md
+++ b/docs/chrome.md
@@ -15,6 +15,13 @@ Nothing else changes: same shaders, same `amount`, same
[expressions](shaders.md#strength-as-an-expression), same chain order. One new
word.
+You have already seen one: the default bell flash — blinks then a breathe on
+the frame of a pane that rang, in theme's `bell` colour — is exactly this, a
+chrome tint whose amount reads `since`. (The shimmer that crosses the pane's
+body at the same moment is the same idea without the new word: an ordinary
+content pass in the same chain.) Writing your own `bell { … }` replaces both;
+`bell_indicator false` silences them with the mark.
+
## Two rules
**`channel="fg"`, almost always.** A border's *background* is the terminal's own
diff --git a/docs/config.md b/docs/config.md
index c9578ac..686ef0e 100644
--- a/docs/config.md
+++ b/docs/config.md
@@ -182,8 +182,15 @@ dim_unfocused 60 // the one knob most people want
states { // ...and the whole table underneath it
dead { grayscale amount=200; dim amount=90 }
suspended { grayscale amount=170; dim amount=60 }
- scrolled { tint amount=22 color="#ff5fd7" }
+ scrolled { tint amount=22 color="#7aa2f7" } // follows theme's scroll_bg;
+ // plus derived edge fades: the top and bottom rows melt towards an edge
+ // while there is more content past it (`above` / `below` in expressions),
+ // and turn solid at the end of the buffer -- nothing more to scroll to
unfocused { dim amount=60 } // writing this replaces dim_unfocused
+ // bell: a shimmer across the body (a soft sheen, gone within a second)
+ // and a chrome pass on the frame -- blinks, then a breathe -- in theme's
+ // bell colour, until the pane is looked at. See the chrome shaders page;
+ // an empty bell { } removes it, bell_indicator false silences bell + mark.
}
```
diff --git a/docs/shaders.md b/docs/shaders.md
index 860ad24..b3c1cc1 100644
--- a/docs/shaders.md
+++ b/docs/shaders.md
@@ -12,7 +12,7 @@ touched, because rewriting text would desync selection and copy.
```kdl
shaders { // every pane gets these, in the order written
vignette amount=70
- ruler amount=60 at=80 color="#ff5fd7"
+ ruler amount=60 at=80 color="#7aa2f7"
}
```
@@ -47,7 +47,7 @@ That is how you get an effect nobody built in, without building anything:
shaders {
dim amount="(y % 2) * 40" // scanlines
dim amount="(x > cols - 10) * 120" // a right margin
- tint amount="255 - dist(x, y, curx, cury) * 12" color="#ff5fd7"
+ tint amount="255 - dist(x, y, curx, cury) * 12" color="#7aa2f7"
}
```
@@ -59,6 +59,7 @@ shaders {
| | `focused` — 0 or 1 |
| | `t` — milliseconds, for animation |
| | `since` — milliseconds the pane has been in its current state |
+| | `above` `below` — lines of scrollback hidden past the viewport's top and bottom edges, both 0 at the present |
| operators | `+ - * / %` (integer; division by zero is 0, not a crash) |
| | `< > <= >= == != && \|\| !` give 0 or 1, so `(x < 10) * 200` is a rule |
| | `& \| ^ ~ << >>` on the 32-bit value, binding **tighter** than comparison — so `x & 7 == 0` asks what it looks like, unlike C |
@@ -105,7 +106,7 @@ Edit, save, look, guess again is a slow way to arrive at a colour. A program can
set the chains for the pane it is running in, in the same syntax the config uses:
```bash
-printf '\033]5577;1;shader;chrome;tint color="#ff5fd7" amount="abs(t / 8 %% 510 - 255)"\033\\'
+printf '\033]5577;1;shader;chrome;tint color="#7aa2f7" amount="abs(t / 8 %% 510 - 255)"\033\\'
printf '\033]5577;1;shader;content;dim amount=90\033\\'
printf '\033]5577;1;shader;chrome;\033\\' # that rect: back to normal
printf '\033]5577;1;shader;\033\\' # no rect named, so both of them