Zentui TUI
Zentui is a bundled Starship-inspired statusline and Opencode-style TUI for Selesai. It gives five surfaces independent ownership and styling — the editor, user messages, thinking (experimental), the working line, and the footer — with an optional Starship-style statusline.
Bundled with Selesai
Loaded automatically with Selesai; no per-extension npm install is required.
Setup and prerequisites
- Bundled with Selesai and loaded automatically; no separate install is needed.
- Requires an interactive TUI session; it has no effect in headless mode.
- Editor, user-message, thinking, working-line, and selector-border surfaces each have an independent
enabledfield; the footer uses onestyle:native,starship, orhidden.
What it sets up
- Editor — Opencode, Opencode copy-friendly, Accent Rail, and Minimalist input treatments.
- User messages — framed, framed copy-friendly, compact, and labeled transcript messages.
- Thinking (Experimental) — optional private Rail, Tree, or Streaming renderers for Pi’s thinking, without owning the Working line.
- Working line — optional ownership of Pi’s complete in-progress row and settled turn summary.
- Footer — Pi’s native footer, a Starship-style statusline, or a hidden zero-row footer, with configurable segments and a compact footer format template.
- Registers the
/zentuicommand for live configuration and quick toggles.
What you can configure
Zentui configures independent editor, user-message, thinking, working-line, footer, segment, git, and extension surfaces from one zentui.json, with live /zentui pickers.
Configuration locations and precedence
- Zentui config
~/.selesai/agent/zentui.json
Single file written by /zentui; no project layer.
Settings
| Key / path | Type, default, and values | Description |
|---|---|---|
components.editor.style | string Default: opencode | Editor surface: opencode, opencode-copy-friendly, accent-rail, or minimalist. |
components.footer.style | string Default: native | Footer style: native, starship, or hidden. |
components.userMessages.style | string Default: framed | User-message style: framed, framed-copy-friendly, compact, or labeled. |
components.workingLine.enabled | boolean Default: true | Take over Pi's complete working-line row and settled turn summary. |
components.footer.styles.starship.pathDisplay.mode | string Default: basename | Starship footer path display: basename, full, or repository. |
components.thinkingSteps.enabled | boolean Default: false | Opt-in private thinking renderer (Rail, Tree, or Streaming); experimental and may break after Pi updates. |
components.thinkingSteps.mode | string Default: tree | Thinking mode: rail, tree, or streaming. |
Command, tool, and shortcut controls
| Key / path | Description |
|---|---|
/zentui | Open the live configuration picker; changes save to zentui.json. |
/zentui editor toggle | Toggle the editor surface without opening the picker. |
/zentui messages toggle | Toggle user-message framing without opening the picker. |
/zentui working-line | Configure working-line takeover and turn summary. |
/zentui format <template> | Set the compact footer format template. |
Source evidence
src/extensions/pi-zentui/extensions/zentui/config.ts
Run /zentui to configure Appearance, Editor, User messages, Thinking (Experimental), Working line, Footer, Segments, Git, and Extensions. Use Tab and Shift+Tab to switch sections; changes apply live and are saved to ~/.selesai/agent/zentui.json.
What you can do
- Toggle surfaces individually:
/zentui editor toggle,/zentui messages toggle,/zentui statusline toggle,/zentui viewport-indicators toggle. - Configure the working line takeover with
/zentui working-line. - Set the compact footer format template:
/zentui format "$cwd on branch $git_branch$git_status using $runtime $fill $context". - Switch the footer style between
native,starship, andhiddenwithout coupling it to other components.
Commands, tools, and shortcuts
/zentui— open the live configuration picker./zentui <surface> toggle— flip one surface without opening the picker./zentui format <template>— set the compact footer format.
Limits and safety
-
Only interactive TUI sessions render Zentui surfaces.
-
Thinking (Experimental) is disabled by default and may break after Pi updates. Active Streaming can switch live to Rail or Tree, and Rail and Tree can switch live between each other; first enable, re-enable after a live disable, and entering Streaming from a structural mode require a Pi restart. Failures fall back to complete native thinking.
-
Only interactive TUI sessions render Zentui surfaces.
-
The Starship footer path display defaults to
basename; opt intorepositorymode to omit the repository directory itself. -
Configuration is a single user-level file; there is no project layer.