summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-29 06:04:28 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:16 -0300
commit09ec515c5e94de741104038cd61f18b2b997e78c (patch)
tree4a7910c76c650df1695c4e3327538bfd8f68f493 /docs
parent4452a8f467765cbfa0dd0444a9bf416ac8bd0bf5 (diff)
downloadpardes-09ec515c5e94de741104038cd61f18b2b997e78c.tar.gz
pardes-09ec515c5e94de741104038cd61f18b2b997e78c.zip
G5: lapis, 0x4200.cafe's manuscript, as a theme with its ornament
A native theme `lapis` (src/themes/lapis.zig) from web/theme/lapis.css: a lapis-deep page, lapis tags with gold names, vellum text, vermilion rubrics, gold rules and a vermilion tag rule, gold selection in lapis ink. Its ornament is the theme's new `decor` (colors.Decor), drawn by a pixel shell inside the chrome it already has (decision 1), all of it off every focus indicator: - page_dots: the site's gold dot grid (#e8c46a22, 22 px), drawn by the cell shader on page-coloured cells alone (flag 0x10000000), so it lies under the text and never under a selection, a tag or the cursor; fixed to the window, a page the panes lie on. - rail_checker: the dither frame's gold and lapis checker in the scroll track (a decor kind, flag 0x08000000), anchored to its rail; the thumb stays solid gold. - tag plaques (tag_border, tag_shadow, tag_stripe): every tag a raised plaque inside its own band, the site's trail: a 2px gold frame and a hard 5px vermilion shadow down and right, both within the band's rows and columns (down, what the slack under the text leaves), so no shadow reaches a body, a grip or the next pane. The focused pane's plaque is the code window's title bar, gold and lapis stripes of 2px, its words on plates of the focused ground; unfocused ones are plain; column and workspace tags take the object-label language (1px frame, 2px shadow toward the page). Drawn as decor under the cells (a group's under range), with blank tag cells see-through and the cells blended premultiplied (pipeline_over) on such frames; opaque windows only. - title_shadow: the titles' vermilion offset shadow under a file name's letters, sampled in the cell shader inside the letters' own cells (flag 0x08000000), none on a cursor. Chrome carries the decor (decor_*, name_ink, active_name_ink); a theme file folds a nested decor literal field by field. Left out, with why, in docs/effects.md: the fonts, the ornaments, a decor crossfade, and in the tty anything but the colours (a tag row has no spare cell for a shadow). An empty column is the page. The effect id is masked to 27 bits (ui.vert/ui.frag) for the fifth flag. Tests: the cell flags land only on page ground and file-name cells, never a cursor, nothing without decor; lapis's plaques stay inside their tag's band, clear of every grip, only the focused one striped; its checker is in the track; no other theme draws any; the separator and focus tests cover lapis. Goldens: theme and themesel (the ring gains lapis after acme). Gates as G4. Feel review: .scratch/render/lapis/ (lapis.png, lapis-2x.png, tags-focused-vs-unfocused-2x.png, a PanelSlide at 60 fps and a quarter).
Diffstat (limited to 'docs')
-rw-r--r--docs/effects.md29
-rw-r--r--docs/themes.md1
2 files changed, 30 insertions, 0 deletions
diff --git a/docs/effects.md b/docs/effects.md
index 8073c50a..8a60d116 100644
--- a/docs/effects.md
+++ b/docs/effects.md
@@ -38,6 +38,7 @@ why. The verdict is the user's.
| G1 lift | `Lift shadow\|rim\|auto` (off), `InactiveDim <percent>` | opt-in until the focus-lift default is decided | lift-shots-2 (off, shadow, rim, auto on acme, dusk, forge); frame series + mp4 per Motion flavour | shadow on acme: keep as is. Round 1 dropped glow and surface (surface lowered the focused text's contrast) and made rim a hairline just above the focused tag (light on a dark page, shade on a light one). auto on a dark page recedes the others (InactiveDim 30) |
| G3 cursor | follows `Motion`; `CursorBlink on\|off` (on) | glide on by default through the default flavour (smooth); blink on (decision 6) | .scratch/render/cursor/cursor-flavours-grid.mp4 (and quarter speed), raw/<flavour>/<motion>/ | pending |
| G4 bloom, vignette, grain | `Bloom`, `Vignette`, `Grain` `0..3` (off) | bundled post passes; none touches a tag, grip, notice or the cursor (pardesSpare); each capped per theme (pardesCap) | .scratch/render/{bloom,vignette,grain}/ (levels 0-3 on forge, dusk, acme; crops; mp4 stepping through the levels) | pending |
+| G5 lapis | `Theme lapis` (its `decor`) | a native theme with ornament: tag plaques with hard shadows inside their bands (the focused one striped), dots, rail checker, title shadow | .scratch/render/lapis/ (whole window at 1x and 2x, crops, a slide mp4) | pending |
## Motion flavours
@@ -114,3 +115,31 @@ is round, starts halfway to a corner and reaches 10, 18 and 28%. Grain is
Found on the way: SDL GPU binds at most 4 KiB of a uniform block, so every
Shadertoy colour after the palette (iBackgroundColor and on) read zero; the
block is now cut in three with ghostty's names and order kept.
+
+Notes on G5: lapis (src/themes/lapis.zig) is 0x4200.cafe's lapis.css in
+pardes's chrome, drawn inside it (decision 1). The tags are the site's
+trail and title bars: every tag a plaque in its own band, framed in gold
+(2 px, the trail's border) with the trail's hard vermilion shadow (5 px)
+down and right, the frame and the shadow both inside the band's rows and
+columns, so no shadow reaches a body, a grip or the next pane; down, the
+shadow gets what the band's slack under the text leaves (a pixel or three
+at a tagline under the body's size, more at a larger one), to the right
+its full offset. The focused pane's plaque is the code window's title bar,
+gold and lapis stripes of 2 px, its words on plates of the focused ground
+(the words' cells stay opaque, the blanks between let the stripes show),
+so the focus indicator is plainer to see than any theme's tint, never
+less; the unfocused ones are plain. Column and workspace tags take the
+quieter object-label language: a 1 px frame and a 2 px shadow of vermilion
+toward the page. The plaques are decor drawn under their cells (a group's
+under range) with the cells blended premultiplied over them; blank tag
+cells on the tag's ground are see-through there. They need an opaque
+window: under WindowOpacity 100 the tags are plain. Also from the site:
+the colours (lapis-deep page, vellum text, gold names and rules,
+vermilion rubrics and tag rule, gold selection in lapis ink), the page's
+gold dot grid (22 px, #e8c46a22) on page-coloured cells only, fixed to the
+window; the dither frame's checker in the scroll track, anchored to its
+rail (the thumb solid gold); the titles' vermilion offset shadow under a
+file name's letters. Left out: Crimson Pro and Departure Mono, the
+ornaments, a decor crossfade (it snaps while the colours fade). The tty
+shows the colours alone: a tag row abuts its body and its neighbour, so
+there is no cell for a shadow row or column.
diff --git a/docs/themes.md b/docs/themes.md
index 2b15051e..38596819 100644
--- a/docs/themes.md
+++ b/docs/themes.md
@@ -121,6 +121,7 @@ so existing exported themes remain valid.
| `rule_px` | Pixel shells: the width of the rules between columns, between panes stacked in a column, and under the workspace and column tags, in `border` (the rule between a tag and its body is always one pixel), in logical pixels: doubled on a 2x display, as acme scales its Border | 2 |
| `box_border`, `box_dirty` | The grip is acme's button: `box` filled when focused, else a two-pixel ring of `box_border` round the tag's ground; `box_dirty` fills it inside either ring while its file is unsaved (a grid, which has no ring, shows a bold `*` on `box_dirty` in the grip's second cell) | `box_dim`; `diagnostic_warning`, then `num` |
| `rail_px` | Pixel shells: the scroll column's width, the grip's button over the scrollbar (thumb a pixel narrower), in pixels at a 17px tagline, scaled with it | 12, acme's Scrollwid |
+| `decor` | Pixel shells: a theme's ornament, drawn inside the chrome it has (lapis's): `page_dots` (a dot grid on the page's own ground, `page_dot_alpha` strong every `page_dot_px`), `rail_checker` (a checker in the scroll track, squares of `rail_checker_px`), `tag_border`, `tag_shadow`, `tag_stripe` (every tag a raised plaque inside its own band: a `tag_border_px` frame round its text and a hard `tag_shadow_px` shadow down and right, both inside the band's rows and columns; the focused pane's plaque striped `tag_stripe_px` with its words on plates of the tag's ground; column and workspace tags a quieter one; opaque windows only) and `title_shadow` (the file name's offset shadow, `title_shadow_px`), sizes in logical pixels. None of it touches a focus indicator | none |
Native palettes give filenames a distinct hue at approximately the same
brightness as the surrounding tag text. This also applies to output names