3 KiB
Basic Organization
Each widget has:
Class
Class: Type of widget.
Example: textbox, scrollbar, separator
Class are prefixed with a @
List of classes in rofi:
- @textbox
- @scrollbar
- @window
- @separator
- @listview
- @box
Name
Name: Internal name of the widget.
Sub-widgets are {Parent}.{Child}.
Example: listview, listview.element, listview.scrollbar
Names are prefixed with a #
List of names in rofi:
- #window
- #mainbox
- #mainbox.box: The main vertical @box
- #inputbar
- #inputbar.box: The horizontal @box packing the widgets.
- #inputbar.separator: The separator under/above the inputbar.
- #inputbar.case-indicator: The case/sort indicator @textbox
- #inputbar.prompt: The prompt @textbox
- #inputbar.entry: The main entry @textbox
- #listview
- #listview.scrollbar: The listview scrollbar
- #listview.element: The entries in the listview
- #sidebar
- #sidebar.box: The main horizontal @box packing the buttons.
- #sidebar.button: The buttons @textbox for each mode.
- #sidebar.separator: The separator under/above the sidebar.
- #message
- #message.textbox: The message textbox.
- #message.separator: The separator under/above the sidebar.
State
State: State of widget
Optional flag(s) indicating state.
These are appended after the name or class of the widget.
@textbox selected.normal { }
#listview.element selected.urgent { }
Currently only the @entrybox has states:
{visible modifier}.{state}
Where visible modifier
can be:
- normal: No modification.
- selected: The entry is selected/highlighted by user.
- alternate: The entry is at an alternating row. (uneven row)
Where state
is:
- normal: No modification.
- urgent: This entry is marked urgent.
- activE: This entry is marked active.
These can be mixed.
Example:
@textbox selected.active {
background: #003642;
foreground: #008ed4;
}
Sets all selected textboxes marked active to the given foreground and background color.
File structure
The file is structured as follows
/* Global properties, that apply as default to all widgets. */
{list of properties}
@{class} {optional state} {
{list of properties}
}
@{name}.{name} {optional state} {
{list of properties}
}
The global properties has to be at the top of the file, the rest can freeĺy be mixed.
Each property is constructed like:
{key} : {value} ;
Key is a simple ascii string. Separated from value by a colon ':'; Value supports the following formats:
- string:
"{string}"
- integer:
[0-9]+
- double:
[0-9]+\.[0-9]
- boolean:
true|false
- color:
#[0-9a-fA-F]{6}
: hexidecimal rgb color.#[0-9a-fA-F]{8}
: hexidecimal argb color.argb:[0-0a-fA-F]{8}
: Old rofi argb color style.rgba\([0-9]{1,3},[0-9]{1,3}, [0-9]{1,3}, {double}\)
: css style rgba color.rgb\([0-9]{1,3},[0-9]{1,3}, [0-9]{1,3}\)
: css style rgb color. Each property is closed by a semi-colon ';';