AURA
One command re-themes my entire Linux desktop — 23 themes, seven config formats, one generator
I got tired of changing one colour in seven places. So I made one file that changes it in all of them.
What it is
A desktop that runs on Arch and Hyprland, with one idea at the centre: a single theme file drives every application.
Changing the accent colour of a Wayland desktop normally means editing the window manager’s config, the bar’s stylesheet, the launcher’s variables, the terminal’s palette, the notification daemon’s CSS, the lock screen and the fetch banner — seven files, seven syntaxes, and they drift apart within a week.
AURA reads one theme.json and regenerates all seven. Then it does something I did not expect to need: point
it at a photograph, and it extracts a palette from the image and re-skins the entire desktop to match.
What it does
- One command re-themes everything — window manager, bar, launcher, terminal, notifications, lock screen, fetch banner — from a single source of truth.
- 23 hand-built themes, including Nord, Catppuccin, Dracula, Gruvbox and Tokyo Night, plus a Persian-date aware variant.
- Palette extraction from an image, so the desktop matches a wallpaper without me picking colours.
- Role-based profiles — one profile for development, one for gaming, one for presentations — that switch dozens of settings at once.
- Over 100 small utilities: clipboard history, brightness control, a calculator, window animations, a keyboard-layout cheatsheet, a launcher, an emoji picker.
- Persian dates natively in the prompt and in widgets, which almost every Linux tool still gets wrong.
The numbers
| 23 | themes |
| 7 | application configs generated from one file |
| 55 | bar styles, 45 layouts |
| 100+ | utility scripts |
| 24+ | animation presets |
Why it’s worth a look
The engineering is the contract, not the colours. Any collection of dotfiles can hold a pretty theme; keeping seven unrelated config formats in agreement from a single input is the part that requires design — a schema each theme must satisfy, generated output that is deterministic, and a plugin mechanism for things I had not thought of yet.
It is also the project where Persian localisation is most complete, because it is the one I use every day and where I notice a Persian prompt with a Gregorian date every single morning.

