Nullkia: A Pipeline-Driven Desktop Environment
Nullkia is a desktop environment written in Lateralus. Tiling and floating window management, GPU-accelerated compositing, and pipeline-based widgets — all in under 50 MB of RAM.
Why build a DE?
NullSec Linux v1.x shipped with XFCE. It works, but it's not ours. Nullkia is purpose-built for security work: every panel, widget, and menu is a Lateralus pipeline that can be inspected, modified, and extended.
Architecture
Nullkia runs on Wayland via wlroots. The compositor is a thin C shim that delegates to Lateralus for all layout and rendering decisions:
fn layout_windows(windows: Vec<Window>, screen: Rect) -> Vec<Placement> {
match current_mode() {
Tiling => windows |> tile_bsp(screen),
Floating => windows |> map(|w| w.last_placement),
Monocle => windows |> map(|w| Placement::fullscreen(screen)),
}
}
Pipeline widgets
Every status bar widget is a pipeline. The battery widget:
fn battery_widget() -> Widget {
every(30.seconds())
|> map(|_| read_file("/sys/class/power_supply/BAT0/capacity"))
|> map(|s| s |> trim() |> to_int())
|> map(|pct| Widget::text("{battery_icon(pct)} {pct}%"))
}
Memory footprint
Nullkia idles at 38 MB RSS with a status bar, system tray, and wallpaper. For comparison, GNOME Shell idles at 200+ MB. We achieve this by having no JavaScript engine, no web views, and no runtime interpreter.
Keybindings
All keybindings are configurable via ~/.config/nullkia/keys.ltl. Default bindings are tiling-WM-inspired: Super+Enter for terminal, Super+1-9 for workspaces, Super+Shift+Q to close.
The status bar
Nullkia's status bar is entirely built from Lateralus pipelines. Each widget is a pipeline that transforms system data into display text:
// Battery widget
fn battery_widget() -> Widget {
poll_interval(5.seconds())
|> map(|_| read_file("/sys/class/power_supply/BAT0/capacity"))
|> map(|cap| {
let icon = match cap {
0..20 => "🔴",
20..50 => "🟡",
50..100 => "🟢",
}
"{icon} {cap}%"
})
|> to_widget(font: "VT323", color: colors::lime)
}
// Network widget — shows current IP and transfer rate
fn network_widget() -> Widget {
poll_interval(1.second())
|> map(|_| {
let iface = active_interface()
let ip = iface.ipv4_addr
let rx = iface.rx_bytes_per_sec |> format_bytes()
let tx = iface.tx_bytes_per_sec |> format_bytes()
"⬇{rx} ⬆{tx} | {ip}"
})
|> to_widget(font: "VT323", color: colors::cyber_blue)
}
Users can edit these pipelines live. Change the poll interval, add custom formatting, or pipe data through additional transformations. The bar hot-reloads on save.
Workspace management
Nullkia ships with 9 workspaces, each pre-configured for a pentest phase:
- 1: Recon — opens with a terminal and Firefox for OSINT
- 2: Scanning — opens with nmap and a Wireshark capture window
- 3: Exploitation — opens with Metasploit console and Burp Suite
- 4: Post-Exploit — opens with BloodHound and CrackMapExec
- 5: Cracking — opens with hashcat monitor and wordlist manager
- 6: Forensics — opens with Autopsy and Volatility
- 7: Coding — opens with VS Code and the Lateralus REPL
- 8: Notes — opens with Obsidian for engagement documentation
- 9: Comms — opens with browser for Slack/Discord/email
Switch with Super+1 through Super+9. Each workspace remembers its window layout between reboots.
Theming engine
Nullkia themes are Lateralus data files that control every visual element:
// themes/nullsec-dark.ltl
theme NullSecDark {
background: #0a001a,
foreground: #e0e0ff,
accent: #00ff41,
warning: #ffee00,
error: #ff00aa,
border: #330066,
fonts: {
ui: "VT323",
code: "JetBrains Mono",
title: "Press Start 2P",
},
window: {
border_width: 2,
border_color: self.border,
active_border: self.accent,
title_bg: gradient(#110028, #1a0033),
corner_radius: 0, // Sharp corners for Y2K aesthetic
},
bar: {
height: 28,
bg: #110028,
border_bottom: self.accent,
},
}
The community has already contributed 12 themes, including a Solarized Dark variant, a Dracula port, and a "CRT Green" theme that simulates phosphor glow.
Accessibility
Security tools are notorious for poor accessibility. Nullkia addresses this:
- Keyboard-only navigation — every action is reachable without a mouse. Tab cycles focus, Enter activates, Escape cancels.
- High-contrast mode — a theme variant with increased contrast ratios for all text, meeting WCAG AAA standards.
- Font scaling — Super+Plus/Minus scales all UI text from 80% to 200%. This applies globally, not per-application.
- Screen reader hooks — Nullkia exposes window titles, widget content, and notification text to screen readers via AT-SPI.