Pure CSS framework to ease the development of new GTK (2, 3, 4) themes. Orthogonal in the sense that different states are represented with orthogonal (100% unrelated) markers, which reduces a lot the amount of CSS code.
Find a file
2025-02-05 18:21:33 +01:00
base Added thinteck, a semitransparent theme 2025-02-05 18:21:33 +01:00
images first commit 2024-11-14 11:26:17 +01:00
themes Added thinteck, a semitransparent theme 2025-02-05 18:21:33 +01:00
change_theme.py first commit 2024-11-14 11:26:17 +01:00
current_theme New default theme is hitech, despite base theme still being skeuo. Ohter improvements. 2024-11-30 19:03:32 +01:00
README.md Improved README and added TODO list. Improved rubberband at least for Nemo 2024-11-17 22:32:17 +01:00
set_color_scheme.sh fixed one error message 2024-11-30 19:59:31 +01:00
set_theme.sh Tuned hitech, improved plane 2024-11-30 18:50:49 +01:00

Orthogonal markers

no preview yet!

This is a simple framework to develop pure CSS gtk3 and gtk4 themes, with an accompanying gtk2 that I'll try to make it as automatable as possible to obtain.

GTK 3 and 4 work with color CSS files generated by the defunct/archived Gradience.

The idea is to create a CSS structure that allows different themes to reuse some code, freeing my energy to think of the fun part: actual customization of the elements.

Now why orthogonal, you say? Because the idea is to create a CSS code that is as simple as possible, and because, like any programmer, I don't like repeating code, and because I love that each function and state are clearly readable from the aspect of a control. Since I won't be using SASS or any other CSS preprocessor, then each function and state need as much orthogonality as possible, that is: I use different CSS properties to mark each state (be it hover, active, checked, disabled...). CSS does not have so many properies, therefore it's not a very easy task.

You can see some achievement with my previous themes skeuo-gradience, hightech-gradience and simple-gradience. Acually, having/maintaining these three very similar in intention and code base themes is what has made me think of creating this framework.

I'll bring these here too, as close as possible.

The base theme is skeuo (the one which contains only links to the base theme).

To create a new theme based on another one, you may copy themes/original to themes/new_theme. Then, when you want to modify one of the CSS, you should:

  1. remove the links to the original one (i.e. themes/new_theme/gtk-4.0/checks-radios.css to alter how checks and radios are seen)
  2. copy the original one instead of the link (following the above example, cp base/common/checks-radios.css themes/new_theme/gtk-4.0/)
  3. Edit the file! Since it is a copy of the original, the modifications will only affect new_theme. Notice that you only need to modify the file in gtk-4.0 folder, since the one in gtk-3.0 is a link to the one in gtk-4.0.

The structure of the project is inspired by Azurra framework.

Still a work in progress

TODO

  • Improve default color schemes and default theme (skeuo) appearance.
    • Improve arrows and their icons sometimes not appearing.
  • Add Nemo support (See this and this)
  • Python script that allows you to chose a light and dark theme, (for gtk.css and gtk-dark.css) and which also adapts GTK2 theme and XFWM4 theme.
  • Maybe it could also provide a qt(5|6)ct color scheme, Plasma color scheme, although it would have to deal with CSS named colors somehow.
  • Maybe offer the possibilty to also manage different gtk2 themes, or xfwm4 themes.
  • what about Aurorae (svg) themes, and Kvantum (svg) themes for Plasma?
  • Also add libadwaita themeing for Gnome.
  • create new theme from original base theme (skeuo, for now).

helmet