diff options
| author | user <user@clank> | 2026-08-19 13:46:57 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-08-19 13:46:57 +0200 |
| commit | 42b3c10995eb67778d9dd3aa2fd80624896acd5f (patch) | |
| tree | 751bcb8604967dc8687cf23fbeb1033aa26ca427 /docs | |
| parent | slosh: a website that is a page, not a mock session (diff) | |
| download | slosh-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.md | 7 | ||||
| -rw-r--r-- | docs/config.md | 9 | ||||
| -rw-r--r-- | docs/shaders.md | 7 |
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 |
