fp-dotfiles-tui
Optional ratatui frontend for fp-dotfiles-manager.
This crate is a Cargo workspace member of the parent repository
(fp-dotfiles-manager). It never reimplements sync or chezmoi logic: every action
shells out to the CLI binary. Command names, summaries, categories, and help text
are defined once in the shared fp-dotfiles-catalog crate and consumed here so the
TUI menus cannot drift from fp-dotfiles-manager --help.
| Piece | Location |
|---|---|
| This package | tui/ (fp-dotfiles-tui) |
| Shared command catalog | catalog/ (fp-dotfiles-catalog) |
| CLI it drives | workspace root (fp-dotfiles-manager) |
| Build output | workspace target/ (same tree as the CLI) |
Features
- Category tabs: Daily · Tracking · Setup · Maintenance
- Split layout: command list + detail pane (exact CLI invocation preview)
- Argument prompt modal (simple quoted paths supported)
- Confirm dialog for destructive ops (
clean-history) - Scrollable output viewer for CLI stdout/stderr
- Interactive commands (
edit,cd,edit-lists) leave the alternate screen and use a real TTY - Theme: Catppuccin Mocha (see
src/theme.rs) - Size-oriented release profiles from the workspace root (
release-static+ optional UPX)
Layout (source)
tui/
├── Cargo.toml # workspace member; deps: crossterm, ratatui, fp-dotfiles-catalog
├── README.md
└── src/
├── main.rs # terminal setup, event loop, FP_DOTFILES_MANAGER resolution
├── app.rs # mode machine (menu / prompt / output / confirm / help)
├── commands.rs # re-exports catalog (Category, CommandDef, all_commands)
├── theme.rs # Catppuccin Mocha palette + style helpers
└── ui.rs # ratatui widgets / layout
There is no local justfile or Cargo.lock under tui/ — build from the
repository root so the workspace lockfile and target/ stay unified.
Requirements
- Rust toolchain (build from the workspace root)
fp-dotfiles-manageronPATH, or one of:FP_DOTFILES_MANAGER(preferred)DOTFILES_MANAGER_BIN(legacy alias)
- Optional:
just,upx(for the root release recipes)
Build & run (from repository root)
All recipes live in the root justfile. Binaries land next to the CLI:
# debug
# run (defaults FP_DOTFILES_MANAGER to target/debug/fp-dotfiles-manager)
# release (static LTO + UPX)
# install
Equivalent cargo invocations:
# point at a specific CLI binary
FP_DOTFILES_MANAGER=./target/debug/fp-dotfiles-manager \
GitLab CI builds this package with the rest of the workspace and publishes
target/release-static/fp-dotfiles-tui and target/release/fp-dotfiles-tui
alongside the CLI artifacts.
Keys
| Key | Action |
|---|---|
↑ ↓ / k j |
Move selection |
← → / h l / Tab / Shift-Tab |
Switch category |
Enter / Space |
Run selected command |
r |
Run selected (from menu) |
1–9 |
Jump to item |
? |
Toggle help |
q / Esc |
Quit (menu) or close modal / output |
Ctrl+C |
Force quit |
Output view: PgUp / PgDn / Home / End |
Scroll |
Theme
Colors follow Catppuccin Mocha:
| Role | Mocha token | Hex |
|---|---|---|
| Background | base | #1e1e2e |
| Surface | mantle | #181825 |
| Border | surface2 | #585b70 |
| Focus border / titles | lavender | #b4befe |
| Text | text | #cdd6f4 |
| Muted | overlay1 | #7f849c |
| Accent / selection marker | mauve | #cba6f7 |
| Keybinds | blue | #89b4fa |
| Success | green | #a6e3a1 |
| Warn | peach | #fab387 |
| Error | red | #f38ba8 |
| Highlight | surface0 | #313244 |
Semantic constants and style helpers live in src/theme.rs.