Skip to content

webmacs

webmacs is a keyboard-driven web browser modeled on Conkeror (the historical Mozilla-based Emacs-keybinding browser, now defunct). Every browser action is a key chord: navigation, tabs, link selection (link “hints” labeled with single characters; the user types the label to follow the link), back/forward, text editing inside web forms (with full Emacs-style movement: C-a start of line, C-e end, C-w kill-region, etc.). The browser is highly customizable in Python — user configuration is Python code, plugins are Python modules — and ships with a fast integrated ad-blocker and a “live documentation” facility that surfaces the docstring of whatever command the user is about to invoke.

For KN-86 this is the canonical reference for “Emacs keybindings applied to a domain that isn’t editing text.” The deck’s cart-content surface is exactly that domain — a non-text-editing interactive application where every action should still feel like Emacs.

  • Emacs keybindings inside non-text contexts. webmacs proves that the Emacs idiom (C-a, C-e, C-n, C-p, C-w, M-x for command dispatch, etc.) can drive a fully interactive non-text application coherently. KN-86’s nEmacs surface (ADR-0016) inherits this: the same key chords that work in a text-editing context should work in a cart’s interactive context, with the cart binding the chords to its own verbs while preserving the spatial intuitions of Emacs movement.
  • Link hints as a navigation idiom. webmacs labels every link on a page with a single character; the user types the label to follow the link. For KN-86 the equivalent is single-character labels on every actionable item in the current surface — mission-board contracts labeled az, cart-manifest entries labeled az, dispatch transmissions labeled az. The user types the label to act on the item. Combined with the Xiki expansion model, this gives a TERM-key surface that’s both typeable (verbs) and selectable (labels) without ever needing a pointer.
  • Python as the customization language. webmacs’s “configure with Python” decision is the right move because Python is what the audience already knows. For KN-86 the equivalent is KEC Lisp as the configuration / scripting language (ADR-0001) — same posture, language chosen for the audience (cart authors, who will know enough Lisp to make Fe usable). webmacs is the structural precedent.
  • Live documentation surfaces docstrings. When the user starts typing a command, webmacs shows the docstring of the command being completed. For KN-86 the same affordance — surfacing the help text of the command being completed at the TERM line — is the right pairing with the Perkins ? overlay and l123’s F1 context help.
  • Integrated ad-blocker, fast. Not relevant to KN-86 (no web context), but worth noting: a small, single-purpose service running alongside the main application is a clean architectural pattern. KN-86’s analog is the Pi Pico 2 coprocessor (ADR-0017) — a small dedicated service running alongside the main runtime, handling a focused job (PSG + OLED). Conceptual parallel only.

No image downloaded.

  • Cross-link exwm.md — EXWM is “Emacs WM-level”; webmacs is “Emacs per-application.” Together they bracket the philosophy.
  • Cross-link xiki.md — for the expandable-tree interaction model that pairs with link-hint selection.
  • Cross-link history.el.md — webmacs has its own back/forward; KN-86’s REPL surface should compose webmacs’s hint-driven selection with history.el-style non-destructive history.
  • The link-hint single-character-label pattern is the single most-borrowable specific affordance. Promote: every actionable item on every KN-86 surface gets a single-character label; the user types the label to act. Add to the promote-to-spec list.