pub struct TerminalCapabilities {Show 17 fields
pub true_color: bool,
pub colors_256: bool,
pub unicode_box_drawing: bool,
pub unicode_emoji: bool,
pub double_width: bool,
pub sync_output: bool,
pub osc8_hyperlinks: bool,
pub scroll_region: bool,
pub in_tmux: bool,
pub in_screen: bool,
pub in_zellij: bool,
pub in_wezterm_mux: bool,
pub kitty_keyboard: bool,
pub focus_events: bool,
pub bracketed_paste: bool,
pub mouse_sgr: bool,
pub osc52_clipboard: bool,
/* private fields */
}Expand description
Fields§
§true_color: boolTrue color (24-bit RGB) support.
colors_256: bool256-color palette support.
unicode_box_drawing: boolUnicode box-drawing support.
unicode_emoji: boolEmoji glyph support.
double_width: boolDouble-width glyph support (CJK/emoji).
sync_output: boolSynchronized output (DEC mode 2026) to reduce flicker.
osc8_hyperlinks: boolOSC 8 hyperlinks support.
scroll_region: boolScroll region support (DECSTBM).
in_tmux: boolRunning inside tmux.
in_screen: boolRunning inside GNU screen.
in_zellij: boolRunning inside Zellij.
in_wezterm_mux: boolRunning inside a WezTerm mux-served session.
Detected via WEZTERM_UNIX_SOCKET and WEZTERM_PANE, which WezTerm
exports for pane processes and mux-attached clients.
kitty_keyboard: boolKitty keyboard protocol support.
focus_events: boolFocus event reporting support.
bracketed_paste: boolBracketed paste mode support.
mouse_sgr: boolSGR mouse protocol support.
osc52_clipboard: boolOSC 52 clipboard support (best-effort, security restricted in some terminals).
Implementations§
Source§impl TerminalCapabilities
impl TerminalCapabilities
Sourcepub fn with_overrides() -> TerminalCapabilities
pub fn with_overrides() -> TerminalCapabilities
Detect capabilities and apply any active thread-local overrides.
This is the recommended way to get capabilities in code that may be running under test with overrides.
Sourcepub fn with_overrides_from(
self,
base: TerminalCapabilities,
) -> TerminalCapabilities
pub fn with_overrides_from( self, base: TerminalCapabilities, ) -> TerminalCapabilities
Apply overrides to these capabilities.
Source§impl TerminalCapabilities
impl TerminalCapabilities
Sourcepub const fn profile(&self) -> TerminalProfile
pub const fn profile(&self) -> TerminalProfile
Get the profile identifier for this capability set.
Sourcepub fn profile_name(&self) -> Option<&'static str>
pub fn profile_name(&self) -> Option<&'static str>
Get the profile name as a string.
Returns None for detected capabilities (use profile()
to distinguish between profiles).
Sourcepub fn from_profile(profile: TerminalProfile) -> TerminalCapabilities
pub fn from_profile(profile: TerminalProfile) -> TerminalCapabilities
Create capabilities from a profile identifier.
Sourcepub const fn modern() -> TerminalCapabilities
pub const fn modern() -> TerminalCapabilities
Modern terminal with all features enabled.
Represents terminals like WezTerm, Alacritty, Ghostty, Kitty, iTerm2. All advanced features are enabled.
Sourcepub const fn xterm_256color() -> TerminalCapabilities
pub const fn xterm_256color() -> TerminalCapabilities
xterm with 256-color support.
Standard xterm-256color profile with common features. No true color, no sync output, no hyperlinks.
Sourcepub const fn xterm() -> TerminalCapabilities
pub const fn xterm() -> TerminalCapabilities
Basic xterm with 16 colors only.
Minimal xterm without 256-color or advanced features.
Sourcepub const fn vt100() -> TerminalCapabilities
pub const fn vt100() -> TerminalCapabilities
VT100 terminal (minimal capabilities).
Classic VT100 with basic cursor control, no colors.
Sourcepub const fn dumb() -> TerminalCapabilities
pub const fn dumb() -> TerminalCapabilities
Dumb terminal with no capabilities.
Alias for basic() with the Dumb profile identifier.
Sourcepub const fn screen() -> TerminalCapabilities
pub const fn screen() -> TerminalCapabilities
GNU Screen multiplexer.
Screen with 256 colors but multiplexer-safe settings. Sync output and scroll region disabled for passthrough safety.
Sourcepub const fn tmux() -> TerminalCapabilities
pub const fn tmux() -> TerminalCapabilities
tmux multiplexer.
tmux with 256 colors and multiplexer detection. Advanced features disabled for passthrough safety.
Sourcepub const fn zellij() -> TerminalCapabilities
pub const fn zellij() -> TerminalCapabilities
Zellij multiplexer.
Zellij with true color (it has better passthrough than tmux/screen).
Sourcepub const fn windows_console() -> TerminalCapabilities
pub const fn windows_console() -> TerminalCapabilities
Windows Console Host.
Windows Terminal with good color support but some quirks.
Sourcepub const fn kitty() -> TerminalCapabilities
pub const fn kitty() -> TerminalCapabilities
Kitty terminal.
Kitty with full feature set including keyboard protocol.
Sourcepub const fn linux_console() -> TerminalCapabilities
pub const fn linux_console() -> TerminalCapabilities
Linux console (framebuffer console).
Linux console with no colors and basic features.
Sourcepub fn builder() -> CapabilityProfileBuilder
pub fn builder() -> CapabilityProfileBuilder
Create a builder for custom capability profiles.
Start with all capabilities disabled and enable what you need.
Source§impl TerminalCapabilities
impl TerminalCapabilities
Sourcepub fn detect() -> TerminalCapabilities
pub fn detect() -> TerminalCapabilities
Detect terminal capabilities from the environment.
This examines environment variables to determine what features the current terminal supports. When in doubt, capabilities are disabled for safety.
Sourcepub const fn basic() -> TerminalCapabilities
pub const fn basic() -> TerminalCapabilities
Create a minimal fallback capability set.
This is safe to use on any terminal, including dumb terminals. All advanced features are disabled.
Sourcepub const fn in_any_mux(&self) -> bool
pub const fn in_any_mux(&self) -> bool
Check if running inside any terminal multiplexer.
This includes tmux, GNU screen, Zellij, and WezTerm mux.
Sourcepub const fn color_depth(&self) -> &'static str
pub const fn color_depth(&self) -> &'static str
Get the maximum color depth as a string identifier.
Sourcepub const fn use_sync_output(&self) -> bool
pub const fn use_sync_output(&self) -> bool
Whether synchronized output (DEC 2026) should be used.
Disabled in multiplexers because passthrough is unreliable for mode-setting sequences. Also disabled for all WezTerm sessions as a safety fallback due observed DEC 2026 instability in mux workflows.
Sourcepub const fn use_scroll_region(&self) -> bool
pub const fn use_scroll_region(&self) -> bool
Whether scroll-region optimization (DECSTBM) is safe to use.
Disabled in multiplexers due to inconsistent scroll margin handling across tmux/screen/zellij and WezTerm mux sessions.
Sourcepub const fn use_hyperlinks(&self) -> bool
pub const fn use_hyperlinks(&self) -> bool
Whether OSC 8 hyperlinks should be emitted.
Disabled in mux environments because passthrough for OSC sequences is fragile and behavior varies by mux implementation.
Sourcepub const fn use_clipboard(&self) -> bool
pub const fn use_clipboard(&self) -> bool
Whether OSC 52 clipboard access should be used.
Gated by mux detection in detect(), and re-checked here to keep
policy behavior consistent for overridden/custom capability sets.
Sourcepub const fn needs_passthrough_wrap(&self) -> bool
pub const fn needs_passthrough_wrap(&self) -> bool
Whether the passthrough wrapping is needed for this environment.
Returns true if running in tmux or screen, which require
DCS passthrough for escape sequences to reach the inner terminal.
Zellij handles passthrough natively and doesn’t need wrapping.
Trait Implementations§
Source§impl Clone for TerminalCapabilities
impl Clone for TerminalCapabilities
Source§fn clone(&self) -> TerminalCapabilities
fn clone(&self) -> TerminalCapabilities
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more