A NixOS UX subsystem for unified desktop appearance and behavior
Rust
49
113 commits
updated Sep 4, 2026
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:
Vision: Full desktop UX management - see roadmap.
[!WARNING]
right now this runs and working in a vm.nix run .#vogix-vmvogix 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.
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 |
vogix theme set -v lighter / vogix theme set -v darkerhyprctl and driven by the full vogix shader CLI (on/off/toggle/status, with intensity/brightness params)touch), or noneA 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.
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).vogix default (CapsLock stays CapsLock); you opt in by authoring layers.vogix (default) - the house WM-navigation layout (Super-chorded hjkl + arrows) in a single app modei3 / vim - modal flavours that add a submode (resize / insert)cua - the IBM/Windows Ctrl-shortcut standardwindows / 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)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";
};
};
}
];
};
};
}
# 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:
# Run all tests
./test.sh
# Or use nix directly
nix flake check
See TESTING.md for detailed testing documentation.
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.
touch of the theme file — no DBus/IPC dependencyCreative Commons Attribution-NonCommercial-ShareAlike (CC BY-NC-SA) 4.0 International
See LICENSE for details.
Vogix is inspired by projects in the theme ecosystem and incorporates scheme data from upstream sources:
Rust
45.7%
Nix
33.4%
QML
20.1%
A NixOS UX subsystem for unified desktop appearance and behavior
Rust
49
113 commits
updated Sep 4, 2026
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:
Vision: Full desktop UX management - see roadmap.
[!WARNING]
right now this runs and working in a vm.nix run .#vogix-vmvogix 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.
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 |
vogix theme set -v lighter / vogix theme set -v darkerhyprctl and driven by the full vogix shader CLI (on/off/toggle/status, with intensity/brightness params)touch), or noneA 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.
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).vogix default (CapsLock stays CapsLock); you opt in by authoring layers.vogix (default) - the house WM-navigation layout (Super-chorded hjkl + arrows) in a single app modei3 / vim - modal flavours that add a submode (resize / insert)cua - the IBM/Windows Ctrl-shortcut standardwindows / 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)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";
};
};
}
];
};
};
}
# 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:
# Run all tests
./test.sh
# Or use nix directly
nix flake check
See TESTING.md for detailed testing documentation.
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.
touch of the theme file — no DBus/IPC dependencyCreative Commons Attribution-NonCommercial-ShareAlike (CC BY-NC-SA) 4.0 International
See LICENSE for details.
Vogix is inspired by projects in the theme ecosystem and incorporates scheme data from upstream sources:
Rust
45.7%
Nix
33.4%
QML
20.1%