Files
ghostty-rs/crates/ghostty-inspector/src/lib.rs
T
ddidderr d1a5e55198 feat(inspector): port the terminal inspector
Ports ZIG/src/inspector (the Dear ImGui terminal inspector) as the
ghostty-inspector crate using dear-imgui-rs + dear-imgui-glow (imgui-rs
lacks a safe docking API): screen, modes, keyboard events, terminal IO
/ VT sequence log with filtering, cell inspector with picking, page
list, renderer and size/font info, with Ghostty's docking layout. The
crate denies unsafe except a single dock.rs module wrapping DockBuilder.

GTK: imgui_widget, inspector_widget and inspector_window classes with
their blueprints replace the former no-op; ctrl+shift+i toggles the
inspector window.

Core: activate/deactivate hooks, key event and mouse recording, and VT
stream recording in termio while an inspector is active, as in Zig;
overlay features reach the renderer through an InspectorHook on the
render state. The debug input replay hook gained inspector-screenshot/
click/scroll steps used to verify all tabs in the real app.

Deviations: font size scales with the display scale instead of Zig's
fixed 16*2; pop-out dock splits apply one frame later; DCS/APC
descriptions are approximated.

Test Plan:
- cargo test -p ghostty-inspector (15 incl. headless full-UI draw)
- cargo test -p ghostty-core --test e2e_inspector (4)
2026-10-12 04:39:14 +02:00

19 lines
605 B
Rust

//! The terminal inspector (ZIG/src/inspector/*).
//!
//! The inspector is a development tool to debug the terminal, similar to a
//! browser's developer tools. The UI is built with Dear ImGui
//! ([`dear_imgui_rs`]); the apprt owns the ImGui context, feeds input events
//! and renders the draw data. This crate only draws the widgets and records
//! the events (keyboard, VT stream) that the widgets display.
pub use dear_imgui_rs as imgui;
mod dock;
mod inspector;
pub mod keys;
pub mod units;
pub mod widgets;
pub use inspector::{Inspector, Shared, setup};
pub use widgets::key::Event as KeyEvent;