🖥️Desktop & LinuxYear: 2025Complete

AURA

One command re-themes my entire Linux desktop — 23 themes, seven config formats, one generator

AURA cover
Bash / zshHyprlandWaybarRofiKittySwayNCHyprlockFastfetch

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.

More projects