Expand description
Coordination runtime for keyboard-driven, page-based TUI applications.
The crate is intentionally domain-agnostic: applications own their action
enum, view/page enum, and state. The library owns the coordination model —
input sequences, command resolution, focus, overlays, navigation, buffers,
and panes — and applies the TuiEffect values an application returns.
TuiPages is the primary entry point. The submodules (input,
command, focus, navigation) expose the same primitives for
advanced callers that want to wire the flow themselves.
Re-exports§
pub use dialog::DialogButtonRenderer;pub use dialog::DialogData;pub use dialog::DialogKey;pub use dialog::DialogPurposeClass;pub use dialog::DialogPurposeStyle;pub use dialog::DialogResult;pub use dialog::DialogTheme;pub use dialog::render_dialog;pub use picker::PickerData;pub use picker::PickerEntry;pub use picker::PickerField;pub use picker::PickerFieldWeights;pub use picker::PickerHead;pub use picker::PickerHeadColumn;pub use picker::PickerLayout;pub use picker::PickerScope;pub use picker::PickerTheme;pub use picker::centered_picker_area;pub use picker::render_picker;pub use picker::render_picker_with_custom_preview;pub use theme::Theme;pub use theme::ThemeError;pub use theme::ThemeLoader;pub use theme::ThemeManager;pub use theme::ThemeRole;pub use theme::ThemeStyles;pub use crate::canvas::CanvasDispatchOutcome;pub use crate::canvas::CanvasKeyDispatchOutcome;pub use crate::canvas::CanvasTextWidgetOutcome;pub use crate::canvas::accepts_text_input as canvas_accepts_text_input;pub use crate::canvas::dispatch_action as dispatch_canvas_action;pub use crate::canvas::dispatch_key_event as dispatch_canvas_key_event;pub use crate::canvas::dispatch_text_area_key as dispatch_canvas_text_area_key;pub use crate::canvas::dispatch_text_input_key as dispatch_canvas_text_input_key;pub use crate::canvas::focus_intent_for_boundary as canvas_focus_intent_for_boundary;pub use crate::canvas::mode_for_app_mode as canvas_mode_for_app_mode;pub use crate::canvas::modes_for_app_mode as canvas_modes_for_app_mode;pub use crate::canvas::render_canvas_with_suggestions;pub use crate::canvas::render_canvas_with_suggestions_default;pub use crate::canvas::render_canvas_with_suggestions_default_options;pub use crate::canvas::render_canvas_with_suggestions_with_options;pub use crate::canvas::text_chord_to_action as canvas_text_chord_to_action;pub use crate::canvas::text_chord_to_canvas_action;pub use crate::canvas::update_cursor_style_for_editor;pub use crate::canvas::update_cursor_style_for_mode;pub use crate::canvas::analyze_canvas_overlaps;pub use crate::canvas::canvas_action_name;pub use crate::canvas::canvas_bindable_actions;pub use crate::canvas::canvas_default_binding_catalog;pub use crate::canvas::canvas_suggestion_default_bindings;pub use command::CommandHint;pub use command::CommandRegistry;pub use command::CommandResolver;pub use command::CommandResponse;pub use focus::FocusController;pub use focus::FocusIntent;pub use focus::FocusManager;pub use focus::FocusQuery;pub use focus::FocusTarget;pub use focus::FocusWrap;pub use focus::Focusable;pub use focus::OverlayFocus;pub use focus::PageFocusBuilder;pub use input::BindableActionInfo;pub use input::BindingAnalysis;pub use input::BindingCatalog;pub use input::BindingConflict;pub use input::BindingInfo;pub use input::BindingLayer;pub use input::BindingSource;pub use input::CanvasRoutingPrecedence;pub use input::ChordSequenceTracker;pub use input::InputHint;pub use input::InputPipeline;pub use input::InputRegistry;pub use input::KeyChord;pub use input::KeyMap;pub use input::ParseKeyError;pub use input::PipelineResponse;pub use input::analyze_keymap_bindings;pub use input::parse_binding;pub use input::parse_key;pub use input::try_parse_binding;pub use input::try_parse_key;pub use keybindings::ActionRegistry;pub use keybindings::BindingNotice;pub use keybindings::BindingStore;pub use keybindings::KeybindingConfig;pub use keybindings::KeybindingConfigError;pub use keybindings::KeybindingReport;pub use keybindings::VimAction;pub use keybindings::bind_builtin_general_defaults;pub use keybindings::bind_builtin_global_defaults;pub use keybindings::bind_emacs_general_defaults;pub use keybindings::bind_emacs_global_defaults;pub use keybindings::bind_helix_general_defaults;pub use keybindings::bind_helix_global_defaults;pub use keybindings::bind_vim_general_defaults;pub use keybindings::bind_vim_global_defaults;pub use keybindings::emacs_preset_toml;pub use keybindings::helix_preset_toml;pub use keybindings::try_standard_vim_action;pub use keybindings::vim_action_outcome;pub use keybindings::vim_preset_toml;pub use navigation::BufferState;pub use navigation::PaneId;pub use navigation::PaneSession;pub use navigation::PaneSplit;pub use navigation::ViewBuffer;pub use navigation::WorkspaceState;pub use runtime::CommandLineAreas;pub use runtime::ActionContext;pub use runtime::ActionOutcome;pub use runtime::InputLayerContext;pub use runtime::ModeId;pub use runtime::NoCanvasHooks;pub use runtime::PageFn;pub use runtime::PageProvider;pub use runtime::PageSpec;pub use runtime::RuntimeContext;pub use runtime::TuiActionHandler;pub use runtime::TuiApp;pub use runtime::TuiEffect;pub use runtime::TuiPages;pub use runtime::TuiPagesBuilder;pub use runtime::TuiPagesError;pub use runtime::TuiPagesOutput;pub use runtime::TuiPagesResult;pub use runtime::TuiPagesStatus;pub use runtime::modes;pub use runtime::CanvasHooks;pub use terminal::TerminalGuard;pub use terminal::enter as enter_terminal;
Modules§
- canvas
- Integration helpers for using the
canvascrate withtui-pages. - command
- dialog
- Built-in modal dialog system (feature =
tui). - focus
- input
- keybindings
- Editor-style default keybinding presets (Vim, Emacs, Helix, …).
- navigation
- picker
- Built-in fuzzy picker (feature =
tui). - prelude
- Everything a typical application needs in one glob import.
- runtime
- terminal
- Panic-safe terminal lifecycle.
- theme
- Helix-compatible theme loader.
Macros§
Enums§
- Canvas
Action - All available canvas actions.
- Canvas
Boundary Exit - Boundary reached while moving inside the canvas.