diff options
| author | srdusr <[email protected]> | 2026-07-02 09:26:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2026-07-02 09:26:00 +0200 |
| commit | 4c6d059359537e03f677e83d345f52fae29ae746 (patch) | |
| tree | d880028cee3ecf2c196f76e35cb99e8cd6a5a7c9 /docs/TODO.md | |
| parent | 695d8f5204731376aa60ad6c759d361b903e81dd (diff) | |
| download | srdwm-4c6d059359537e03f677e83d345f52fae29ae746.tar.gz srdwm-4c6d059359537e03f677e83d345f52fae29ae746.zip | |
Generate the GTK button stylesheet from button_style
Asked for after the previous entry declined to write GTK CSS. The objection
was to clobbering a file full of hand-written work, not to the feature, and
splitting ownership solves both.
srdwm owns srdwm-buttons.css, generated from
theme.decorations.title_bar.button_style and rewritten on every start and
config reload, and adds exactly one @import line to the user's gtk.css if it
is missing. Nothing else in that file is ever touched. The import goes first
because CSS only permits @import ahead of other rules, which also leaves the
user's own rules last and therefore able to override the generated style.
The generated CSS sets a background per button rather than un-hiding a child
image, for the reason the earlier hand-written attempt found by screenshot:
WhiteSur paints the control as the button's own background-image from a
compiled gresource, so clearing that background leaves a blank button rather
than revealing a glyph.
Verified end to end on a real GTK app, both directions, through the
generated file: traffic_lights gives Nemo coloured dots, traditional gives a
dash, a square and an X, each matching srdwm's own titlebar directly above
it. Also verified the import is added once and not duplicated, that
switching style rewrites only the generated file, and that a home without
GTK config directories has nothing written to it.
527 tests pass, clippy clean.
Diffstat (limited to 'docs/TODO.md')
| -rw-r--r-- | docs/TODO.md | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/docs/TODO.md b/docs/TODO.md index 74eed81..18e551a 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -1,5 +1,38 @@ # TODO / planned features - master checklist +## srdwm now generates the GTK button stylesheet too (2026-08-28) + +The previous entry recorded a deliberate decision *not* to write GTK CSS, +because the user's `gtk.css` holds hand-written work a compositor cannot +safely rewrite. Asked to build it anyway, which is reasonable - the +objection was to clobbering their file, not to the feature. + +The split solves both: srdwm owns `srdwm-buttons.css`, generated from +`button_style` and rewritten on every start and reload, and adds exactly one +`@import` line to `gtk.css` if it is missing. Nothing else in that file is +ever touched. The import is first because CSS only permits `@import` ahead +of other rules, which conveniently also leaves the user's own rules last and +therefore winning. + +The generated CSS sets a background per button rather than un-hiding a child +`image`, for the reason the previous attempt found the hard way: WhiteSur +paints the control as the button's own `background-image` from a compiled +gresource, so clearing the background leaves a blank button. + +Verified end to end on a real GTK app, both directions, through the +generated file rather than a hand-written one: `traffic_lights` gives Nemo +coloured dots, `traditional` gives it a dash, a square and an X, each time +matching srdwm's own titlebar directly above. Also verified that the import +is added once and not duplicated on a second run, that switching the style +rewrites only the generated file, and that a home directory without GTK +config directories has nothing written to it at all. + +Left in place: `gtk-traffic-lights.css`, the user's original hand-written +override, kept as reference. `gtk.css` is now the import plus a comment +saying what owns what. + +277 core tests, 527 total, clippy clean. + ## Firefox and Nemo's traffic lights: the compositor was never drawing them (2026-08-28) Reported as still using traffic lights after the button *side* was fixed. |