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
nixrun.#vogix-vm
vogix is alpha, however it is “battlefield tested” as it is integrated to mynixos and my system.
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)
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.