Expand description
Layout system for TUI widgets
This module provides a flexible layout system that allows agents to customize how widgets are arranged in the terminal UI.
§Layout Templates
The easiest way to define a layout is using a template:
ⓘ
// Standard layout (chat + input + status bar)
core.set_layout(LayoutTemplate::standard());
// With sidebar
core.set_layout(LayoutTemplate::with_sidebar("file_browser", 40));
// Minimal (no status bar)
core.set_layout(LayoutTemplate::minimal());§Custom Layouts
For full control, use a closure or implement LayoutProvider:
ⓘ
core.set_layout(LayoutTemplate::custom_fn(|area, ctx, sizes| {
// Use ratatui Layout directly
let chunks = Layout::default()
.direction(Direction::Vertical)
.constraints([Constraint::Min(1), Constraint::Length(5)])
.split(area);
LayoutResult {
widget_areas: [(widget_ids::CHAT_VIEW, chunks[0])].into(),
..Default::default()
}
}));Modules§
- helpers
- Helper functions for building custom layouts with ratatui
Structs§
- Layout
Context - Context available during layout computation
- Layout
Result - Result of layout computation
- Minimal
Options - Options for minimal layout (no status bar, no panels)
- Sidebar
Options - Options for sidebar layout
- Split
Options - Options for split layout (two main areas)
- Standard
Options - Options for the standard vertical layout
- Widget
Sizes - Pre-computed widget size information
Enums§
- Layout
Template - Layout templates with customization options
- Sidebar
Position - Sidebar position
- Sidebar
Width - Sidebar width specification
- Split
Ratio - Split ratio specification
Traits§
- Layout
Provider - Trait for custom layout providers
Type Aliases§
- Layout
Fn - Type alias for layout closure