Styles
As stated in the repository’s README, Regolith styles are a convention by which a set of files which define key/value pairs are loaded into memory and can be queried by xrdb
or xrescat
. Xresources
employs the C preprocessor to allow for behaviors such as including more files, defining constants and conditional expressions. In Regolith, only two preprocessor directives are used: #include
and #define
. #include
statements are used to reference other files. Collections of files called looks
were covered in the previous section of this guide. #define
statements simply allow for a symbolic value to be replaced by a literal value, like defining a variable.
Defines
To maximize the re-use of theme information in Regolith, Xresources
are divided into two categories of files: definition files and application files. The definition files make heavy use of the define
directive. They essentially bind an abstract key, such as “blue” or “terminal font” to a literal value, such as #0000FF
or Source Code Pro Medium
. In making changes to files, it’s expected that these defines will change. The user may wish to specify a different icon set, or typeface, and would do so by modifying or creating a new definition file. Once this file is created, it needs to be referenced by a top-level Xresources
file in ~/.Xresources-regolith
.
Note: when referencing other files in Xresources
via the #include
directive, shortcuts like $HOME
and ~/
are not available. Absolute paths are required.
Application Xresources
files
As mentioned previously, a number of Xresources
are present in /etc/regolith/styles
, including those for specific applications such as st
or i3-wm
. Opening these files will show a mapping of the abstract keys provided by the defines files to application specific keys. In this way, the general description of the look can be mapped to any UI component or application that can read from Xresources
.
Loading Order
The /usr/bin/regolith-session-init
script will check for the first Xresources file it finds in the following order:
~/.Xresources-regolith
/etc/regolith/styles/root
In addition to a Regolith Xresources file, ~/.Xresources
will also be loaded if it exists upon session start.
After loading a root Xresources
file, the session init script then merges any entries found in the ~/.config/regolith/Xresources
file. This file provides a quick way of simply overriding a few values without having to copy the entire set of resource definitions.
Reloading Xresources
The regolith-look
command can be used to reload all Xresources
entries as they are otherwise only loaded upon session initialization:
$ regolith-look refresh
Alternatively, the xrdb
command can be used to refresh specific Xresources
files after they have changed. For example, to reload the user Xresources
file run:
$ xrdb -merge ~/.Xresources-regolith
Verification
You can test that a change has been made to your Xresources file by querying it from the command line. If a change was made to key foo.bar
then the following command will return it’s current value, or empty
if unset:
$ xrescat foo.bar empty