feat: thunar & papirus-folders theming + new schemes (#80)

* feat: GTK app theming system

- Implemented custom.css import for user-managed app themes
- process_app_themes() to dynamically update colors in imported CSS files
- Inline comment markers for color replacement (e.g, /* accent-color */)
- Papirus icon color syncing with weighted hue/saturation algorithm

This allows users to create modular app themes that automatically update when the scheme/wallpaper changes

Example usage:
  .app .element { color: #24BD5C; /* accent-color */ }
  .app .element:hover { background: rgba(36, 189, 92, 0.15); /* accent-color with 15% opacity */ }

* feat: atomic theme changes with locking and mode-specific CSS

- Implemented locking to prevent concurrent theme changes
- Added mode-light/mode-dark CSS markers for dynamic property reordering
- Made terminal writes and Papirus sync non-blocking to prevent hangs
- Only save scheme.json after successful theme application

Fixes race conditions during rapid theme switching and ensures Shell and GTK apps scheme stay in sync.

* theme: added to color mapping for custom theming, new schemes

* theme: quick fixes, cleanup

* theme: include thunar.css as template, with new theming system

* theme: modified GTK theming approach

- Dropped comment targeted theming in favor for existing {{  }} replacement
- [app].css.template file created for customization, bypassing built in default if present
- Handling *.template for added templates to be parsed and added to import

* theme: fixes for  thunar.css

* theme: remove .template file use

* theme: path button color adjustment, non-active hover

* fixes & cleanup

* thunar css fixes

* more css fixes

* format

* fix tab vert spacing

---------

Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
This commit is contained in:
Robin Seger
2026-02-14 13:23:33 +01:00
committed by GitHub
parent fe8adde6c1
commit bca7b12072
15 changed files with 1421 additions and 39 deletions
@@ -4,7 +4,7 @@ tertiary_paletteKeyColor 376942
neutral_paletteKeyColor 1E1E26
neutral_variant_paletteKeyColor 23252D
background 23262D
onBackground 02200B
onBackground F5F5F6
surface 050505
surfaceDim 1E1E24
surfaceBright 1E1E24
@@ -82,6 +82,16 @@ sky cefb97
sapphire 85ef77
blue 65eea0
lavender 90f79e
klink 65eea0
klinkSelection 65eea0
kvisited 73fa90
kvisitedSelection 73fa90
knegative 8affab
knegativeSelection 8affab
kneutral d0f9f4
kneutralSelection d0f9f4
kpositive 8af797
kpositiveSelection 8af797
text e0e3e4
subtext1 bec8cc
subtext0 889296
@@ -4,7 +4,7 @@ tertiary_paletteKeyColor 376942
neutral_paletteKeyColor 1E1E26
neutral_variant_paletteKeyColor 23252D
background 23262D
onBackground 02200B
onBackground F5F5F6
surface 1E1E24
surfaceDim 1E1E24
surfaceBright 1E1E24
@@ -82,6 +82,16 @@ sky cefb97
sapphire 85ef77
blue 65eea0
lavender 90f79e
klink 65eea0
klinkSelection 65eea0
kvisited 73fa90
kvisitedSelection 73fa90
knegative 8affab
knegativeSelection 8affab
kneutral d0f9f4
kneutralSelection d0f9f4
kpositive 8af797
kpositiveSelection 8af797
text e0e3e4
subtext1 bec8cc
subtext0 889296