Noctalia Architecture¶
The desktop shell is built on Noctalia (v5), a C++/native Wayland shell that is compositor-agnostic. Noctalia completely replaces the previous QML-based shell, escaping the ~300MB/monitor QML RAM tax to provide a fast, memory-efficient environment.
Configuration & Management¶
Noctalia is packaged via the noctalia flake input and enabled in home/shell.nix (programs.noctalia.enable).
Note
The configuration is maintained as a live out-of-store symlink at ~/.config/noctalia pointing to dots/noctalia. Home Manager explicitly does not write files here.
Core Features¶
Noctalia serves as the hub for the desktop's visual and interactive elements:
- Wrap-Around Bar: A top and left wrap-around bar (an "L-frame") that defines the workspace bounds.
- Lock & Idle: Robust lock/idle handling, providing the visual lock screen interface.
- Media & Brightness: Hardware control routing via noctalia msg IPC commands.
- Wallpaper Picker: Native desktop wallpaper integration.
Desktop Bar Layout¶
The panel layout uses a continuous visual frame composed of two segments meeting at a right angle: - Top Bar: Full width, containing a centered clock, tray, network, volume, battery, and control-center widgets. - Left Bar: Full height, housing the launcher, workspaces, and system monitors (CPU/GPU usage and temperatures).
Claude Code companion plugin (external)
A Claude Code companion plugin for Noctalia is developed in a separate repository
(~/CodeRepo/noctalia-claude-plugin) and is not managed by this flake or tracked in dots/.
Theming & Color Engine¶
Theming is unified across the Noctalia bar, the kitty terminal, and the starship prompt. A custom Material 3 palette is generated by the color-engine (dots/color-engine/apply_theme.py), which writes hot-reloaded JSON to ~/.config/noctalia/palettes/volnix.json.
To apply a new theme across the system, use the provided Makefile target:
Noctalia automatically syncs its internal template blocks to kitty and starship to keep the color scheme fully unified.