GUIDE · 08

Architecture

A tour of the focused C++ modules and their ownership boundaries.

Core model

  • App — CLI state, input loop, modes, and action dispatch
  • Ui and Terminal — ncurses rendering and RAII terminal lifecycle
  • Manager — tabs, clipboard, configuration, and task coordination
  • Tab — directory listing, cursor, selection, and navigation history

Focused services

  • filesystem — metadata, sorting, copy/move/remove, and trash
  • config, keymap, theme — validated user customization
  • preview — safe text, directory, binary, and metadata previews
  • search — fuzzy matching and recursive filename traversal
  • task — owned worker threads with progress and cancellation state

Repository layout

include/zari/   Module interfaces
src/            Implementations
tests/          Non-TUI tests
themes/         Built-in presets
packaging/      Debian and Arch metadata
docs/wiki/      Repository wiki
site/           Next.js documentation site

Design constraints

Zari uses no global mutable application state, raw owning pointers, plugin runtime, or shell interpolation for filesystem operations. The project deliberately favors direct C++ and POSIX APIs.