omnixient/modules/themes
Padreug e0f2a3951f feat(themes): wallpaper assets
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 09:59:04 +02:00
..
wallpapers feat(themes): wallpaper assets 2026-06-28 09:59:04 +02:00
catppuccin-latte.nix feat(themes): theme system and 12 colorscheme modules 2026-06-28 09:59:04 +02:00
catppuccin.nix feat(themes): theme system and 12 colorscheme modules 2026-06-28 09:59:04 +02:00
everforest.nix feat(themes): theme system and 12 colorscheme modules 2026-06-28 09:59:04 +02:00
gruvbox.nix feat(themes): theme system and 12 colorscheme modules 2026-06-28 09:59:04 +02:00
kanagawa.nix feat(themes): theme system and 12 colorscheme modules 2026-06-28 09:59:04 +02:00
matte-black.nix feat(themes): theme system and 12 colorscheme modules 2026-06-28 09:59:04 +02:00
nord.nix feat(themes): theme system and 12 colorscheme modules 2026-06-28 09:59:04 +02:00
osaka-jade.nix feat(themes): theme system and 12 colorscheme modules 2026-06-28 09:59:04 +02:00
README.md feat(themes): theme system and 12 colorscheme modules 2026-06-28 09:59:04 +02:00
ristretto.nix feat(themes): theme system and 12 colorscheme modules 2026-06-28 09:59:04 +02:00
rose-pine.nix feat(themes): theme system and 12 colorscheme modules 2026-06-28 09:59:04 +02:00
tokyo-night.nix feat(themes): theme system and 12 colorscheme modules 2026-06-28 09:59:04 +02:00

Themes Directory - Omnixient Theme System

The modules/themes/ directory contains complete theme definitions that provide unified styling across all applications and desktop components in Omnixient. Each theme is a self-contained Nix module that configures colors, fonts, and appearance settings system-wide.

Theme Architecture

Each theme module follows this structure:

{ config, lib, pkgs, ... }:
let
  # Color palette definitions
  colors = {
    primary = "#7aa2f7";
    background = "#1a1b26";
    # ... more colors
  };
in {
  # Theme configuration for all applications
  config = lib.mkIf (config.omni.theme == "theme-name") {
    # Application configurations
  };
}

Available Themes

Omnixient includes 11 carefully crafted themes:

Dark Themes

tokyo-night.nix (Default)

Inspiration: Tokyo's neon-lit nights Palette: Deep blues and vibrant accents Character: Modern, clean, high contrast Best for: Programming, late-night work

Key Colors:

  • Background: #1a1b26 (Dark navy)
  • Primary: #7aa2f7 (Bright blue)
  • Accent: #bb9af7 (Purple)
  • Success: #9ece6a (Green)
  • Warning: #e0af68 (Orange)

catppuccin.nix

Inspiration: Warm, cozy coffee shop Palette: Soft pastels with warm undertones Character: Soothing, gentle on eyes Best for: Long coding sessions, reading

Key Colors:

  • Background: #1e1e2e (Warm dark)
  • Primary: #cba6f7 (Soft purple)
  • Accent: #f38ba8 (Rose)
  • Success: #a6e3a1 (Mint green)

gruvbox.nix

Inspiration: Retro terminal aesthetics Palette: Warm earth tones Character: Vintage, comfortable, nostalgic Best for: Terminal work, distraction-free coding

nord.nix

Inspiration: Arctic, Scandinavian minimalism Palette: Cool blues and grays Character: Clean, minimal, professional Best for: Focus work, professional environments

everforest.nix

Inspiration: Deep forest, natural greens Palette: Forest greens with earth accents Character: Calm, natural, easy on eyes Best for: Long work sessions, nature lovers

rose-pine.nix

Inspiration: English countryside Palette: Muted roses and soft pinks Character: Elegant, sophisticated, gentle Best for: Creative work, design

kanagawa.nix

Inspiration: Japanese woodblock prints Palette: Traditional Japanese colors Character: Artistic, cultural, balanced Best for: Creative coding, artistic work

matte-black.nix

Inspiration: Minimalist design Palette: True blacks and whites Character: Stark, minimal, high contrast Best for: Focus, minimal distractions

osaka-jade.nix

Inspiration: Japanese jade and bamboo Palette: Jade greens with natural accents Character: Serene, balanced, harmonious Best for: Meditation coding, calm work

ristretto.nix

Inspiration: Dark roasted coffee Palette: Rich browns and warm tones Character: Warm, cozy, comfortable Best for: Coffee shop coding, warm environments

Light Theme

catppuccin-latte.nix

Inspiration: Light coffee, morning work Palette: Soft pastels on light background Character: Bright, energetic, clean Best for: Daytime work, bright environments

Theme Components

Each theme configures these application categories:

Terminal Applications

  • Alacritty: Terminal colors and transparency
  • Kitty: Color scheme and font rendering
  • Shell: Prompt colors and syntax highlighting

Text Editors

  • Neovim: Syntax highlighting and UI colors
  • VSCode: Editor theme and syntax colors
  • Terminal editors: Vim, nano color schemes

Desktop Environment

  • Hyprland: Window borders, gaps, animations
  • Waybar: Panel colors, module styling
  • Rofi/Launchers: Menu and selection colors

System UI

  • GTK: System-wide GTK application theming
  • Qt: Qt application color schemes
  • Icon themes: Matching icon sets

Notification System

  • Mako: Notification colors and styling
  • System notifications: Alert and info colors

Development Tools

  • Git tools: Diff colors, status indicators
  • Lazygit: TUI color scheme
  • Development containers: Terminal themes

Theme Implementation

Color Management

Each theme defines a comprehensive color palette:

colors = {
  # Base colors
  bg = "#1a1b26";           # Background
  fg = "#c0caf5";           # Foreground text

  # Accent colors
  blue = "#7aa2f7";         # Primary blue
  cyan = "#7dcfff";         # Cyan accents
  green = "#9ece6a";        # Success/positive
  yellow = "#e0af68";       # Warnings
  red = "#f7768e";          # Errors/critical
  purple = "#bb9af7";       # Special/accent

  # UI colors
  border = "#414868";       # Window borders
  selection = "#364a82";    # Text selection
  comment = "#565f89";      # Comments/inactive
};

Application Configuration

Colors are applied consistently across applications:

# Alacritty terminal configuration
programs.alacritty.settings = {
  colors = {
    primary = {
      background = colors.bg;
      foreground = colors.fg;
    };
    normal = {
      black = colors.bg;
      blue = colors.blue;
      # ... more colors
    };
  };
};

Dynamic Application

Themes are applied conditionally:

config = lib.mkIf (config.omni.theme == "tokyo-night") {
  # All theme configurations here
};

Theme Switching

Command Line

# List available themes (also prints the current theme)
omni-theme

# Switch theme
omni-theme gruvbox

# Interactive picker with preview
omni-theme-picker

System Integration

Theme switching:

  1. Updates configuration.nix with new theme
  2. Rebuilds system configuration
  3. All applications automatically use new colors
  4. No manual restart required for most applications

Scriptable Interface

The current theme is recorded as currentTheme in configuration.nix, so scripts can read and switch it directly:

# Read the current theme from config
current=$(grep -oP 'currentTheme = "\K[^"]+' /etc/nixos/configuration.nix)

# Switch to the next available theme
ls /etc/nixos/modules/themes/*.nix | xargs -n1 basename -s .nix \
  | grep -v "$current" | head -1 | xargs omni-theme

Creating Custom Themes

1. Copy Existing Theme

cp modules/themes/tokyo-night.nix modules/themes/my-theme.nix

2. Define Color Palette

let
  colors = {
    bg = "#your-bg-color";
    fg = "#your-fg-color";
    # Define your complete palette
  };

3. Update Theme Condition

config = lib.mkIf (config.omni.theme == "my-theme") {
  # Theme configurations
};

4. Add to Available Themes

Update theme management scripts to include your new theme.

5. Test and Iterate

# Test your theme
omni-theme my-theme

# Make adjustments and rebuild
omni-rebuild

Theme Guidelines

Color Accessibility

  • Ensure adequate contrast ratios (4.5:1 for normal text)
  • Test with color blindness simulators
  • Provide clear visual hierarchy

Consistency

  • Use semantic color naming (primary, secondary, accent)
  • Maintain consistent color relationships
  • Apply colors systematically across applications

Performance

  • Avoid complex color calculations
  • Use static color definitions
  • Test theme switching performance

Documentation

  • Document color meanings and usage
  • Provide theme inspiration and character
  • Include screenshots or examples

Theme Validation

Color Contrast Testing

# Test theme accessibility
omni-theme my-theme
# Use accessibility tools to check contrast ratios

Visual Testing

  • Test all major applications
  • Verify readability in different lighting
  • Check consistency across different screen types

Integration Testing

  • Ensure theme switching works properly
  • Verify all applications receive theme updates
  • Test with different desktop configurations

This comprehensive theme system ensures a cohesive, beautiful, and customizable visual experience across the entire Omnixient desktop environment.