Skip to content

i-am-logger/vogix

Repository files navigation

Vogix

CI License: CC BY-NC-SA 4.0 NixOS Rust

A NixOS UX subsystem for unified desktop appearance and behavior.

Vogix is a declarative UX layer for NixOS that unifies desktop configuration - define your appearance (colors, fonts, transparency, animations) and behavior (keybindings, window rules, gestures) once, and vogix generates configs for all your applications.

Currently implemented: Runtime color theme switching across 4 schemes without system rebuilds.

Vision: Full desktop UX management - see roadmap.

Warning

right now this runs and working in a vm.

nix run .#vogix-vm

vogix is alpha, it is not battlefield tested though i'm working on integrating it to my system.

Roadmap

Vogix is evolving from a color theming tool to a full NixOS UX subsystem. See #149 for the complete vision.

Appearance (how things look)

Behavior (how things act)

Philosophy

Declarative. Define your desktop experience once in a single config. Vogix generates the app-specific configs.

Reproducible. Built on Nix. Same inputs = same outputs. Templates are immutable in the Nix store, rendering is deterministic.

Compositor-agnostic. Works with Hyprland, Sway, i3, and others. Define your UX, vogix handles the translation.

Color Schemes

Vogix supports 4 color schemes, each with its own philosophy:

Scheme Themes Philosophy
vogix16 19 Semantic design - colors convey functional meaning. See design system.
base16 ~300 Minimal palette standard for syntax highlighting
base24 ~180 Extended base16 with extra accents
ansi16 ~450 Traditional ANSI terminal color mappings

Features

  • Multi-Scheme Support: 4 color schemes (vogix16, ansi16, base16, base24)
    • vogix16 (default) - Semantic design system focused on functional colors (19 native themes)
    • ansi16 - Terminal ANSI standard (~450 themes)
    • base16 - Minimal palette standard, widely used for UI and syntax highlighting (~300 themes)
    • base24 - Expanded base16 palette with extra accents (~180 themes)
  • Runtime Theme Switching: Change themes without NixOS rebuilds
  • Multi-Variant Themes: Themes can have multiple variants (e.g., catppuccin: latte, frappe, macchiato, mocha)
  • Polarity Navigation: Switch between lighter/darker variants with vogix -v lighter / vogix -v darker
  • Application-Specific Configs: Direct integration for supported applications
  • Multiple Reload Methods: DBus, Unix signals, Sway IPC, filesystem watching
  • Nix-Based Theme Generation: All theme configurations pre-generated at build time
  • NixOS Integration: Home Manager module with systemd service
  • Shell Completions: Support for Bash, Zsh, Fish, and Elvish

Quick Start

Installation (NixOS with Flakes)

Add to your flake.nix:

{
  inputs.vogix.url = "github:i-am-logger/vogix";

  outputs = { nixpkgs, home-manager, vogix, ... }: {
    homeConfigurations.youruser = home-manager.lib.homeManagerConfiguration {
      modules = [
        vogix.homeManagerModules.default
        {
          # Enable applications you want to theme
          programs.alacritty.enable = true;
          programs.btop.enable = true;

          # Configure vogix
          programs.vogix = {
            enable = true;
            scheme = "vogix16";
            theme = "aikido";
            variant = "dark";
          };
        }
      ];
    };
  };
}

Usage

# Show current theme state
vogix status

# List all schemes with theme counts
vogix list

# List themes in a specific scheme
vogix list -s base16

# Set scheme, theme, and variant
vogix -s base16 -t catppuccin -v mocha

# Navigate to a darker variant
vogix -v darker

# Navigate to a lighter variant
vogix -v lighter

# Switch to default dark/light variant
vogix -v dark
vogix -v light

# Generate shell completions
vogix completions bash > ~/.local/share/bash-completion/completions/vogix

Testing

Vogix includes automated integration tests:

# Run all tests
./test.sh

# Or use nix directly
nix flake check

See TESTING.md for detailed testing documentation.

Documentation

Defaults

Vogix ships with the vogix16 scheme as the default, using the aikido theme in dark mode unless configured otherwise.

Example Themes

Vogix supports themes from multiple sources:

Create custom vogix16 themes by following the vogix16-themes contribution guide.

Requirements

  • NixOS (for full integration) or any Linux distribution (for standalone binary)
  • Rust Edition 2024
  • DBus (for DBus reload functionality)
  • Optional: Sway (for Sway IPC reload)

License

Creative Commons Attribution-NonCommercial-ShareAlike (CC BY-NC-SA) 4.0 International

See LICENSE for details.

Contributing

Acknowledgments

Vogix is inspired by projects in the theme ecosystem and incorporates scheme data from upstream sources:

About

A NixOS UX subsystem for unified desktop appearance and behavior

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

 
 
 

Contributors