TL;DR: Automatically deploy dotfiles. Grouped into modules with dynamic behaviour.
What does it do?
Let's begin with a list of some of Astrality's key features:
- Manage and deploy configuration files according to a central YAML config file.
- Group related configuration into modules.
- Conditionally enable modules based on environment variables, OS, installed programs and shell commands.
- Copy and/or symlink files.
- Execute shell commands.
- Compile Jinja2 templates templates to target destinations.
- Dynamically manipulate context values used during jinja2 compilation.
- Automatically re-deploy dotfiles when source content is modified.
- Subscribe to pre-defined events, such as local daylight, and execute actions accordingly.
- Fetch modules from GitHub.
- Restore files created and/or overwritten by modules.
Here is gif demonstrating how Astrality is used to:
- Automatically change the desktop wallpaper based on the sun's position in the sky.
- Dynamically change the font size, and implicitly the bar height, of polybar.
- Simultaneously change the color scheme of alacritty, kitty, and polybar at the same time.
Astrality requires python 3.6 or greater. Check your version by running
astrality-git is published on the AUR for ArchLinux users. Otherwise,
you can install Astrality using
$ python3.6 -m pip install astrality
You should now be able to start astrality from your command line, but first, let us create an example configuration:
$ astrality --create-example-config
Take a look at the generated example configuration at
Now start astrality: