A template-based theme builder for creating consistent desktop themes across multiple applications for Omarchy
# Build and install the example theme
./omarchy-theme-build themes/desert-twilight --install
# Create your own theme
mkdir themes/my-theme
cp themes/desert-twilight/colors.sh themes/my-theme/
# Edit themes/my-theme/colors.sh with your colors
# Add background images to themes/my-theme/
./omarchy-theme-build themes/my-theme --install
- For quickly creating a custom color palette that complements your favorite photo or illustration you wish to set as wallpaper.
- or just as a starting point for further refinement and customization.
Each theme lives in its own folder under themes/ containing:
colors.sh- Color definitions (required)- Background images (optional) - Any
.jpg,.png,.webpfiles
Example theme included:
themes/desert-twilight/- Warm sandstone theme + Wadi Rum at night background (photo © jg-k)
Generate theme files from a theme folder:
./omarchy-theme-build themes/desert-twilight # Build theme
./omarchy-theme-build themes/my-theme --light # Build with light mode
./omarchy-theme-build themes/my-theme --install # Build and install to OmarchyOptions:
--light/-l: Creates alight.modefile in output--install/-i: Installs theme to~/.config/omarchy/themes/and switches to it--help/-h: Shows usage information
- Templates in
templates/contain placeholders like${BG},${FG}, etc. - The script uses
envsubstto replace placeholders with color values - Output is saved to
output/THEME_NAME/ - Background images from theme folder are automatically copied
-
Create a new theme folder:
mkdir themes/my-new-theme cp themes/desert-twilight/colors.sh themes/my-new-theme/ # Edit themes/my-new-theme/colors.sh with your colors -
Add background images (optional):
cp ~/Pictures/my-wallpaper.jpg themes/my-new-theme/ -
Build and install the theme:
./omarchy-theme-build themes/my-new-theme --install
The --install flag will:
- Build the theme
- Copy it to
~/.config/omarchy/themes/ - Switch to the new theme automatically
BG- Main background colorFG- Main foreground/text color
BLACK,RED,GREEN,YELLOW- Standard ANSI colorsBLUE,MAGENTA,CYAN,WHITE- Standard ANSI colors
ACCENT- Primary accent color (used for highlights, active elements)BORDER_ACTIVE- Active window/element bordersBORDER_INACTIVE- Inactive window/element bordersSELECTION_BG- Background for selected itemsCURSOR- Terminal cursor color
ICON_THEME- Yaru icon variant name- Options:
Yaru,Yaru-blue,Yaru-dark,Yaru-magenta,Yaru-olive,Yaru-prussiangreen,Yaru-purple,Yaru-red,Yaru-sage,Yaru-wartybrown,Yaru-yellow
- Options:
Generates unified theme files for:
- Alacritty - Terminal emulator colors
- Btop - System monitor colors
- Hyprland - Window manager borders
- Hyprlock - Screen locker colors
- Icons - File manager icon theme
- Mako - Notification daemon styling
- Neovim - Text editor colors
- SwayOSD - On-screen display styling
- Walker - Application launcher theme
- Waybar - Status bar colors
- Chromium - Chromium background color
- Zed - Zed editor styling
Live reloading not working for Zed. For now, you can either set the theme manually in Zed, or modify omarchy-theme-set to update ~/.config/zed/settings.json.
Live reloading purely with symlinks to omarchy current thems has proven unsuccessful so far. It does not seem to track changes to the target file.
I don't use vim and am not familiar with neovim extensions...