Skip to content
Oeiuwq Faith Blog OpenSource Porfolio

i-am-logger/vogix

A NixOS UX subsystem for unified desktop appearance and behavior

i-am-logger/vogix.json
{
"createdAt": "2025-03-18T23:58:01Z",
"defaultBranch": "master",
"description": "A NixOS UX subsystem for unified desktop appearance and behavior",
"fullName": "i-am-logger/vogix",
"homepage": "",
"language": "Rust",
"name": "vogix",
"pushedAt": "2026-06-19T02:39:44Z",
"stargazersCount": 50,
"topics": [
"base16",
"base24",
"color-scheme",
"customization",
"design-system",
"dotfiles",
"home-manager",
"hyprland",
"i3",
"nix",
"nixos",
"ricing",
"rust",
"sway",
"theming",
"unixporn",
"wayland",
"window-manager"
],
"updatedAt": "2026-06-19T02:39:46Z",
"url": "https://github.com/i-am-logger/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:

  • Appearance - runtime color theme switching across 4 schemes, no system rebuilds.
  • Behavior - an ontology-driven keyboard input engine: modal + chorded keybindings, optional dual-role CapsLock, and selectable interaction paradigms (vogix / i3 / cua / emacs / vim / windows / macos / linux).

Vision: Full desktop UX management - see [roadmap]!(#roadmap).

[!WARNING]
right now this runs and working in a vm.

Terminal window
nix run .#vogix-vm

vogix is alpha, however it is “battlefield tested” as it is integrated to mynixos and my system.

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

  • Keybindings - ontology-driven input engine: modes, optional dual-role CapsLock, interaction paradigms (vogix/i3/cua/emacs/vim/windows/macos/linux)
  • 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:

SchemeThemesPhilosophy
vogix1619Semantic design - colors convey functional meaning. See design system.
base16~300Minimal palette standard for syntax highlighting
base24~180Extended base16 with extra accents
ansi16~450Traditional 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 theme set -v lighter / vogix theme set -v darker
  • Application-Specific Configs: Direct integration for supported applications
  • Monochromatic Screen Shader: A palette-derived Hyprland screen shader ships today — it desaturates the screen to a light/dark blend of the active theme’s ramp while preserving the functional colors, applied/cleared via hyprctl and driven by the full vogix shader CLI (on/off/toggle/status, with intensity/brightness params)
  • Multiple Reload Methods: Unix signals, command, filesystem watching (touch), or none
  • 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

A single ontology-driven input daemon (evdev grab → uinput re-emit + compositor IPC) that owns the keyboard — no kanata, no compositor submaps — so the same keybindings work even without a running compositor.

  • Modes (optional): the engine can model a typed mode statechart (e.g. app / desktop / move / resize / console). Modes and their bindings are loaded as data, not hard-coded; “stuck in a mode” is unrepresentable (machine-checked against the praxis HMI ontology — Raskin/Norman/Harel). The shipped vogix default is a single flat app mode with no submodes; the named multi-mode statechart (desktop / move / console) currently appears only in test fixtures. Paradigms that need a submode add their own (e.g. i3 adds a resize submap, vim an insert submode).
  • Dual-role CapsLock (optional): an engine capability — tap = sticky (locked) mode, hold = momentary (reverts on release); a forgotten sticky mode idle-reverts. Esc is an always-available safety-net exit; the active mode is shown by the window border. It is NOT enabled by the vogix default (CapsLock stays CapsLock); you opt in by authoring layers.
  • Interaction paradigms: select a whole keymap flavour as data and layer your own bindings on top —
    • vogix (default) - the house WM-navigation layout (Super-chorded hjkl + arrows) in a single app mode
    • i3 / vim - modal flavours that add a submode (resize / insert)
    • cua - the IBM/Windows Ctrl-shortcut standard
    • windows / macos / linux - desktop chorded navigation (each cited to the platform’s keyboard-shortcut docs)
    • emacs - Ctrl/Meta motion as a single passthrough app mode (multi-key C-x prefixes modelled as transient modes are future work — not yet in the preset)
  • Context-aware macOS-Command remap: Super behaves like ⌘ (Super+C → Ctrl+C), retargeted to Ctrl+Shift in terminals so it can’t SIGINT a running job.

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;
appearance = {
scheme = "vogix16";
theme = "yoga";
variant = "dark";
};
};
}
];
};
};
}
Terminal window
# Show current theme state
vogix theme status
# List all schemes with theme counts
vogix theme list
# List themes in a specific scheme
vogix theme list -s base16
# Set scheme, theme, and variant
vogix theme set -s base16 -t catppuccin -v mocha
# Navigate to a darker variant
vogix theme set -v darker
# Navigate to a lighter variant
vogix theme set -v lighter
# `dark`/`light` are aliases of `darker`/`lighter` — one step toward dark/light
vogix theme set -v dark
vogix theme set -v light
# Generate shell completions
vogix completions bash > ~/.local/share/bash-completion/completions/vogix

Vogix includes automated integration tests:

Terminal window
# Run all tests
./test.sh
# Or use nix directly
nix flake check

See [TESTING.md]!(TESTING.md) for detailed testing documentation.

  • [Architecture]!(docs/architecture.md) - System architecture and integration
  • [CLI Reference]!(docs/cli.md) - Command-line interface guide
  • [Theming Guide]!(docs/theming.md) - Creating and customizing themes
  • [Reload Mechanisms]!(docs/reload.md) - Application reload methods
  • Vogix16 Design System - Default scheme philosophy and formats

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

Vogix supports themes from multiple sources:

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
  • Hyprland (for the screen shader, input engine, and session restore)
  • App reloads use Unix signals, a command, or a touch of the theme file — no DBus/IPC dependency

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

See [LICENSE]!(LICENSE) for details.

  • [Contributing Guide]!(CONTRIBUTING.md) - How to contribute to Vogix
  • [Development Guide]!(DEVELOPMENT.md) - Setting up development environment
  • [Testing Guide]!(TESTING.md) - Automated testing documentation

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