Skip to content

A0D1I2L3/aether

 
 

Repository files navigation

Aether Icon

aether_prodigy_low_res.mp4

Aether

A visual theming application for Omarchy. Create beautiful desktop themes through real-time color manipulation, wallpaper integration, and template-based theme generation.

Key Features

  • Intelligent Color Extraction - Advanced ImageMagick-based algorithm with automatic image classification (monochrome, low-diversity, chromatic)
  • Smart Palette Generation - Adaptive strategies ensure readability and preserve image aesthetics
  • Image Filter Editor - Apply blur, exposure, vignette, grain, and 12 presets before color extraction
  • Wallpaper Browsing - Integrated wallhaven.cc browser, local wallpaper manager, and favorites system
  • Color Presets - 10 popular themes: Dracula, Nord, Gruvbox, Tokyo Night, Catppuccin, and more
  • Advanced Color Tools - Harmony generator, gradients, and adjustment sliders (vibrance, contrast, temperature)
  • Color Lock System - Protect specific colors while experimenting with adjustments
  • Blueprint System - Save and share themes as JSON files
  • Neovim Themes - 37 LazyVim-compatible themes with preset matching
  • Shader Manager - 80+ GLSL screen shaders for hyprshade (color grading, effects, era vibes)
  • Accessibility Checker - Real-time WCAG contrast ratio validation
  • Customizable UI - Live theme reload and CSS variable system
  • Multi-App Support - Hyprland, Waybar, Kitty, Alacritty, btop, Mako, and 15+ more applications

Requirements

  • GJS (GNOME JavaScript bindings)
  • GTK 4
  • Libadwaita 1
  • libsoup3 - HTTP client library for wallhaven API
  • ImageMagick - Intelligent color extraction and image filter processing
  • hyprshade - Screen shader manager (optional, for shader effects)
  • Omarchy - Distro

Installation

  1. Install system dependencies:
sudo pacman -S gjs gtk4 libadwaita libsoup3 imagemagick
  1. Clone the repository:
git clone https://github.com/bjarneo/aether.git
cd aether
  1. Run Aether:
./aether

To open with a specific wallpaper:

./aether --wallpaper /path/to/image.png
# or short form
./aether -w /path/to/image.png
  1. (Optional) Install desktop entry:
cp li.oever.aether.desktop ~/.local/share/applications/

Or install via AUR:

yay -S aether
# or
paru -S aether

Usage

Command Line Options

./aether [OPTIONS]

Options:
  -h, --help                    Show help message
  -w, --wallpaper=FILE          Path to wallpaper image to load on startup
  -l, --list-blueprints         List all saved blueprint themes
  -a, --apply-blueprint=NAME    Apply a blueprint by name
  --widget-blueprint            Show floating blueprint selector widget

Examples:

./aether --wallpaper ~/Pictures/wallpaper.jpg
./aether -l
./aether -a BLUEPRINT_NAME
./aether --widget-blueprint  # Floating widget for quick blueprint switching

Basic Workflow

  1. Create a palette:

    • Upload a wallpaper and extract colors with intelligent ImageMagick algorithm
    • (Optional) Edit wallpaper with filters before extraction
    • Browse wallhaven.cc, local wallpapers, or favorites
    • Choose from 10 color presets
    • Generate color harmonies or gradients
  2. Customize colors:

    • Adjust individual colors with the color picker
    • Use sliders: vibrance, contrast, brightness, hue, temperature
    • Lock colors to protect them from slider adjustments
  3. Apply theme:

    • Click "Apply Theme" button
    • Aether processes templates and writes to ~/.config/omarchy/themes/aether/
    • Runs omarchy-theme-set aether to apply across all configured applications

Changes apply instantly via live reload.

Screen Shaders

Aether includes many GLSL screen shaders for hyprshade. Shaders are automatically installed to ~/.config/hypr/shaders/ when you run Aether. Use the Shader Manager in the Settings sidebar to toggle effects, or bind them directly in your Hyprland config.

Shader Location: ~/.config/hypr/shaders/

Add your own .glsl files to this directory and they will automatically appear in the Shader Manager list. For GLSL shader tutorials, see The Book of Shaders, Shadertoy, or LearnOpenGL - Shaders.

Manual Binding Example:

# In ~/.config/hypr/hyprland.conf
bind = $mainMod, F1, exec, hyprshade toggle grayscale
bind = $mainMod, F2, exec, hyprshade toggle retro-glow
bind = $mainMod, F3, exec, hyprshade off

Shader Categories:

  • Color corrections (grayscale, sepia, duotone, tritone)
  • Temperature adjustments (warm-tone, cool-tone, amber, blue-light-reduce)
  • Saturation effects (saturate, desaturate, color-pop, pastel)
  • Era vibes (40s, 50s, 60s, 70s, 80s, 90s, 00s)
  • Artistic looks (golden-hour, cyberpunk-neon, vintage-film, faded-memory)
  • Nature themes (forest-green, ocean, arctic-blue, desert-sand, autumn-leaves)
  • Accessibility (protanopia, deuteranopia, tritanopia, high-contrast)

Color Extraction Algorithm

Aether uses an advanced ImageMagick-based extraction system that:

  • Automatically classifies images as monochrome, low-diversity, or chromatic
  • Adapts palette generation strategy based on image characteristics
  • Ensures readability through intelligent brightness normalization
  • Preserves image aesthetics by prioritizing hue accuracy
  • Caches results for instant re-extraction (< 0.1s)

Development

# Run directly
./aether
# or
gjs -m src/main.js

# Format code
npm run format

Template System

Templates in templates/ support variable substitution:

  • {background}, {foreground} - Base colors
  • {color0} through {color15} - ANSI colors
  • {color5.strip} - Color without # prefix
  • {color5.rgb} - Decimal RGB format (e.g., 203,166,247)

Blueprint Format

Blueprints are JSON files stored in ~/.config/aether/blueprints/:

{
  "name": "My Theme",
  "timestamp": 1234567890,
  "palette": {
    "wallpaper": "/path/to/wallpaper.png",
    "lightMode": false,
    "colors": ["#1e1e2e", "#f38ba8", "..."]
  }
}

Troubleshooting

App won't start:

pacman -S gjs gtk4 libadwaita libsoup3
gjs -m src/main.js  # Check for errors

ImageMagick not found:

pacman -S imagemagick
magick --version  # Verify installation

Wallhaven not loading:

  • Check internet connection and libsoup3 installation
  • Rate limit: 45 requests/minute without API key
  • Add API key in settings for higher limits
  • Clear cache: rm -rf ~/.cache/aether/wallhaven-*

Contributing

Aether is designed to be extensible. Key areas:

  • Templates: Add new apps in templates/ directory
  • Presets: Add themes to src/constants/presets.js
  • UI Components: Extend components in src/components/
  • Color Tools: Enhance color-harmony.js or color-adjustment-controls.js
  • Theming: Add CSS variables in theme-manager.js

See CLAUDE.md for detailed architecture documentation.

License

MIT

Creator

Bjarne Øverli

About

Aether, create Omarchy themes the easy way.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 85.1%
  • GLSL 13.1%
  • CSS 1.6%
  • Other 0.2%