Open sourceRust · X11Daily-driver dogfooding

nobox

A small, predictable, Openbox-inspired window manager that stays out of your way. No desktop environment, no compositor requirement, and no toolkit in the core.

123
nobox · x1114:32
nobox — terminal
$ nobox doctor
display    :2      ok
outputs    1       ok
config     strict  ok
$ DISPLAY=:2 nobox
keys
Super + dragmove
Alt + Tabcycle
Super + →workspace

Old-school restraint. Modern implementation.

Openbox is the behavioral reference, not a dependency. nobox recreates the dependable stacking-window-manager experience with a deliberately separated Rust architecture and regression-by-regression compatibility evidence.

Openbox-class window management

Reparenting frames, titlebars, move and resize, edge snapping, focus handling, and crash-safe client adoption.

Native desktop interoperability

ICCCM and EWMH behavior for pagers, panels, struts, urgency, window types, fullscreen, shading, and stacking.

One strict configuration

Bindings, menus, workspaces, themes, and application rules live in one validated file. Typos fail loudly.

Multi-monitor aware

RandR-aware placement, maximize, fullscreen, and work areas recover safely when an output disappears.

Menus without a toolkit

Nested menus, XDG application discovery, live window and workspace lists, and bounded command-generated menus.

Safe Rust throughout

The core stays toolkit-free, protocol policy stays separate from X11, and the workspace contains no unsafe Rust.

Automation gets a seat. It does not get the keys.

nobox can expose structured desktop state, a trustworthy event stream, window-addressed input, and consented capture to an AI agent harness. The boundary is part of the window manager, so control remains visible and enforceable.

Off by default

The person at the keyboard wins by construction.

Access is granted per executable. Windows can be hidden from agents entirely, agent activity is drawn by the window manager, and a physical kill chord always outranks synthetic input.

PER-EXECUTABLEGrant only the harness you intend to use.
VISIBLE STATEWM-drawn indicators cannot be hidden by the agent.
HUMAN OVERRIDEPhysical input and the kill chord take priority.

Start inside a nested X server.

The X11 baseline is feature-complete, but the implementation is new. Build it, run the checks, and learn its behavior in Xnest before replacing a real session.

quick-start.shread-only first
git clone https://github.com/kekePower/nobox.git
cd nobox
cmake --preset dev
cmake --build --preset dev
cmake --build --preset test

# Run a disposable nested desktop
Xnest :2 -geometry 1280x800 -ac &
DISPLAY=:2 ./build/dev/cargo/debug/nobox doctor
DISPLAY=:2 ./build/dev/cargo/debug/nobox
DISPLAY=:2 xterm &

Policy is not X11.

Protocol-neutral behavior lives apart from the X11 backend, leaving room for a future native Wayland compositor without turning X11 into the internal model. Optional settings, panel, session, and MCP companions stay separate processes.

nobox-core

Protocol-neutral focus, stacking, workspaces, geometry, and work areas.

nobox-x11

X11 ownership, event handling, client management, and EWMH plumbing.

nobox-config

Strict TOML models with validated, format-preserving edits.

nobox-desktop

Bounded XDG desktop-entry discovery and safe application launching.

The evidence is part of the project.

Compatibility claims, acceptance boundaries, configuration behavior, and agent access are documented alongside the implementation.

GPL-2.0-only. Openbox behavior is studied and tested; the Rust implementation is written independently and contains no unsafe code.

Explore nobox