# Endo Shell — Prompt Design Gallery

10 prompt styles for a customizable shell · truecolor · unicode · fixed-width grid

1 — Minimal Arrow Compact
Single character prompt. Zero noise. Directory via window title / OSC 7.
❯ ls -la drwxr-xr-x 12 user user 4096 Feb 13 14:22 . -rw-r--r-- 1 user user 1847 Feb 13 14:20 CLAUDE.md ❯
2 — Lambda Clean Compact
Functional programming nod with λ symbol. Tilde-contracted path. Exit status on error only.
~/projects/endo λ cargo build 2>/dev/null Compiling endo v0.1.0 ~/projects/endo λ false ~/projects/endo [1] λ
3 — OpenCode Bar Styled
Vertical left accent bar inspired by code editors. Current Endo default style.
▎ ~/projects/endo on  master ▎ git status On branch master Changes not staged for commit: modified: src/shell/SyntaxHighlighter.cpp ▎ ~/projects/endo on  master ▎
4 — Powerline Segments Rich
Angled powerline segments with git branch, directory, and execution context.
 endo   master   2 ⤫  ❯ cmake --build --preset clang-debug [100%] Built target endo  endo   master  ❯
5 — Transient Prompt Info-dense
Full prompt shown only on active line. Previous prompts collapse to a simple arrow + duration badge. Reduces visual clutter in scrollback.
❯ ls src/ 2.1ms ❯ cmake --build --preset clang-debug 4.3s ❯ false ✗ 1 0.8ms ╭─ ~/projects/endo on master [2⤫] ╰─ ❯
6 — Dashboard (Left + Right Prompt) Info-dense
Left: path + git. Right-aligned: clock, battery, exec time. Demonstrates right-prompt capability.
 ~/projects/endo  master  87% │ 14:22:08 ❯ ctest --preset=clang-debug 100% tests passed, 0 tests failed  ~/projects/endo  master ⏱ 3.2s │  87% │ 14:22:11 ❯
7 — Boxed Module Rich
Box-drawing characters create structured info blocks. Each block is a "module" that can be enabled/disabled.
┌─╮────────────────────────────────────────────────────── │  ~/projects/endo  master ⤫2 ✚1 cmake │ C++23 │ clang-18 └─────────────────────────────────────────────────────── ❯❯ cmake --build --preset clang-debug [100%] Built target endo ┌─╮────────────────────────────────────────────────────── │  ~/projects/endo  master ⤫2 ✚1 ✓ 4.3s └─────────────────────────────────────────────────────── ❯❯
8 — Gradient Glow Rich
Truecolor gradient on the path and arrow. Demonstrates per-character color interpolation. Visually distinctive.
~/p r o j e c t s/e n d o ➤➤➤ git log --oneline -3 c20a91d docs: mark Phase 6.4.3 Table Rendering complete ad31c1c lang: route bare ps/ls/jobs as structured F# expressions af6f416 table: add terminal-width-aware column shrinking ~/p r o j e c t s/e n d o ➤➤➤
9 — Context Adaptive Info-dense
Prompt morphs based on context: git status colors the branch, error changes the arrow, SSH adds host, toolchain detected from project. Shows only what matters.
┌ normal ─ clean repo endo  master ❯ echo "all clean" all clean ┌ dirty working tree ─ branch turns yellow endo  master ⤫2 ❯ make test FAIL: 2 tests failed ┌ command failed ─ arrow turns red, exit code shown endo  master ⤫2 ❯[2] vi src/main.cpp ┌ SSH session ─ hostname prepended automatically 󰌘 devbox:endo  master ❯ uptime 14:22:08 up 42 days, 3:17, 2 users ┌ long-running command ─ duration badge appears endo  master ⏱12.4s ❯
10 — Endo Signature Rich
Purpose-built for Endo: functional pipe symbol, F# mode indicator, structured output badge, two-line with rounded corners. The "brand" prompt.
╭─ ~/projects/endo  master │ 𝑓# │ ▷ ps ls jobs ╰─ |> ps |> filter (fun p -> p.cpu > 5.0) |> each println PID CPU% MEM% COMMAND 1234 12.3 4.1 firefox 5678 8.7 2.3 code ╭─ ~/projects/endo  master │ 𝑓# │ ✓ ⏱1.2s ╰─ |>

### Design Notes & Customization Engine Implications

- Prompt Sections as Modules: Each info element (path, git, duration, clock, battery, exit status) is an independent `PromptModule` that can be enabled/disabled/reordered.
- Conditional Visibility: Modules like exit status (#2, #9), duration (#5, #6, #9, #10), SSH hostname (#9), and battery (#6) only render when their condition is met (error, >threshold, SSH session, on battery).
- Transient Prompt (#5): After command execution, the full prompt collapses to a minimal form in scrollback. This requires re-rendering the previous prompt line.
- Right Prompt (#6): Content right-aligned on the info line. Requires knowing terminal width and padding calculation.
- Gradient Support (#8): Per-character truecolor interpolation between two RGB endpoints. Engine needs a `gradient(start_color, end_color, text)` primitive.
- Layout Models: Single-line (#1, #2, #9), two-line (#3, #5, #10), boxed (#7), and powerline (#4). The engine should support a `layout` property.
- Separator Glyphs: Powerline (#4) uses ``/``. Box-drawing (#5, #7, #10) uses `╭╰─│`. Bar (#3) uses `▎`. These are configurable separator styles.
- Color Semantics: Colors should be theme-aware tokens (`prompt.path`, `prompt.git.clean`, `prompt.git.dirty`, `prompt.error`) not hardcoded RGB, enabling theme switching.
- Suggested Config Format (YAML):

      prompt:
        layout: two-line         # single-line | two-line | boxed
        separator: rounded       # arrow | powerline | rounded | bar | none
        modules:
          line1: [path, git, duration?, exit_status?]
          line2: [indicator]
        right_prompt: [clock, battery?]
        transient: minimal       # off | minimal | arrow
        indicator: "|>"          # character(s) before cursor
        theme: tokyo-night       # color theme reference

- Module Examples: `path` (tilde-contracted CWD, depth limit), `git` (branch, dirty/staged counts), `duration` (last cmd time, threshold), `exit_status` (nonzero only), `clock` (HH:MM:SS), `battery` (icon + percentage), `hostname` (SSH only), `toolchain` (detected from project), `fsharp_mode` (Endo-specific indicator).