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-vmvogix is alpha, it is not battlefield tested though i'm working on integrating it to my system.
Vogix is evolving from a color theming tool to a full NixOS UX subsystem. See #149 for the complete vision.
- Colors - runtime theme switching
- Typography - fonts, sizes, weights
- Transparency - opacity, blur
- Backgrounds - wallpapers
- Window chrome - borders, gaps, radius
- Animations - duration, easing
- Cursors - theme, size
- Icons - icon themes
- Notifications - mako, dunst styling
- GTK/Qt - toolkit theming
- HiDPI - scaling
- Shaders - CRT, bloom effects
- Keybindings - unified across apps
- Window rules - floating, positioning
- Focus - follow mouse, click-to-focus
- Gestures - touchpad, touchscreen
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.
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 |
- 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
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";
};
}
];
};
};
}# 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/vogixVogix includes automated integration tests:
# Run all tests
./test.sh
# Or use nix directly
nix flake checkSee TESTING.md for detailed testing documentation.
- Architecture - System architecture and integration
- CLI Reference - Command-line interface guide
- Theming Guide - Creating and customizing themes
- Reload Mechanisms - Application reload methods
- Vogix16 Design System - Default scheme philosophy and formats
Vogix ships with the vogix16 scheme as the default, using the aikido theme in dark mode unless configured otherwise.
Vogix supports themes from multiple sources:
- vogix16: Native themes from vogix16-themes (aikido, forest, etc.)
- ansi16: Imported from iTerm2-Color-Schemes
- base16/base24: Imported from tinted-schemes (catppuccin, dracula, gruvbox, nord, etc.)
Create custom vogix16 themes by following the vogix16-themes contribution guide.
- 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)
Creative Commons Attribution-NonCommercial-ShareAlike (CC BY-NC-SA) 4.0 International
See LICENSE for details.
- Contributing Guide - How to contribute to Vogix
- Development Guide - Setting up development environment
- Testing Guide - Automated testing documentation
Vogix is inspired by projects in the theme ecosystem and incorporates scheme data from upstream sources:
- tinted-theming/schemes - Source for base16/base24 schemes (via fork)
- iTerm2-Color-Schemes - Source for ansi16 schemes (via fork)
- Base16 - Palette standard that informed scheme conventions
- Stylix - NixOS theming inspiration
- Omarchy - Runtime theme switching inspiration