Theming
Available in Atuin >= 18.4
For terminal interface customization, Atuin supports user and built-in color themes.
Atuin ships with only a couple of built-in alternative themes, but more can be added via TOML files.
Required config
The following is required in your config file (~/.config/atuin/config.toml
)
Where THEMENAME
is a known theme. The following themes are available out-of-the-box:
- default theme (can be explicitly referenced with an empty name
""
) autumn
thememarine
theme
These are present to ensure users and developers can try out theming, but in general, you will need to download themes or make your own.
If you are writing your own themes, you can add the following line to get additional output:
to the same config block. This will print out any color names that cannot be parsed from the requested theme.
A final optional setting is available:
which sets the maximum levels of theme parents to traverse. This should not need to be explicitly added in normal use.
Usage
Theme structure
Themes are maps from Meanings, describing the developer’s intentions, to (at present) colors. In future, this may be expanded to allow richer style support.
Meanings are from an enum with the following values:
AlertInfo
: alerting the user at an INFO levelAlertWarn
: alerting the user at a WARN levelAlertError
: alerting the user at an ERROR levelAnnotation
: less-critical, supporting textBase
: default foreground colorGuidance
: instructing the user as help or contextImportant
: drawing the user’s attention to informationTitle
: titling a section or view
These may expand over time as they are added to Atuin’s codebase, but Atuin should have fallbacks added for any new Meanings so that, whether themes limit to the present list or take advantage of new Meanings in future, they should keep working sensibly.
Note for Atuin contributors: please do identify and, where appropriate during your own PRs, extend the Meanings enum if needed (along with a fallback Meaning!).
Theme creation
When a theme name is read but not yet loaded, Atuin will look for it in the folder
~/.config/atuin/themes/
unless overridden by the ATUIN_THEME_DIR
environment
variable. It will attempt to open a file of name THEMENAME.toml
and read it as a
map from Meanings to colors.
Colors may be specified either as names from the palette
crate in lowercase, or as six-character hex codes, prefixed with #
. For example,
the following are valid color names:
#ff0088
teal
powderblue
A theme file, say my-theme.toml
can then be built up, such as:
where not all of the Meanings need to be explicitly defined. If they are absent,
then the color will be chosen from the parent theme, if one is defined, or if that
key is missing in the theme
block, from the default theme.
This theme file should be moved to ~/.config/atuin/themes/my-theme.toml
and the
following added to ~/.config/atuin/config.toml
:
When you next run Atuin, your theme should be applied.