This site has been retired. For up to date information, see handbook.gnome.org or gitlab.gnome.org.


[Home] [TitleIndex] [WordIndex

Problem Description

Due to lack of logic structure and large number of special cases, Adwaita has become super hard to maintain because of the spit to multiple files and multiple selectors being applied and overriding (we found numerous sections that had no effect due to overrives from elsewhere).

Secondary Challenges

Testing -- there's a number of steps involving to see the effect of a change -- gresource generation requires a theme to be built and even then an application needs to be restarted. It would be desirable to have a file watcher in place that installs the theme into the jhbuild environment and some special runtime mode for applications to watch for theme changes.

External Assets -- it's way harder to maintain external assets, especially with colored elements that may get out of sync with the CSS chnages. It is desirable to keep basic box drawing in the theme itself (borders, shadows).

Broken Box Model -- box-shadow and margin are properties that are ignored most of the time, because gtk+ doesn't allotae space to draw them outside of the box.

Proposed Solutions

As a first step we'll try to test using SASS to get a solid logic structure based on widget types and keeping the same drawing blocks using mixins. If that ends up being a sane and legible structure we might replace SASS with supporing similar mechanisms in gtk+ itself (mixins, extends).

As there exists a possibility of folding the applicable SASS features into gtk+, we'll use the SCSS syntax rather than the more legible indentation based SASS syntax.

Proof of concept in wip/sass branch: https://git.gnome.org/browse/gnome-themes-standard/?h=wip%2Fsass

TODO / Encountered issues

- general

- inline-toolbars

- touch osd

- glitchy animations [FIXED]

- checkboxes & radios

- buttons [FIXED]

- GtkSwitch [FIXED]

- GtkDialog [FIXED]

- GtkNotebook [FIXED]

- GtkColorScale


2024-10-23 11:03