rofi/doc/themer.md
2016-12-09 19:49:49 +01:00

67 lines
1.3 KiB
Markdown

Each widget has:
* Class: Type of widget.
Example: textbox, scrollbar, separator
Class are prefixed with a `@`
* Name: Internal name of the widget.
Sub-widgets are {Parent}.{Child}.
Example: Listview, Listview.Even, Listview.Uneven, Listview.Scrollbar
Names are prefixed with a `#`
* State: State of widget
Optional flag(s) indicating state.
Multiple flags can be set.
Example: Highlight Active Urgent
States are prefixed with a `!`
So to set color of Even entry in listview that is highlighted and urgent:
`@textbox #Listview.Even !Urgent !Highlight`
Or to indicate all textboxes
`@textbox !Highlight`
Class is manditory, name is optional. Name is split on .s.
# Internally:
The theme is represented like a tree:
class --> name --> name --> state -> state
The states are sorted alphabetically
So `@textbox #Listview.Even !Urgent !Highlight` becomes:
textbox->listview->even -> highlight -> urgent.
When searching for entries the tree is traversed until deepest node is found.
Missing states are skipped.
Then from there properties are searched going up again.
Properties are in the form of:
`name: value`
Each property ends with `;`
Each property has a type. (Boolean, Integer, String, Color)
A block is enclosed by `{}`
```
@textbox #Listview.Even !Urgent !Highlight {
padding: 3;
foreground: #aarrggbb;
}
```