Skip to content

EXWM — Emacs X Window Manager

EXWM is a fully keyboard-driven tiling X window manager that runs inside Emacs. Each X window — a browser, a video player, a PDF viewer, a chat client — becomes an Emacs buffer; Emacs key-bindings drive window placement, focus, workspace switching, and inter-application navigation. Hybrid tiling and stacking layouts; dynamic workspaces; a single uniform key-binding namespace across every application visible on the desktop. The user’s entire computing environment lives inside one Emacs session.

For KN-86 this is the north-star reference for “keyboard-driven everything, one environment” — the most extreme single contemporary expression of the philosophy KN-86 inherits from its 31-key + TERM-key hardware constraint and its nEmacs REPL architecture.

  • One environment, one key-binding namespace. EXWM’s defining property is that every application shares Emacs’s key-binding world: C-x b switches buffers regardless of whether the buffer is a text file or a running browser. KN-86 has a structurally analogous opportunity: the firmware-internal key set (TERM, the 14 function keys, the numpad) is the deck-wide key namespace, and the loaded cart inherits it rather than replacing it. A cart should be able to override specific function keys for its own purposes, but the universal verbs (cf. promote-list item 15 — SAVE, LOOK, INVENTORY, SCORE on the TERM line) should be available in every cart, not redefined per cart.
  • Tiling + dynamic workspaces. Not a direct lift for KN-86 (the deck is single-cart-focused, not multi-window), but the conceptual workspace switch is the right model for cart context switching — when the operator swaps physical cartridges, the deck’s “workspace” changes accordingly. The Universal Deck State persistence (ADR-0011) is what makes this clean across swaps.
  • “Every application is a buffer.” EXWM treats X windows as Emacs buffers; the Emacs editing affordances (search, kill-ring, history, macros) compose over arbitrary applications. The nEmacs equivalent for KN-86 (ADR-0016) is the same idea at smaller scale: the cart’s content surface, the REPL, and the system panels are all buffers with shared editing semantics.
  • The discipline is “no mouse, ever.” EXWM users routinely report going months without touching a pointer. KN-86 doesn’t even have a pointer to optionally touch — same end state, harder constraint. The lesson: every action a user could conceivably want must have a keyboard path. There’s no “well, it’s faster with the mouse” backstop. Worth a quality-bar mention in docs/software/runtime/.
  • GPL note. EXWM is GPL v3. KN-86 doesn’t (and shouldn’t) vendor EXWM source. The reference here is architectural philosophy, not code.

No image downloaded — EXWM is captured as a philosophy/north-star reference.

  • Strong direct cite for ADR-0016’s prior-art section. The “everything is in Emacs, including a window manager” lineage is the direct ancestor of “everything is in nEmacs, including the cart-content surface.”
  • Cross-link webmacs.md for the keyboard-driven-browser companion. EXWM is the WM-level expression; webmacs is the per-application expression of the same philosophy.
  • Cross-link l123.md — l123’s slash-menu + mode indicator + F-key workflow is “Emacs philosophy applied to a single application”; EXWM is “Emacs philosophy applied to every application.” KN-86 sits between: l123-style discipline per surface, EXWM-style shared keymap across the whole device.
  • Worth scoping a “universal verb set” promote item explicitly building on EXWM’s shared-namespace lesson: the TERM-line verbs SAVE, LOOK, INVENTORY, SCORE (plus a small extension set) are deck-wide commitments, available in every cart, not redefinable per cart. Refines promote-list item 15.