Alacritty is a "fast, cross-platform, OpenGL terminal emulator" with many themes available, this project allows Alacritty theme to automatically change to a light/dark theme based on the current system theme. This only works for systems running Gnome and systemd (happy to receive contributions for other systems).
This is not affliated/supported by the Alacritty team, please report issues here and not to the Alacritty project.
Alacritty provides the ability for an user to define themes (or override parts of a theme). All of this is achieved via the alacritty.toml
configuration file. With the switch to TOML, Alacritty allows the import of other .toml
files that have themes defined, so it's easy to keep configuration separate from the current theme. Also if any of the configuration files are updated, the terminal windows will auto-reload (if live_config_reload = true
is set). This functionality mkakes it possible to import a theme.toml
file and update the contents of the file and have Alacritty change themes live. Unfortunately, Alacritty does not automatically follow the current system theme preference.
There are many ways to install Alacritty and they also have instructions for installing themes that are maintained by the Alacritty team. Once Alacritty is installed and working with your chosen theme:
cd ~/.config/alacritty/
git clone https://github.com/shombando/alacritty-auto-theme.git
Now you can jump to the Configuration section.
If you version control your Alacritty configuration as part of your dot files:
cd ~/.config/alacritty/
git submodule add https://github.com/shombando/alacritty-auto-theme.git
git submodule update
git submodule init
Consider making a fork of this repo so I ever change the default light/dark themes my changes don't overwrite your selection. I could not make those files part of the repo but wanted to make it easier to just install and try with minimal config.
Edit both the light_theme.toml
and dark-theme.toml
file and set it to one of the options from the themes directory (or paste in your color scheme directly in light/dark file) and include the following in your main alacritty.toml
file:
import = [
"~/.config/alacritty/alacritty-auto-theme/theme.toml"
]
NOTE: Make sure that is the only time you're importing a theme. If you followed the directions for the alacritty-theme installation make sure you don't have that import still in your
alacritty.toml
file
Then we'll install the systemd service, by opening a terminal in this current folder and running the following:
cd ~/.config/alacritty/alacritty-auto-theme
mkdir -p ~/.config/systemd/user/
cp ./AlacrittyAutoTheme.service ~/.config/systemd/user/
systemctl --user enable AlacrittyAutoTheme.service
systemctl --user start AlacrittyAutoTheme.service
That's it, now when you switch your system theme, all Alacritty windows will also switch the respective light/dark themes you picked.
If you want to manually override the light/dark theme independent of the system theme. It will reset to the system theme the next time the system theme changes. You can call alacritty-light
or alacritty-dark
.
Also, since this script is dependent on Gnome and systemd if you want to use it "manually" by calling the aliases.
alias alacritty-light="echo \"import = [ '~/.config/alacritty/alacritty-auto-theme/light_theme.toml' ]\" > ~/.config/alacritty/alacritty-auto-theme/theme.toml"
alias alacritty-dark="echo \"import = [ '~/.config/alacritty/alacritty-auto-theme/dark_theme.toml' ]\" > ~/.config/alacritty/alacritty-auto-theme/theme.toml"