Module layout

Module layout 

Source
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§

LayoutContext
Context available during layout computation
LayoutResult
Result of layout computation
MinimalOptions
Options for minimal layout (no status bar, no panels)
SidebarOptions
Options for sidebar layout
SplitOptions
Options for split layout (two main areas)
StandardOptions
Options for the standard vertical layout
WidgetSizes
Pre-computed widget size information

Enums§

LayoutTemplate
Layout templates with customization options
SidebarPosition
Sidebar position
SidebarWidth
Sidebar width specification
SplitRatio
Split ratio specification

Traits§

LayoutProvider
Trait for custom layout providers

Type Aliases§

LayoutFn
Type alias for layout closure