Currently GTK applications with Client Side Decoration always use
decorations from the respected GTK CSS theme. Because of CSS nature
different themes may handle decorations in the headerbars differently,
therefore making modifying them via user css a very hard task. However,
what we can do is to use decoration appearance syncing in our own theme - Breeze GTK.
Breeze GTK uses images (.svg and .png) for representing decoration
buttons (close, minimize, maximize) appearance. So to achieve the goal
what we can do (hypothetically) is the following:
- Ask KWin to render current decoration buttons to custom QPainters. For each button we must export every state (clicked, hovered, normal).
- QPainters then export decoration buttons to pixmaps or/and svg.
- Then we will save those images to assets folder in ~/.config/gtk-3.0/assets or something like that.
- Then we will create custom .css for Breeze GTK, that tells the theme to use these saved images for decorations.
To do:
- Correctly crop svg files or render all decorations with the fixed size
- Support Aurorae themes
- Find a way to write correct CSS for decorations
- Generate checked maximized state
Depends on D29509