Skip to main content

Config

Struct Config 

Source
pub struct Config {
Show 329 fields pub cols: usize, pub rows: usize, pub font_size: f32, pub font_family: String, pub font_family_bold: Option<String>, pub font_family_italic: Option<String>, pub font_family_bold_italic: Option<String>, pub font_ranges: Vec<FontRange>, pub line_spacing: f32, pub char_spacing: f32, pub enable_text_shaping: bool, pub enable_ligatures: bool, pub enable_kerning: bool, pub font_antialias: bool, pub font_hinting: bool, pub font_thin_strokes: ThinStrokesMode, pub minimum_contrast: f32, pub window_title: String, pub allow_title_change: bool, pub max_fps: u32, pub vsync_mode: VsyncMode, pub power_preference: PowerPreference, pub reduce_flicker: bool, pub reduce_flicker_delay_ms: u32, pub maximize_throughput: bool, pub throughput_render_interval_ms: u32, pub window_padding: f32, pub hide_window_padding_on_split: bool, pub window_opacity: f32, pub window_always_on_top: bool, pub window_decorations: bool, pub window_type: WindowType, pub target_monitor: Option<usize>, pub target_space: Option<u32>, pub lock_window_size: bool, pub show_window_number: bool, pub transparency_affects_only_default_background: bool, pub keep_text_opaque: bool, pub blur_enabled: bool, pub blur_radius: u32, pub background_image: Option<String>, pub background_image_enabled: bool, pub background_image_mode: BackgroundImageMode, pub background_image_opacity: f32, pub image_scaling_mode: ImageScalingMode, pub image_preserve_aspect_ratio: bool, pub background_mode: BackgroundMode, pub pane_backgrounds: Vec<PaneBackgroundConfig>, pub background_color: [u8; 3], pub download_save_location: DownloadSaveLocation, pub last_download_directory: Option<String>, pub custom_shader: Option<String>, pub custom_shader_enabled: bool, pub custom_shader_animation: bool, pub custom_shader_animation_speed: f32, pub custom_shader_text_opacity: f32, pub custom_shader_full_content: bool, pub custom_shader_brightness: f32, pub custom_shader_channel0: Option<String>, pub custom_shader_channel1: Option<String>, pub custom_shader_channel2: Option<String>, pub custom_shader_channel3: Option<String>, pub custom_shader_cubemap: Option<String>, pub custom_shader_cubemap_enabled: bool, pub custom_shader_use_background_as_channel0: bool, pub cursor_shader: Option<String>, pub cursor_shader_enabled: bool, pub cursor_shader_animation: bool, pub cursor_shader_animation_speed: f32, pub cursor_shader_color: [u8; 3], pub cursor_shader_trail_duration: f32, pub cursor_shader_glow_radius: f32, pub cursor_shader_glow_intensity: f32, pub cursor_shader_hides_cursor: bool, pub cursor_shader_disable_in_alt_screen: bool, pub left_option_key_mode: OptionKeyMode, pub right_option_key_mode: OptionKeyMode, pub modifier_remapping: ModifierRemapping, pub use_physical_keys: bool, pub auto_copy_selection: bool, pub copy_trailing_newline: bool, pub middle_click_paste: bool, pub paste_delay_ms: u64, pub dropped_file_quote_style: DroppedFileQuoteStyle, pub mouse_scroll_speed: f32, pub mouse_double_click_threshold: u64, pub mouse_triple_click_threshold: u64, pub option_click_moves_cursor: bool, pub focus_follows_mouse: bool, pub report_horizontal_scroll: bool, pub word_characters: String, pub smart_selection_enabled: bool, pub smart_selection_rules: Vec<SmartSelectionRule>, pub copy_mode_enabled: bool, pub copy_mode_auto_exit_on_yank: bool, pub copy_mode_show_status: bool, pub scrollback_lines: usize, pub unicode_version: UnicodeVersion, pub ambiguous_width: AmbiguousWidth, pub normalization_form: NormalizationForm, pub cursor_blink: bool, pub cursor_blink_interval: u64, pub cursor_style: CursorStyle, pub cursor_color: [u8; 3], pub cursor_text_color: Option<[u8; 3]>, pub lock_cursor_visibility: bool, pub lock_cursor_style: bool, pub lock_cursor_blink: bool, pub cursor_guide_enabled: bool, pub cursor_guide_color: [u8; 4], pub cursor_shadow_enabled: bool, pub cursor_shadow_color: [u8; 4], pub cursor_shadow_offset: [f32; 2], pub cursor_shadow_blur: f32, pub cursor_boost: f32, pub cursor_boost_color: [u8; 3], pub unfocused_cursor_style: UnfocusedCursorStyle, pub scrollbar_autohide_delay: u64, pub theme: String, pub auto_dark_mode: bool, pub light_theme: String, pub dark_theme: String, pub screenshot_format: String, pub shell_exit_action: ShellExitAction, pub custom_shell: Option<String>, pub shell_args: Option<Vec<String>>, pub working_directory: Option<String>, pub startup_directory_mode: StartupDirectoryMode, pub startup_directory: Option<String>, pub last_working_directory: Option<String>, pub shell_env: Option<HashMap<String, String>>, pub login_shell: bool, pub initial_text: String, pub initial_text_delay_ms: u64, pub initial_text_send_newline: bool, pub answerback_string: String, pub prompt_on_quit: bool, pub confirm_close_running_jobs: bool, pub jobs_to_ignore: Vec<String>, pub semantic_history_enabled: bool, pub semantic_history_editor_mode: SemanticHistoryEditorMode, pub semantic_history_editor: String, pub link_highlight_color: [u8; 3], pub link_highlight_underline: bool, pub link_underline_style: LinkUnderlineStyle, pub link_handler_command: String, pub scrollbar_position: String, pub scrollbar_width: f32, pub scrollbar_thumb_color: [f32; 4], pub scrollbar_track_color: [f32; 4], pub scrollbar_command_marks: bool, pub scrollbar_mark_tooltips: bool, pub command_separator_enabled: bool, pub command_separator_thickness: f32, pub command_separator_opacity: f32, pub command_separator_exit_color: bool, pub command_separator_color: [u8; 3], pub clipboard_max_sync_events: usize, pub clipboard_max_event_bytes: usize, pub command_history_max_entries: usize, pub notification_bell_desktop: bool, pub notification_bell_sound: u8, pub notification_bell_visual: bool, pub notification_activity_enabled: bool, pub notification_activity_threshold: u64, pub anti_idle_enabled: bool, pub anti_idle_seconds: u64, pub anti_idle_code: u8, pub notification_silence_enabled: bool, pub notification_silence_threshold: u64, pub notification_session_ended: bool, pub suppress_notifications_when_focused: bool, pub notification_max_buffer: usize, pub alert_sounds: HashMap<AlertEvent, AlertSoundConfig>, pub enable_mdns_discovery: bool, pub mdns_scan_timeout_secs: u32, pub ssh_auto_profile_switch: bool, pub ssh_revert_profile_on_disconnect: bool, pub tab_style: TabStyle, pub light_tab_style: TabStyle, pub dark_tab_style: TabStyle, pub tab_bar_mode: TabBarMode, pub tab_bar_height: f32, pub tab_bar_position: TabBarPosition, pub tab_bar_width: f32, pub tab_show_close_button: bool, pub tab_show_index: bool, pub tab_inherit_cwd: bool, pub max_tabs: usize, pub show_profile_drawer_button: bool, pub new_tab_shortcut_shows_profiles: bool, pub tab_bar_background: [u8; 3], pub tab_active_background: [u8; 3], pub tab_inactive_background: [u8; 3], pub tab_hover_background: [u8; 3], pub tab_active_text: [u8; 3], pub tab_inactive_text: [u8; 3], pub tab_active_indicator: [u8; 3], pub tab_activity_indicator: [u8; 3], pub tab_bell_indicator: [u8; 3], pub tab_close_button: [u8; 3], pub tab_close_button_hover: [u8; 3], pub dim_inactive_tabs: bool, pub inactive_tab_opacity: f32, pub tab_min_width: f32, pub tab_stretch_to_fill: bool, pub tab_html_titles: bool, pub tab_border_color: [u8; 3], pub tab_border_width: f32, pub tab_inactive_outline_only: bool, pub pane_divider_width: Option<f32>, pub pane_divider_hit_width: f32, pub pane_padding: f32, pub pane_min_size: usize, pub pane_background_opacity: f32, pub pane_divider_color: [u8; 3], pub pane_divider_hover_color: [u8; 3], pub dim_inactive_panes: bool, pub inactive_pane_opacity: f32, pub show_pane_titles: bool, pub pane_title_height: f32, pub pane_title_position: PaneTitlePosition, pub pane_title_color: [u8; 3], pub pane_title_bg_color: [u8; 3], pub pane_title_font: String, pub pane_divider_style: DividerStyle, pub max_panes: usize, pub pane_focus_indicator: bool, pub pane_focus_color: [u8; 3], pub pane_focus_width: f32, pub tmux_enabled: bool, pub tmux_path: String, pub tmux_default_session: Option<String>, pub tmux_auto_attach: bool, pub tmux_auto_attach_session: Option<String>, pub tmux_clipboard_sync: bool, pub tmux_profile: Option<String>, pub tmux_show_status_bar: bool, pub tmux_status_bar_refresh_ms: u64, pub tmux_prefix_key: String, pub tmux_status_bar_use_native_format: bool, pub tmux_status_bar_left: String, pub tmux_status_bar_right: String, pub pause_shaders_on_blur: bool, pub pause_refresh_on_blur: bool, pub unfocused_fps: u32, pub shader_hot_reload: bool, pub shader_hot_reload_delay: u64, pub shader_configs: HashMap<String, ShaderConfig>, pub cursor_shader_configs: HashMap<String, CursorShaderConfig>, pub keybindings: Vec<KeyBinding>, pub shader_install_prompt: ShaderInstallPrompt, pub shell_integration_state: InstallPromptState, pub integration_versions: IntegrationVersions, pub update_check_frequency: UpdateCheckFrequency, pub last_update_check: Option<String>, pub skipped_version: Option<String>, pub last_notified_version: Option<String>, pub auto_restore_arrangement: Option<String>, pub restore_session: bool, pub session_undo_timeout_secs: u32, pub session_undo_max_entries: usize, pub session_undo_preserve_shell: bool, pub search_highlight_color: [u8; 4], pub search_current_highlight_color: [u8; 4], pub search_case_sensitive: bool, pub search_regex: bool, pub search_wrap_around: bool, pub auto_log_sessions: bool, pub session_log_format: SessionLogFormat, pub session_log_directory: String, pub archive_on_close: bool, pub log_level: LogLevel, pub badge_enabled: bool, pub badge_format: String, pub badge_color: [u8; 3], pub badge_color_alpha: f32, pub badge_font: String, pub badge_font_bold: bool, pub badge_top_margin: f32, pub badge_right_margin: f32, pub badge_max_width: f32, pub badge_max_height: f32, pub status_bar_enabled: bool, pub status_bar_position: StatusBarPosition, pub status_bar_height: f32, pub status_bar_bg_color: [u8; 3], pub status_bar_bg_alpha: f32, pub status_bar_fg_color: [u8; 3], pub status_bar_font: String, pub status_bar_font_size: f32, pub status_bar_separator: String, pub status_bar_auto_hide_fullscreen: bool, pub status_bar_auto_hide_mouse_inactive: bool, pub status_bar_mouse_inactive_timeout: f32, pub status_bar_system_poll_interval: f32, pub status_bar_git_poll_interval: f32, pub status_bar_time_format: String, pub status_bar_git_show_status: bool, pub status_bar_widgets: Vec<StatusBarWidgetConfig>, pub progress_bar_enabled: bool, pub progress_bar_style: ProgressBarStyle, pub progress_bar_position: ProgressBarPosition, pub progress_bar_height: f32, pub progress_bar_opacity: f32, pub progress_bar_normal_color: [u8; 3], pub progress_bar_warning_color: [u8; 3], pub progress_bar_error_color: [u8; 3], pub progress_bar_indeterminate_color: [u8; 3], pub triggers: Vec<TriggerConfig>, pub coprocesses: Vec<CoprocessDefConfig>, pub scripts: Vec<ScriptConfig>, pub snippets: Vec<SnippetConfig>, pub actions: Vec<CustomActionConfig>, pub collapsed_settings_sections: Vec<String>, pub dynamic_profile_sources: Vec<DynamicProfileSource>, pub ai_inspector_enabled: bool, pub ai_inspector_open_on_startup: bool, pub ai_inspector_width: f32, pub ai_inspector_default_scope: String, pub ai_inspector_view_mode: String, pub ai_inspector_live_update: bool, pub ai_inspector_show_zones: bool, pub ai_inspector_agent: String, pub ai_inspector_auto_launch: bool, pub ai_inspector_auto_context: bool, pub ai_inspector_context_max_lines: usize, pub ai_inspector_auto_approve: bool, pub ai_inspector_agent_terminal_access: bool,
}
Expand description

Configuration for the terminal emulator Aligned with par-tui-term naming conventions for consistency

Fields§

§cols: usize

Number of columns in the terminal

§rows: usize

Number of rows in the terminal

§font_size: f32

Font size in points

§font_family: String

Font family name (regular/normal weight)

§font_family_bold: Option<String>

Bold font family name (optional, defaults to font_family)

§font_family_italic: Option<String>

Italic font family name (optional, defaults to font_family)

§font_family_bold_italic: Option<String>

Bold italic font family name (optional, defaults to font_family)

§font_ranges: Vec<FontRange>

Custom font mappings for specific Unicode ranges Format: Vec of (start_codepoint, end_codepoint, font_family_name) Example: [(0x4E00, 0x9FFF, “Noto Sans CJK SC”)] for CJK Unified Ideographs

§line_spacing: f32

Line height multiplier (1.0 = tight, 1.2 = default, 1.5 = spacious)

§char_spacing: f32

Character width multiplier (0.5 = narrow, 0.6 = default, 0.7 = wide)

§enable_text_shaping: bool

Enable text shaping for ligatures and complex scripts When enabled, uses HarfBuzz for proper ligature, emoji, and complex script rendering

§enable_ligatures: bool

Enable ligatures (requires enable_text_shaping)

§enable_kerning: bool

Enable kerning adjustments (requires enable_text_shaping)

§font_antialias: bool

Enable anti-aliasing for font rendering When false, text is rendered without smoothing (aliased/pixelated)

§font_hinting: bool

Enable hinting for font rendering Hinting improves text clarity at small sizes by aligning glyphs to pixel boundaries Disable for a softer, more “true to design” appearance

§font_thin_strokes: ThinStrokesMode

Thin strokes / font smoothing mode Controls stroke weight adjustment for improved rendering on different displays.

  • never: Standard stroke weight everywhere
  • retina_only: Lighter strokes on HiDPI displays (default)
  • dark_backgrounds_only: Lighter strokes on dark backgrounds
  • retina_dark_backgrounds_only: Lighter strokes only on HiDPI + dark backgrounds
  • always: Always use lighter strokes
§minimum_contrast: f32

Minimum contrast ratio for text against background (WCAG standard) When set, adjusts foreground colors to ensure they meet the specified contrast ratio.

  • 1.0: No adjustment (disabled)
  • 4.5: WCAG AA standard for normal text
  • 7.0: WCAG AAA standard for normal text

Range: 1.0 to 21.0 (maximum possible contrast)

§window_title: String

Window title

§allow_title_change: bool

Allow applications to change the window title via OSC escape sequences When false, the window title will always be the configured window_title

§max_fps: u32

Maximum frames per second (FPS) target Controls how frequently the terminal requests screen redraws. Note: On macOS, actual FPS may be lower (~22-25) due to system-level VSync throttling in wgpu/Metal, regardless of this setting. Default: 60

§vsync_mode: VsyncMode

VSync mode - controls GPU frame synchronization

  • immediate: No VSync, render as fast as possible (lowest latency, highest power)
  • mailbox: Cap at monitor refresh rate with triple buffering (balanced)
  • fifo: Strict VSync with double buffering (lowest power, slight input lag)

Default: immediate (for maximum performance)

§power_preference: PowerPreference

GPU power preference for adapter selection

  • none: Let the system decide (default)
  • low_power: Prefer integrated GPU (saves battery)
  • high_performance: Prefer discrete GPU (maximum performance)

Note: Requires app restart to take effect.

§reduce_flicker: bool

Reduce flicker by delaying redraws while cursor is hidden (DECTCEM off). Many terminal programs hide cursor during bulk updates to prevent visual artifacts.

§reduce_flicker_delay_ms: u32

Maximum delay in milliseconds when reduce_flicker is enabled. Rendering occurs when cursor becomes visible OR this delay expires. Range: 1-100ms. Default: 16ms (~1 frame at 60fps).

§maximize_throughput: bool

Enable throughput mode to batch rendering during bulk output. When enabled, rendering is throttled to reduce CPU overhead for large outputs. Toggle with Cmd+Shift+T (macOS) or Ctrl+Shift+T (other platforms).

§throughput_render_interval_ms: u32

Render interval in milliseconds when maximize_throughput is enabled. Higher values = better throughput but delayed display. Range: 50-500ms.

§window_padding: f32

Window padding in pixels

§hide_window_padding_on_split: bool

Automatically hide window padding when panes are split When true (default), window padding becomes 0 when the active tab has multiple panes

§window_opacity: f32

Window opacity/transparency (0.0 = fully transparent, 1.0 = fully opaque)

§window_always_on_top: bool

Keep window always on top of other windows

§window_decorations: bool

Show window decorations (title bar, borders)

§window_type: WindowType

Window type (normal, fullscreen, or edge-anchored)

  • normal: Standard window (default)
  • fullscreen: Start in fullscreen mode
  • edge_top/edge_bottom/edge_left/edge_right: Edge-anchored dropdown-style window
§target_monitor: Option<usize>

Target monitor index for window placement (0 = primary) Use None to let the OS decide window placement

§target_space: Option<u32>

Target macOS Space (virtual desktop) for window placement (1-based ordinal) Use None to let the OS decide which Space to open on. Only effective on macOS; ignored on other platforms.

§lock_window_size: bool

Lock window size to prevent resize When true, the window cannot be resized by the user

§show_window_number: bool

Show window number in title bar Useful when multiple par-term windows are open

§transparency_affects_only_default_background: bool

When true, only the default terminal background is transparent. Colored backgrounds (syntax highlighting, status bars, etc.) remain opaque. This keeps text readable while allowing window transparency.

§keep_text_opaque: bool

When true, text is always rendered at full opacity regardless of window transparency. This ensures text remains crisp and readable even with transparent backgrounds.

§blur_enabled: bool

Enable window blur effect (macOS only) Blurs content behind the transparent window for better readability

§blur_radius: u32

Blur radius in points (0-64, macOS only) Higher values = more blur. Default: 10

§background_image: Option<String>

Background image path (optional, supports ~ for home directory)

§background_image_enabled: bool

Enable or disable background image rendering (even if a path is set)

§background_image_mode: BackgroundImageMode

Background image display mode

  • fit: Scale to fit window while maintaining aspect ratio (default)
  • fill: Scale to fill window while maintaining aspect ratio (may crop)
  • stretch: Stretch to fill window (ignores aspect ratio)
  • tile: Repeat image in a tiled pattern
  • center: Center image at original size
§background_image_opacity: f32

Background image opacity (0.0 = fully transparent, 1.0 = fully opaque)

§image_scaling_mode: ImageScalingMode

Scaling quality for inline images (nearest = sharp/pixel art, linear = smooth)

§image_preserve_aspect_ratio: bool

Preserve aspect ratio when scaling inline images to fit terminal cells

§background_mode: BackgroundMode

Background mode selection (default, color, or image)

§pane_backgrounds: Vec<PaneBackgroundConfig>

Per-pane background image configurations

§background_color: [u8; 3]

Custom solid background color [R, G, B] (0-255) Used when background_mode is “color” Transparency is controlled by window_opacity

§download_save_location: DownloadSaveLocation

Default save location for downloaded files

§last_download_directory: Option<String>

Last used download directory (persisted internally)

§custom_shader: Option<String>

Custom shader file path (GLSL format, relative to shaders folder or absolute) Shaders are loaded from ~/.config/par-term/shaders/ by default Supports Ghostty/Shadertoy-style GLSL shaders with iTime, iResolution, iChannel0-4

§custom_shader_enabled: bool

Enable or disable the custom shader (even if a path is set)

§custom_shader_animation: bool

Enable animation in custom shader (updates iTime uniform each frame) When disabled, iTime is fixed at 0.0 for static effects

§custom_shader_animation_speed: f32

Animation speed multiplier for custom shader (1.0 = normal speed)

§custom_shader_text_opacity: f32

Text opacity when using custom shader (0.0 = transparent, 1.0 = fully opaque) This allows text to remain readable while the shader effect shows through the background

§custom_shader_full_content: bool

When enabled, the shader receives the full rendered terminal content (text + background) and can manipulate/distort it. When disabled (default), the shader only provides a background and text is composited on top cleanly.

§custom_shader_brightness: f32

Brightness multiplier for custom shader output (0.05 = very dark, 1.0 = full brightness) This dims the shader background to improve text readability

§custom_shader_channel0: Option<String>

Texture file path for custom shader iChannel0 (optional, Shadertoy compatible) Supports ~ for home directory. Example: “~/textures/noise.png”

§custom_shader_channel1: Option<String>

Texture file path for custom shader iChannel1 (optional)

§custom_shader_channel2: Option<String>

Texture file path for custom shader iChannel2 (optional)

§custom_shader_channel3: Option<String>

Texture file path for custom shader iChannel3 (optional)

§custom_shader_cubemap: Option<String>

Cubemap texture path prefix for custom shaders (optional) Expects 6 face files: {prefix}-px.{ext}, -nx.{ext}, -py.{ext}, -ny.{ext}, -pz.{ext}, -nz.{ext} Supported formats: .png, .jpg, .jpeg, .hdr Example: “textures/cubemaps/env-outside” will load env-outside-px.png, etc.

§custom_shader_cubemap_enabled: bool

Enable cubemap sampling in custom shaders When enabled and a cubemap path is set, iCubemap uniform is available in shaders

§custom_shader_use_background_as_channel0: bool

Use the app’s background image as iChannel0 for custom shaders When enabled, the configured background image is bound as iChannel0 instead of the custom_shader_channel0 texture. This allows shaders to incorporate the background image without requiring a separate texture file.

§cursor_shader: Option<String>

Cursor shader file path (GLSL format, relative to shaders folder or absolute) This is a separate shader specifically for cursor effects (trails, glows, etc.)

§cursor_shader_enabled: bool

Enable or disable the cursor shader (even if a path is set)

§cursor_shader_animation: bool

Enable animation in cursor shader (updates iTime uniform each frame)

§cursor_shader_animation_speed: f32

Animation speed multiplier for cursor shader (1.0 = normal speed)

§cursor_shader_color: [u8; 3]

Cursor color for shader effects [R, G, B] (0-255) This color is passed to the shader via iCursorShaderColor uniform

§cursor_shader_trail_duration: f32

Duration of cursor trail effect in seconds Passed to shader via iCursorTrailDuration uniform

§cursor_shader_glow_radius: f32

Radius of cursor glow effect in pixels Passed to shader via iCursorGlowRadius uniform

§cursor_shader_glow_intensity: f32

Intensity of cursor glow effect (0.0 = none, 1.0 = full) Passed to shader via iCursorGlowIntensity uniform

§cursor_shader_hides_cursor: bool

Hide the default cursor when cursor shader is enabled When true and cursor_shader_enabled is true, the normal cursor is not drawn This allows cursor shaders to fully replace the cursor rendering

§cursor_shader_disable_in_alt_screen: bool

Disable cursor shader while in alt screen (vim, less, htop) Keeps current behavior by default for TUI compatibility

§left_option_key_mode: OptionKeyMode

Left Option key (macOS) / Left Alt key (Linux/Windows) behavior

  • normal: Sends special characters (default macOS behavior)
  • meta: Sets the high bit (8th bit) on the character
  • esc: Sends Escape prefix before the character (most compatible for emacs/vim)
§right_option_key_mode: OptionKeyMode

Right Option key (macOS) / Right Alt key (Linux/Windows) behavior Can be configured independently from left Option key

  • normal: Sends special characters (default macOS behavior)
  • meta: Sets the high bit (8th bit) on the character
  • esc: Sends Escape prefix before the character (most compatible for emacs/vim)
§modifier_remapping: ModifierRemapping

Modifier key remapping configuration Allows remapping modifier keys to different functions (e.g., swap Ctrl and Caps Lock)

§use_physical_keys: bool

Use physical key positions for keybindings instead of logical characters When enabled, keybindings work based on key position (scan code) rather than the character produced, making shortcuts consistent across keyboard layouts. For example, Ctrl+Z will always be the bottom-left key regardless of QWERTY/AZERTY/Dvorak.

§auto_copy_selection: bool

Automatically copy selected text to clipboard

§copy_trailing_newline: bool

Include trailing newline when copying lines Note: Inverted logic from old strip_trailing_newline_on_copy

§middle_click_paste: bool

Paste on middle mouse button click

§paste_delay_ms: u64

Delay in milliseconds between pasted lines (0 = no delay) Useful for slow terminals or remote connections that can’t handle rapid paste

§dropped_file_quote_style: DroppedFileQuoteStyle

Quote style for dropped file paths

  • single_quotes: Wrap in single quotes (safest for most shells)
  • double_quotes: Wrap in double quotes
  • backslash: Escape special characters with backslashes
  • none: Insert path as-is (not recommended)
§mouse_scroll_speed: f32

Mouse wheel scroll speed multiplier

§mouse_double_click_threshold: u64

Double-click timing threshold in milliseconds

§mouse_triple_click_threshold: u64

Triple-click timing threshold in milliseconds (typically same as double-click)

§option_click_moves_cursor: bool

Option+Click (macOS) / Alt+Click (Linux/Windows) moves cursor to clicked position Sends cursor movement escape sequences to position text cursor at click location Useful for quick cursor positioning in shells and editors

§focus_follows_mouse: bool

Focus window automatically when mouse enters (without requiring a click) This is an accessibility feature that some users prefer

§report_horizontal_scroll: bool

Report horizontal scroll events to terminal applications when mouse reporting is enabled Horizontal scroll uses button codes 6 (left) and 7 (right) in the mouse protocol

§word_characters: String

Characters considered part of a word for double-click selection (in addition to alphanumeric) Default: “/-+\~_.” (matches iTerm2) Example: If you want to select entire paths, add “/” to include path separators

§smart_selection_enabled: bool

Enable smart selection rules for pattern-based double-click selection When enabled, double-click will try to match patterns like URLs, emails, paths before falling back to word boundary selection

§smart_selection_rules: Vec<SmartSelectionRule>

Smart selection rules for pattern-based double-click selection Rules are evaluated by precision (highest first). If a pattern matches at the cursor position, that text is selected instead of using word boundaries.

§copy_mode_enabled: bool

Enable copy mode (vi-style keyboard-driven text selection and navigation). When enabled, users can enter copy mode via the toggle_copy_mode keybinding action to navigate the terminal buffer with vi keys and yank text.

§copy_mode_auto_exit_on_yank: bool

Automatically exit copy mode after yanking (copying) selected text. When true (default), pressing y in visual mode copies text and exits copy mode. When false, copy mode stays active after yanking so you can continue selecting.

§copy_mode_show_status: bool

Show a status bar at the bottom of the terminal when copy mode is active. The status bar displays the current mode (COPY/VISUAL/V-LINE/V-BLOCK/SEARCH) and cursor position information.

§scrollback_lines: usize

Maximum number of lines to keep in scrollback buffer

§unicode_version: UnicodeVersion

Unicode version for character width calculations Different versions have different width tables, particularly for emoji. Options: unicode_9, unicode_10, …, unicode_16, auto (default)

§ambiguous_width: AmbiguousWidth

Treatment of East Asian Ambiguous width characters

  • narrow: 1 cell width (Western default)
  • wide: 2 cell width (CJK default)
§normalization_form: NormalizationForm

Unicode normalization form for text processing Controls how Unicode text is normalized before being stored in terminal cells.

  • NFC: Canonical composition (default, most compatible)
  • NFD: Canonical decomposition (macOS HFS+ style)
  • NFKC: Compatibility composition (resolves ligatures like fi → fi)
  • NFKD: Compatibility decomposition
  • none: No normalization
§cursor_blink: bool

Enable cursor blinking

§cursor_blink_interval: u64

Cursor blink interval in milliseconds

§cursor_style: CursorStyle

Cursor style (block, beam, underline)

§cursor_color: [u8; 3]

Cursor color [R, G, B] (0-255)

§cursor_text_color: Option<[u8; 3]>

Color of text under block cursor [R, G, B] (0-255) If not set (None), uses automatic contrast color Only affects block cursor style (beam and underline don’t obscure text)

§lock_cursor_visibility: bool

Lock cursor visibility - prevent applications from hiding the cursor When true, the cursor remains visible regardless of DECTCEM escape sequences

§lock_cursor_style: bool

Lock cursor style - prevent applications from changing the cursor style When true, the cursor style from config is always used, ignoring DECSCUSR escape sequences

§lock_cursor_blink: bool

Lock cursor blink - prevent applications from enabling cursor blink When true and cursor_blink is false, applications cannot enable blinking cursor

§cursor_guide_enabled: bool

Enable horizontal guide line at cursor row for better tracking in wide terminals

§cursor_guide_color: [u8; 4]

Cursor guide color [R, G, B, A] (0-255), subtle highlight spanning full terminal width

§cursor_shadow_enabled: bool

Enable drop shadow behind cursor for better visibility against varying backgrounds

§cursor_shadow_color: [u8; 4]

Cursor shadow color [R, G, B, A] (0-255)

§cursor_shadow_offset: [f32; 2]

Cursor shadow offset in pixels [x, y]

§cursor_shadow_blur: f32

Cursor shadow blur radius in pixels

§cursor_boost: f32

Cursor boost (glow) intensity (0.0 = off, 1.0 = maximum boost) Adds a glow/highlight effect around the cursor for visibility

§cursor_boost_color: [u8; 3]

Cursor boost glow color [R, G, B] (0-255)

§unfocused_cursor_style: UnfocusedCursorStyle

Cursor appearance when window is unfocused

  • hollow: Show outline-only block cursor (default, standard terminal behavior)
  • same: Keep same cursor style as when focused
  • hidden: Hide cursor completely when unfocused
§scrollbar_autohide_delay: u64

Auto-hide scrollbar after inactivity (milliseconds, 0 = never hide)

§theme: String

Color theme name to use for terminal colors

§auto_dark_mode: bool

Automatically switch theme based on system light/dark mode

§light_theme: String

Theme to use when system is in light mode (used when auto_dark_mode is true)

§dark_theme: String

Theme to use when system is in dark mode (used when auto_dark_mode is true)

§screenshot_format: String

File format for screenshots (png, jpeg, svg, html)

§shell_exit_action: ShellExitAction

Action to take when the shell process exits Supports: close, keep, restart_immediately, restart_with_prompt, restart_after_delay For backward compatibility, also accepts boolean values (true=close, false=keep)

§custom_shell: Option<String>

Custom shell command (defaults to system shell if not specified)

§shell_args: Option<Vec<String>>

Arguments to pass to the shell

§working_directory: Option<String>

Working directory for the shell (legacy, use startup_directory_mode instead) When set, overrides startup_directory_mode for backward compatibility

§startup_directory_mode: StartupDirectoryMode

Startup directory mode: controls where new sessions start

  • home: Start in user’s home directory (default)
  • previous: Remember and restore last working directory from previous session
  • custom: Start in the directory specified by startup_directory
§startup_directory: Option<String>

Custom startup directory (used when startup_directory_mode is “custom”) Supports ~ for home directory expansion

§last_working_directory: Option<String>

Last working directory from previous session (auto-managed) Used when startup_directory_mode is “previous”

§shell_env: Option<HashMap<String, String>>

Environment variables to set for the shell

§login_shell: bool

Whether to spawn the shell as a login shell (passes -l flag) This is important on macOS to properly initialize PATH from Homebrew, /etc/paths.d, etc. Default: true

§initial_text: String

Text to send automatically when a terminal session starts Supports escape sequences: \n (newline), \r (carriage return), \t (tab), \xHH (hex), \e (ESC)

§initial_text_delay_ms: u64

Delay in milliseconds before sending the initial text (to allow shell to be ready)

§initial_text_send_newline: bool

Whether to append a newline after sending the initial text

§answerback_string: String

Answerback string sent in response to ENQ (0x05) control character This is a legacy terminal feature used for terminal identification. Default: empty (disabled) for security Common values: “par-term”, “vt100”, or custom identification Security note: Setting this may expose terminal identification to applications

§prompt_on_quit: bool

Show confirmation dialog before quitting the application When enabled, closing the window will show a confirmation dialog if there are any open terminal sessions. Default: false (close immediately without confirmation)

§confirm_close_running_jobs: bool

Show confirmation dialog before closing a tab with running jobs When enabled, closing a tab that has a running command will show a confirmation dialog. Default: false (close immediately without confirmation)

§jobs_to_ignore: Vec<String>

List of job/process names to ignore when checking for running jobs These jobs will not trigger a close confirmation dialog. Common examples: “bash”, “zsh”, “fish”, “cat”, “less”, “man”, “sleep” Default: common shell names that shouldn’t block tab close

§semantic_history_enabled: bool

Enable semantic history (file path detection and opening) When enabled, Cmd/Ctrl+Click on detected file paths opens them in the editor.

§semantic_history_editor_mode: SemanticHistoryEditorMode

Editor selection mode for semantic history

  • custom - Use the editor command specified in semantic_history_editor
  • environment_variable - Use $EDITOR or $VISUAL environment variable (default)
  • system_default - Use system default application for each file type
§semantic_history_editor: String

Editor command for semantic history (when mode is custom).

Placeholders: {file} = file path, {line} = line number (if available)

Examples:

  • code -g {file}:{line} (VS Code with line number)
  • subl {file}:{line} (Sublime Text)
  • vim +{line} {file} (Vim)
  • emacs +{line} {file} (Emacs)
§link_highlight_color: [u8; 3]

Color for highlighted links (URLs and file paths) [R, G, B] (0-255)

§link_highlight_underline: bool

Underline highlighted links (URLs and file paths)

§link_underline_style: LinkUnderlineStyle

Style for link highlight underlines (solid or stipple)

§link_handler_command: String

Custom command to open URLs. When set, used instead of system default browser.

Use {url} as placeholder for the URL.

Examples:

  • firefox {url} (open in Firefox)
  • open -a Safari {url} (macOS: open in Safari)
  • chromium-browser {url} (Linux: open in Chromium)

When empty or unset, uses the system default browser.

§scrollbar_position: String

Scrollbar position (left or right)

§scrollbar_width: f32

Scrollbar width in pixels

§scrollbar_thumb_color: [f32; 4]

Scrollbar thumb color (RGBA: [r, g, b, a] where each is 0.0-1.0)

§scrollbar_track_color: [f32; 4]

Scrollbar track color (RGBA: [r, g, b, a] where each is 0.0-1.0)

§scrollbar_command_marks: bool

Show command markers on the scrollbar (requires shell integration)

§scrollbar_mark_tooltips: bool

Show tooltips when hovering over scrollbar command markers

§command_separator_enabled: bool

Show horizontal separator lines between commands (requires shell integration)

§command_separator_thickness: f32

Thickness of command separator lines in pixels

§command_separator_opacity: f32

Opacity of command separator lines (0.0-1.0)

§command_separator_exit_color: bool

Color separator lines by exit code (green=success, red=failure, gray=unknown)

§command_separator_color: [u8; 3]

Custom color for separator lines when exit_color is disabled [R, G, B]

§clipboard_max_sync_events: usize

Maximum clipboard sync events retained for diagnostics

§clipboard_max_event_bytes: usize

Maximum bytes stored per clipboard sync event

§command_history_max_entries: usize

Maximum number of commands to persist in fuzzy search history

§notification_bell_desktop: bool

Forward BEL events to desktop notification centers

§notification_bell_sound: u8

Volume (0-100) for backend bell sound alerts (0 disables)

§notification_bell_visual: bool

Enable backend visual bell overlay

§notification_activity_enabled: bool

Enable notifications when activity resumes after inactivity

§notification_activity_threshold: u64

Seconds of inactivity required before an activity alert fires

§anti_idle_enabled: bool

Enable anti-idle keep-alive (sends code after idle period)

§anti_idle_seconds: u64

Seconds of inactivity before sending keep-alive code

§anti_idle_code: u8

ASCII code to send as keep-alive (e.g., 0 = NUL, 27 = ESC)

§notification_silence_enabled: bool

Enable notifications after prolonged silence

§notification_silence_threshold: u64

Seconds of silence before a silence alert fires

§notification_session_ended: bool

Enable notification when a shell/session exits

§suppress_notifications_when_focused: bool

Suppress desktop notifications when the terminal window is focused

§notification_max_buffer: usize

Maximum number of OSC 9/777 notification entries retained by backend

§alert_sounds: HashMap<AlertEvent, AlertSoundConfig>

Alert sound configuration per event type Maps AlertEvent variants to their sound settings

§enable_mdns_discovery: bool

Enable mDNS/Bonjour discovery for SSH hosts

§mdns_scan_timeout_secs: u32

mDNS scan timeout in seconds

§ssh_auto_profile_switch: bool

Enable automatic profile switching based on SSH hostname

§ssh_revert_profile_on_disconnect: bool

Revert profile when SSH session disconnects

§tab_style: TabStyle

Tab visual style preset (dark, light, compact, minimal, high_contrast, automatic) Applies cosmetic color/size/spacing presets to the tab bar

§light_tab_style: TabStyle

Tab style to use when system is in light mode (used when tab_style is Automatic)

§dark_tab_style: TabStyle

Tab style to use when system is in dark mode (used when tab_style is Automatic)

§tab_bar_mode: TabBarMode

Tab bar visibility mode (always, when_multiple, never)

§tab_bar_height: f32

Tab bar height in pixels

§tab_bar_position: TabBarPosition

Tab bar position (top, bottom, left)

§tab_bar_width: f32

Tab bar width in pixels (used when tab_bar_position is Left)

§tab_show_close_button: bool

Show close button on tabs

§tab_show_index: bool

Show tab index numbers (for Cmd+1-9)

§tab_inherit_cwd: bool

New tab inherits working directory from active tab

§max_tabs: usize

Maximum tabs per window (0 = unlimited)

§show_profile_drawer_button: bool

Show the profile drawer toggle button on the right edge of the terminal When disabled, the profile drawer can still be opened via keyboard shortcut

§new_tab_shortcut_shows_profiles: bool

When true, the new-tab keyboard shortcut (Cmd+T / Ctrl+Shift+T) shows the profile selection dropdown instead of immediately opening a default tab

§tab_bar_background: [u8; 3]

Tab bar background color [R, G, B] (0-255)

§tab_active_background: [u8; 3]

Active tab background color [R, G, B] (0-255)

§tab_inactive_background: [u8; 3]

Inactive tab background color [R, G, B] (0-255)

§tab_hover_background: [u8; 3]

Hovered tab background color [R, G, B] (0-255)

§tab_active_text: [u8; 3]

Active tab text color [R, G, B] (0-255)

§tab_inactive_text: [u8; 3]

Inactive tab text color [R, G, B] (0-255)

§tab_active_indicator: [u8; 3]

Active tab indicator/underline color [R, G, B] (0-255)

§tab_activity_indicator: [u8; 3]

Activity indicator dot color [R, G, B] (0-255)

§tab_bell_indicator: [u8; 3]

Bell indicator color [R, G, B] (0-255)

§tab_close_button: [u8; 3]

Close button color [R, G, B] (0-255)

§tab_close_button_hover: [u8; 3]

Close button hover color [R, G, B] (0-255)

§dim_inactive_tabs: bool

Enable visual dimming of inactive tabs When true, inactive tabs are rendered with reduced opacity

§inactive_tab_opacity: f32

Opacity level for inactive tabs (0.0-1.0) Only used when dim_inactive_tabs is true Lower values make inactive tabs more transparent/dimmed

§tab_min_width: f32

Minimum tab width in pixels before horizontal scrolling is enabled When tabs cannot fit at this width, scroll buttons appear

§tab_stretch_to_fill: bool

Stretch tabs to fill the available tab bar width evenly (iTerm2 style) When false, tabs keep their minimum width and excess space is left unused

§tab_html_titles: bool

Render tab titles as limited HTML (bold/italic/underline/color spans) When false, titles are rendered as plain text

§tab_border_color: [u8; 3]

Tab border color [R, G, B] (0-255) A thin border around each tab to help distinguish them

§tab_border_width: f32

Tab border width in pixels (0 = no border)

§tab_inactive_outline_only: bool

Render inactive tabs as outline only (no fill) When true, inactive tabs show only a border stroke with no background fill. Hovered inactive tabs brighten the outline instead of filling.

§pane_divider_width: Option<f32>

Width of dividers between panes in pixels (visual width)

§pane_divider_hit_width: f32

Width of the drag hit area for resizing panes (should be >= divider width) A larger hit area makes it easier to grab the divider for resizing

§pane_padding: f32

Padding inside panes in pixels (space between content and border/divider)

§pane_min_size: usize

Minimum pane size in cells (columns for horizontal splits, rows for vertical) Prevents panes from being resized too small to be useful

§pane_background_opacity: f32

Pane background opacity (0.0 = fully transparent, 1.0 = fully opaque) Lower values allow background image/shader to show through pane backgrounds

§pane_divider_color: [u8; 3]

Pane divider color [R, G, B] (0-255)

§pane_divider_hover_color: [u8; 3]

Pane divider hover color [R, G, B] (0-255) - shown when mouse hovers over divider

§dim_inactive_panes: bool

Enable visual dimming of inactive panes

§inactive_pane_opacity: f32

Opacity level for inactive panes (0.0-1.0)

§show_pane_titles: bool

Show title bar on each pane

§pane_title_height: f32

Height of pane title bars in pixels

§pane_title_position: PaneTitlePosition

Position of pane title bars (top or bottom)

§pane_title_color: [u8; 3]

Pane title text color [R, G, B] (0-255)

§pane_title_bg_color: [u8; 3]

Pane title background color [R, G, B] (0-255)

§pane_title_font: String

Pane title font family (empty string = use terminal font)

§pane_divider_style: DividerStyle

Style of dividers between panes (solid, double, dashed, shadow)

§max_panes: usize

Maximum panes per tab (0 = unlimited)

§pane_focus_indicator: bool

Show visual indicator (border) around focused pane

§pane_focus_color: [u8; 3]

Color of the focused pane indicator [R, G, B] (0-255)

§pane_focus_width: f32

Width of the focused pane indicator border in pixels

§tmux_enabled: bool

Enable tmux control mode integration

§tmux_path: String

Path to tmux executable (default: “tmux” - uses PATH)

§tmux_default_session: Option<String>

Default session name when creating new tmux sessions

§tmux_auto_attach: bool

Auto-attach to existing tmux session on startup

§tmux_auto_attach_session: Option<String>

Session name to auto-attach to (if tmux_auto_attach is true)

§tmux_clipboard_sync: bool

Sync clipboard with tmux paste buffer When copying in par-term, also update tmux’s paste buffer via set-buffer

§tmux_profile: Option<String>

Profile to switch to when connected to tmux When profiles feature is implemented, this will automatically switch to the specified profile when entering tmux mode

§tmux_show_status_bar: bool

Show tmux status bar in par-term UI When connected to tmux, display the status bar at the bottom of the terminal

§tmux_status_bar_refresh_ms: u64

Tmux status bar refresh interval in milliseconds How often to poll tmux for updated status bar content. Lower values mean more frequent updates but slightly more CPU usage. Default: 1000 (1 second)

§tmux_prefix_key: String

Tmux prefix key for control mode In control mode, par-term intercepts this key combination and waits for a command key. Format: “C-b” (Ctrl+B, default), “C-Space” (Ctrl+Space), “C-a” (Ctrl+A), etc. The prefix + command key is translated to the appropriate tmux command.

§tmux_status_bar_use_native_format: bool

Use native tmux format strings for status bar content When true, queries tmux for the actual status-left and status-right values using display-message -p '#{T:status-left}' command. When false, uses par-term’s configurable format strings below.

§tmux_status_bar_left: String

Tmux status bar left side format string.

Supported variables:

  • {session} - Session name
  • {windows} - Window list with active marker (*)
  • {pane} - Focused pane ID
  • {time:FORMAT} - Current time with strftime format (e.g., {time:%H:%M})
  • {hostname} - Machine hostname
  • {user} - Current username

Default: [{session}] {windows}

§tmux_status_bar_right: String

Tmux status bar right side format string.

Same variables as tmux_status_bar_left.

Default: {pane} | {time:%H:%M}

§pause_shaders_on_blur: bool

Pause shader animations when window loses focus This reduces GPU usage when the terminal is not actively being viewed

§pause_refresh_on_blur: bool

Reduce refresh rate when window is not focused When true, uses unfocused_fps instead of max_fps when window is blurred

§unfocused_fps: u32

Target FPS when window is not focused (only used if pause_refresh_on_blur is true) Lower values save more power but may delay terminal output visibility

§shader_hot_reload: bool

Enable automatic shader reloading when shader files are modified This watches custom_shader and cursor_shader files for changes

§shader_hot_reload_delay: u64

Debounce delay in milliseconds before reloading shader after file change Helps avoid multiple reloads during rapid saves from editors

§shader_configs: HashMap<String, ShaderConfig>

Per-shader configuration overrides (key = shader filename) These override settings embedded in shader metadata and global defaults

§cursor_shader_configs: HashMap<String, CursorShaderConfig>

Per-cursor-shader configuration overrides (key = shader filename)

§keybindings: Vec<KeyBinding>

Custom keybindings (checked before built-in shortcuts) Format: key = “CmdOrCtrl+Shift+B”, action = “toggle_background_shader”

§shader_install_prompt: ShaderInstallPrompt

Shader install prompt preference

  • ask: Prompt user to install shaders if folder is missing/empty (default)
  • never: User declined, don’t ask again
  • installed: Shaders have been installed
§shell_integration_state: InstallPromptState

Shell integration install state

§integration_versions: IntegrationVersions

Version tracking for integrations

§update_check_frequency: UpdateCheckFrequency

How often to check for new par-term releases

  • never: Disable automatic update checks
  • daily: Check once per day
  • weekly: Check once per week (default)
  • monthly: Check once per month
§last_update_check: Option<String>

ISO 8601 timestamp of the last update check (auto-managed)

§skipped_version: Option<String>

Version that user chose to skip notifications for

§last_notified_version: Option<String>

Last version we notified the user about (prevents repeat notifications)

§auto_restore_arrangement: Option<String>

Name of arrangement to auto-restore on startup (None = disabled)

§restore_session: bool

Whether to restore the previous session (tabs, panes, CWDs) on startup

§session_undo_timeout_secs: u32

Seconds to keep closed tab metadata for undo (0 = disabled)

§session_undo_max_entries: usize

Maximum number of closed tabs to remember for undo

§session_undo_preserve_shell: bool

When true, closing a tab hides the shell instead of killing it. Undo restores the full session with scrollback and running processes.

§search_highlight_color: [u8; 4]

Highlight color for search matches [R, G, B, A] (0-255)

§search_current_highlight_color: [u8; 4]

Highlight color for the current/active search match [R, G, B, A] (0-255)

§search_case_sensitive: bool

Default case sensitivity for search

§search_regex: bool

Default regex mode for search

§search_wrap_around: bool

Wrap around when navigating search matches

§auto_log_sessions: bool

Automatically record all terminal sessions When enabled, all terminal output is logged to files in the log directory

§session_log_format: SessionLogFormat

Log format for session recording

  • plain: Simple text output without escape sequences
  • html: Rendered output with colors preserved
  • asciicast: asciinema-compatible format for replay/sharing (default)
§session_log_directory: String

Directory where session logs are saved Default: ~/.local/share/par-term/logs/

§archive_on_close: bool

Automatically save session log when tab/window closes When true, ensures the session is fully written before the tab closes

§log_level: LogLevel

Log level for debug log file output. Controls verbosity of /tmp/par_term_debug.log. Environment variable RUST_LOG and –log-level CLI flag take precedence.

§badge_enabled: bool

Enable badge display

§badge_format: String

Badge text format with variable interpolation Supports (session.username), (session.hostname), (session.path), etc.

§badge_color: [u8; 3]

Badge text color [R, G, B] (0-255)

§badge_color_alpha: f32

Badge opacity (0.0-1.0)

§badge_font: String

Badge font family (uses system font if not found)

§badge_font_bold: bool

Use bold weight for badge font

§badge_top_margin: f32

Top margin in pixels from terminal edge

§badge_right_margin: f32

Right margin in pixels from terminal edge

§badge_max_width: f32

Maximum badge width as fraction of terminal width (0.0-1.0)

§badge_max_height: f32

Maximum badge height as fraction of terminal height (0.0-1.0)

§status_bar_enabled: bool

Enable the status bar

§status_bar_position: StatusBarPosition

Status bar position (top or bottom)

§status_bar_height: f32

Status bar height in pixels

§status_bar_bg_color: [u8; 3]

Status bar background color [R, G, B] (0-255)

§status_bar_bg_alpha: f32

Status bar background alpha (0.0-1.0)

§status_bar_fg_color: [u8; 3]

Status bar foreground (text) color [R, G, B] (0-255)

§status_bar_font: String

Status bar font family (empty string = use terminal font)

§status_bar_font_size: f32

Status bar font size in points

§status_bar_separator: String

Separator string between widgets

§status_bar_auto_hide_fullscreen: bool

Auto-hide the status bar when in fullscreen mode

§status_bar_auto_hide_mouse_inactive: bool

Auto-hide the status bar when mouse is inactive

§status_bar_mouse_inactive_timeout: f32

Timeout in seconds before hiding status bar after last mouse activity

§status_bar_system_poll_interval: f32

Polling interval in seconds for system monitor data (CPU, memory, network)

§status_bar_git_poll_interval: f32

Polling interval in seconds for git branch detection

§status_bar_time_format: String

Time format string for the Clock widget (chrono strftime syntax)

§status_bar_git_show_status: bool

Show ahead/behind and dirty indicators on the Git Branch widget

§status_bar_widgets: Vec<StatusBarWidgetConfig>

Widget configuration list

§progress_bar_enabled: bool

Enable progress bar overlay When enabled, progress bars from OSC 9;4 and OSC 934 sequences are displayed

§progress_bar_style: ProgressBarStyle

Progress bar visual style

  • bar: Simple thin bar (default)
  • bar_with_text: Bar with percentage text and labels
§progress_bar_position: ProgressBarPosition

Progress bar position

  • bottom: Display at the bottom of the terminal (default)
  • top: Display at the top of the terminal
§progress_bar_height: f32

Progress bar height in pixels

§progress_bar_opacity: f32

Progress bar opacity (0.0-1.0)

§progress_bar_normal_color: [u8; 3]

Color for normal progress state [R, G, B] (0-255)

§progress_bar_warning_color: [u8; 3]

Color for warning progress state [R, G, B] (0-255)

§progress_bar_error_color: [u8; 3]

Color for error progress state [R, G, B] (0-255)

§progress_bar_indeterminate_color: [u8; 3]

Color for indeterminate progress state [R, G, B] (0-255)

§triggers: Vec<TriggerConfig>

Regex trigger definitions that match terminal output and fire actions

§coprocesses: Vec<CoprocessDefConfig>

Coprocess definitions for piped subprocess management

§scripts: Vec<ScriptConfig>

External observer script definitions

§snippets: Vec<SnippetConfig>

Text snippets for quick insertion

§actions: Vec<CustomActionConfig>

Custom actions (shell commands, text insertion, key sequences)

§collapsed_settings_sections: Vec<String>

Settings window section IDs that have been toggled from their default collapse state. Sections default to open unless specified otherwise; IDs in this set invert the default.

§dynamic_profile_sources: Vec<DynamicProfileSource>

Remote URLs to fetch profile definitions from

§ai_inspector_enabled: bool

Enable AI Inspector side panel

§ai_inspector_open_on_startup: bool

Open the AI Inspector panel automatically on startup

§ai_inspector_width: f32

Width of the AI Inspector panel in pixels

§ai_inspector_default_scope: String

Default capture scope: “visible”, “scrollback”, or “selection”

§ai_inspector_view_mode: String

View mode for inspector results: “cards” or “raw”

§ai_inspector_live_update: bool

Automatically refresh inspector when terminal content changes

§ai_inspector_show_zones: bool

Show semantic zone overlays on terminal content

§ai_inspector_agent: String

AI agent identifier for inspector queries

§ai_inspector_auto_launch: bool

Automatically launch AI agent when inspector opens

§ai_inspector_auto_context: bool

Automatically include terminal context with AI queries

§ai_inspector_context_max_lines: usize

Maximum number of terminal lines to include as AI context

§ai_inspector_auto_approve: bool

Automatically approve AI-suggested actions without confirmation

§ai_inspector_agent_terminal_access: bool

Allow the AI agent to write input to the terminal (drive terminal)

Implementations§

Source§

impl Config

Source

pub fn apply_tab_style(&mut self)

Apply tab style preset, overwriting the tab bar color/size fields.

This is called when the user changes tab_style in settings. The Dark style corresponds to the existing defaults and does nothing.

Source

pub fn load() -> Result<Config, Error>

Load configuration from file or create default

Source

pub fn generate_snippet_action_keybindings(&mut self)

Generate keybindings for snippets and actions that have keybindings configured.

This method adds or updates keybindings for snippets and actions in the keybindings list, using the format “snippet:” for snippets and “action:” for actions. If a keybinding for a snippet/action already exists, it will be updated with the new key.

Source

pub fn save(&self) -> Result<(), Error>

Save configuration to file

Source

pub fn config_path() -> PathBuf

Get the configuration file path (using XDG convention)

Source

pub fn resolve_tmux_path(&self) -> String

Resolve the tmux executable path at runtime. If the configured path is absolute and exists, use it. If it’s “tmux” (the default), search PATH and common installation locations. This handles cases where PATH may be incomplete (e.g., app launched from Finder).

Source

pub fn logs_dir(&self) -> PathBuf

Get the session logs directory path, resolving ~ if present Creates the directory if it doesn’t exist

Source

pub fn shaders_dir() -> PathBuf

Get the shaders directory path (using XDG convention)

Source

pub fn shader_path(shader_name: &str) -> PathBuf

Get the full path to a shader file If the shader path is absolute, returns it as-is Otherwise, resolves it relative to the shaders directory

Source

pub fn resolve_texture_path(path: &str) -> PathBuf

Resolve a texture path, expanding ~ to home directory and resolving relative paths relative to the shaders directory. Returns the expanded path or the original if expansion fails

Source

pub fn shader_channel_paths(&self) -> [Option<PathBuf>; 4]

Get the channel texture paths as an array of Options Returns [channel0, channel1, channel2, channel3] for iChannel0-3

Source

pub fn shader_cubemap_path(&self) -> Option<PathBuf>

Get the cubemap path prefix (resolved) Returns None if not configured, otherwise the resolved path prefix

Source

pub fn with_title(self, title: impl Into<String>) -> Config

Set the window title

Source

pub fn load_theme(&self) -> Theme

Load theme configuration

Source

pub fn apply_system_theme(&mut self, is_dark: bool) -> bool

Apply system theme if auto_dark_mode is enabled. Returns true if the theme was changed.

Source

pub fn apply_system_tab_style(&mut self, is_dark: bool) -> bool

Apply tab style based on system theme when tab_style is Automatic. Returns true if the style was applied.

Source

pub fn get_shader_override(&self, shader_name: &str) -> Option<&ShaderConfig>

Get the user override config for a specific shader (if any)

Source

pub fn get_cursor_shader_override( &self, shader_name: &str, ) -> Option<&CursorShaderConfig>

Get the user override config for a specific cursor shader (if any)

Source

pub fn get_or_create_shader_override( &mut self, shader_name: &str, ) -> &mut ShaderConfig

Get or create a mutable reference to a shader’s config override

Source

pub fn get_or_create_cursor_shader_override( &mut self, shader_name: &str, ) -> &mut CursorShaderConfig

Get or create a mutable reference to a cursor shader’s config override

Source

pub fn remove_shader_override(&mut self, shader_name: &str)

Remove a shader config override (revert to defaults)

Source

pub fn remove_cursor_shader_override(&mut self, shader_name: &str)

Remove a cursor shader config override (revert to defaults)

Source

pub fn should_prompt_shader_install(&self) -> bool

Check if the shaders folder is missing or empty Returns true if user should be prompted to install shaders

Source

pub fn config_dir() -> PathBuf

Get the configuration directory path (using XDG convention)

Source

pub fn shell_integration_dir() -> PathBuf

Get the shell integration directory (same as config dir)

Source

pub fn should_prompt_shell_integration(&self) -> bool

Check if shell integration should be prompted

Source

pub fn should_prompt_shader_install_versioned(&self) -> bool

Check if shaders should be prompted (version-aware logic)

Source

pub fn should_prompt_integrations(&self) -> bool

Check if either integration should be prompted

Source

pub fn get_effective_startup_directory(&self) -> Option<String>

Get the effective startup directory based on configuration mode.

Priority:

  1. Legacy working_directory if set (backward compatibility)
  2. Based on startup_directory_mode:
    • Home: Returns user’s home directory
    • Previous: Returns last_working_directory if valid, else home
    • Custom: Returns startup_directory if set and valid, else home

Returns None if the effective directory doesn’t exist (caller should fall back to default).

Source

pub fn state_file_path() -> PathBuf

Get the state file path for storing session state (like last working directory)

Source

pub fn save_last_working_directory( &mut self, directory: &str, ) -> Result<(), Error>

Save the last working directory to state file

Source

pub fn get_pane_background( &self, index: usize, ) -> Option<(String, BackgroundImageMode, f32, f32)>

Get per-pane background config for a given pane index, if configured Returns (image_path, mode, opacity, darken) tuple for easy conversion to runtime type

Source

pub fn load_last_working_directory(&mut self)

Load the last working directory from state file

Trait Implementations§

Source§

impl Clone for Config

Source§

fn clone(&self) -> Config

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Config

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for Config

Source§

fn default() -> Config

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Config

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<Config, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for Config

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<T> NoneValue for T
where T: Default,

Source§

type NoneType = T

Source§

fn null_value() -> T

The none-equivalent value.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> SerializableAny for T
where T: 'static + Any + Clone + for<'a> Send + Sync,

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,