As stated in the repo 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
xrescat. Xresources employes 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 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.
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
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 Xresource file in
Note: when referencing other files in Xresources via the
#include directive, shortcuts like
~/ are not available. Absolute paths are required.
Application Xresource files
As mentioned previously, in
/etc/regolith/styles lives a number of Xresources, including those for specific applications such as
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.
/usr/bin/regolith-session-init script will check for the first Xresources file it finds in the following order:
In addition to a Regolith Xresources file,
~/.Xresources will also be loaded if it exists upon session start.
After loading a root Xresource 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.
regolith-look command can be used to reload all Xresource entries as they are loaded upon session initialization:
$ regolith-look refresh
xrdb command can be used to refresh specific Xresource files after they have changed. For example, to reload the user Xresource file run:
$ xrdb -merge ~/.Xresources-regolith
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
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.