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: usizeNumber of columns in the terminal
rows: usizeNumber of rows in the terminal
font_size: f32Font size in points
font_family: StringFont 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: f32Line height multiplier (1.0 = tight, 1.2 = default, 1.5 = spacious)
char_spacing: f32Character width multiplier (0.5 = narrow, 0.6 = default, 0.7 = wide)
enable_text_shaping: boolEnable text shaping for ligatures and complex scripts When enabled, uses HarfBuzz for proper ligature, emoji, and complex script rendering
enable_ligatures: boolEnable ligatures (requires enable_text_shaping)
enable_kerning: boolEnable kerning adjustments (requires enable_text_shaping)
font_antialias: boolEnable anti-aliasing for font rendering When false, text is rendered without smoothing (aliased/pixelated)
font_hinting: boolEnable 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: ThinStrokesModeThin 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: f32Minimum 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: StringWindow title
allow_title_change: boolAllow applications to change the window title via OSC escape sequences When false, the window title will always be the configured window_title
max_fps: u32Maximum 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: VsyncModeVSync 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: PowerPreferenceGPU 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: boolReduce 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: u32Maximum 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: boolEnable 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: u32Render interval in milliseconds when maximize_throughput is enabled. Higher values = better throughput but delayed display. Range: 50-500ms.
window_padding: f32Window padding in pixels
hide_window_padding_on_split: boolAutomatically hide window padding when panes are split When true (default), window padding becomes 0 when the active tab has multiple panes
window_opacity: f32Window opacity/transparency (0.0 = fully transparent, 1.0 = fully opaque)
window_always_on_top: boolKeep window always on top of other windows
window_decorations: boolShow window decorations (title bar, borders)
window_type: WindowTypeWindow 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: boolLock window size to prevent resize When true, the window cannot be resized by the user
show_window_number: boolShow window number in title bar Useful when multiple par-term windows are open
transparency_affects_only_default_background: boolWhen 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: boolWhen 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: boolEnable window blur effect (macOS only) Blurs content behind the transparent window for better readability
blur_radius: u32Blur 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: boolEnable or disable background image rendering (even if a path is set)
background_image_mode: BackgroundImageModeBackground 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: f32Background image opacity (0.0 = fully transparent, 1.0 = fully opaque)
image_scaling_mode: ImageScalingModeScaling quality for inline images (nearest = sharp/pixel art, linear = smooth)
image_preserve_aspect_ratio: boolPreserve aspect ratio when scaling inline images to fit terminal cells
background_mode: BackgroundModeBackground 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: DownloadSaveLocationDefault 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: boolEnable or disable the custom shader (even if a path is set)
custom_shader_animation: boolEnable animation in custom shader (updates iTime uniform each frame) When disabled, iTime is fixed at 0.0 for static effects
custom_shader_animation_speed: f32Animation speed multiplier for custom shader (1.0 = normal speed)
custom_shader_text_opacity: f32Text 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: boolWhen 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: f32Brightness 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: boolEnable 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: boolUse 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: boolEnable or disable the cursor shader (even if a path is set)
cursor_shader_animation: boolEnable animation in cursor shader (updates iTime uniform each frame)
cursor_shader_animation_speed: f32Animation 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: f32Duration of cursor trail effect in seconds Passed to shader via iCursorTrailDuration uniform
cursor_shader_glow_radius: f32Radius of cursor glow effect in pixels Passed to shader via iCursorGlowRadius uniform
cursor_shader_glow_intensity: f32Intensity of cursor glow effect (0.0 = none, 1.0 = full) Passed to shader via iCursorGlowIntensity uniform
cursor_shader_hides_cursor: boolHide 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: boolDisable cursor shader while in alt screen (vim, less, htop) Keeps current behavior by default for TUI compatibility
left_option_key_mode: OptionKeyModeLeft 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: OptionKeyModeRight 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: ModifierRemappingModifier key remapping configuration Allows remapping modifier keys to different functions (e.g., swap Ctrl and Caps Lock)
use_physical_keys: boolUse 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: boolAutomatically copy selected text to clipboard
copy_trailing_newline: boolInclude trailing newline when copying lines Note: Inverted logic from old strip_trailing_newline_on_copy
middle_click_paste: boolPaste on middle mouse button click
paste_delay_ms: u64Delay 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: DroppedFileQuoteStyleQuote 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: f32Mouse wheel scroll speed multiplier
mouse_double_click_threshold: u64Double-click timing threshold in milliseconds
mouse_triple_click_threshold: u64Triple-click timing threshold in milliseconds (typically same as double-click)
option_click_moves_cursor: boolOption+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: boolFocus window automatically when mouse enters (without requiring a click) This is an accessibility feature that some users prefer
report_horizontal_scroll: boolReport 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: StringCharacters 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: boolEnable 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: boolEnable 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: boolAutomatically 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: boolShow 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: usizeMaximum number of lines to keep in scrollback buffer
unicode_version: UnicodeVersionUnicode 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: AmbiguousWidthTreatment of East Asian Ambiguous width characters
- narrow: 1 cell width (Western default)
- wide: 2 cell width (CJK default)
normalization_form: NormalizationFormUnicode 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: boolEnable cursor blinking
cursor_blink_interval: u64Cursor blink interval in milliseconds
cursor_style: CursorStyleCursor 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: boolLock cursor visibility - prevent applications from hiding the cursor When true, the cursor remains visible regardless of DECTCEM escape sequences
lock_cursor_style: boolLock 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: boolLock cursor blink - prevent applications from enabling cursor blink When true and cursor_blink is false, applications cannot enable blinking cursor
cursor_guide_enabled: boolEnable 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: boolEnable 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: f32Cursor shadow blur radius in pixels
cursor_boost: f32Cursor 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: UnfocusedCursorStyleCursor 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: u64Auto-hide scrollbar after inactivity (milliseconds, 0 = never hide)
theme: StringColor theme name to use for terminal colors
auto_dark_mode: boolAutomatically switch theme based on system light/dark mode
light_theme: StringTheme to use when system is in light mode (used when auto_dark_mode is true)
dark_theme: StringTheme to use when system is in dark mode (used when auto_dark_mode is true)
screenshot_format: StringFile format for screenshots (png, jpeg, svg, html)
shell_exit_action: ShellExitActionAction 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: StartupDirectoryModeStartup 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: boolWhether 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: StringText 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: u64Delay in milliseconds before sending the initial text (to allow shell to be ready)
initial_text_send_newline: boolWhether to append a newline after sending the initial text
answerback_string: StringAnswerback 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: boolShow 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: boolShow 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: boolEnable 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: SemanticHistoryEditorModeEditor selection mode for semantic history
custom- Use the editor command specified insemantic_history_editorenvironment_variable- Use$EDITORor$VISUALenvironment variable (default)system_default- Use system default application for each file type
semantic_history_editor: StringEditor 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: boolUnderline highlighted links (URLs and file paths)
link_underline_style: LinkUnderlineStyleStyle for link highlight underlines (solid or stipple)
link_handler_command: StringCustom 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: StringScrollbar position (left or right)
scrollbar_width: f32Scrollbar 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: boolShow command markers on the scrollbar (requires shell integration)
scrollbar_mark_tooltips: boolShow tooltips when hovering over scrollbar command markers
command_separator_enabled: boolShow horizontal separator lines between commands (requires shell integration)
command_separator_thickness: f32Thickness of command separator lines in pixels
command_separator_opacity: f32Opacity of command separator lines (0.0-1.0)
command_separator_exit_color: boolColor 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: usizeMaximum clipboard sync events retained for diagnostics
clipboard_max_event_bytes: usizeMaximum bytes stored per clipboard sync event
command_history_max_entries: usizeMaximum number of commands to persist in fuzzy search history
notification_bell_desktop: boolForward BEL events to desktop notification centers
notification_bell_sound: u8Volume (0-100) for backend bell sound alerts (0 disables)
notification_bell_visual: boolEnable backend visual bell overlay
notification_activity_enabled: boolEnable notifications when activity resumes after inactivity
notification_activity_threshold: u64Seconds of inactivity required before an activity alert fires
anti_idle_enabled: boolEnable anti-idle keep-alive (sends code after idle period)
anti_idle_seconds: u64Seconds of inactivity before sending keep-alive code
anti_idle_code: u8ASCII code to send as keep-alive (e.g., 0 = NUL, 27 = ESC)
notification_silence_enabled: boolEnable notifications after prolonged silence
notification_silence_threshold: u64Seconds of silence before a silence alert fires
notification_session_ended: boolEnable notification when a shell/session exits
suppress_notifications_when_focused: boolSuppress desktop notifications when the terminal window is focused
notification_max_buffer: usizeMaximum 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: boolEnable mDNS/Bonjour discovery for SSH hosts
mdns_scan_timeout_secs: u32mDNS scan timeout in seconds
ssh_auto_profile_switch: boolEnable automatic profile switching based on SSH hostname
ssh_revert_profile_on_disconnect: boolRevert profile when SSH session disconnects
tab_style: TabStyleTab visual style preset (dark, light, compact, minimal, high_contrast, automatic) Applies cosmetic color/size/spacing presets to the tab bar
light_tab_style: TabStyleTab style to use when system is in light mode (used when tab_style is Automatic)
dark_tab_style: TabStyleTab style to use when system is in dark mode (used when tab_style is Automatic)
tab_bar_mode: TabBarModeTab bar visibility mode (always, when_multiple, never)
tab_bar_height: f32Tab bar height in pixels
tab_bar_position: TabBarPositionTab bar position (top, bottom, left)
tab_bar_width: f32Tab bar width in pixels (used when tab_bar_position is Left)
Show close button on tabs
tab_show_index: boolShow tab index numbers (for Cmd+1-9)
tab_inherit_cwd: boolNew tab inherits working directory from active tab
max_tabs: usizeMaximum tabs per window (0 = unlimited)
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: boolWhen 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)
Close button color [R, G, B] (0-255)
Close button hover color [R, G, B] (0-255)
dim_inactive_tabs: boolEnable visual dimming of inactive tabs When true, inactive tabs are rendered with reduced opacity
inactive_tab_opacity: f32Opacity 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: f32Minimum tab width in pixels before horizontal scrolling is enabled When tabs cannot fit at this width, scroll buttons appear
tab_stretch_to_fill: boolStretch 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: boolRender 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: f32Tab border width in pixels (0 = no border)
tab_inactive_outline_only: boolRender 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: f32Width 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: f32Padding inside panes in pixels (space between content and border/divider)
pane_min_size: usizeMinimum pane size in cells (columns for horizontal splits, rows for vertical) Prevents panes from being resized too small to be useful
pane_background_opacity: f32Pane 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: boolEnable visual dimming of inactive panes
inactive_pane_opacity: f32Opacity level for inactive panes (0.0-1.0)
show_pane_titles: boolShow title bar on each pane
pane_title_height: f32Height of pane title bars in pixels
pane_title_position: PaneTitlePositionPosition 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: StringPane title font family (empty string = use terminal font)
pane_divider_style: DividerStyleStyle of dividers between panes (solid, double, dashed, shadow)
max_panes: usizeMaximum panes per tab (0 = unlimited)
pane_focus_indicator: boolShow 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: f32Width of the focused pane indicator border in pixels
tmux_enabled: boolEnable tmux control mode integration
tmux_path: StringPath to tmux executable (default: “tmux” - uses PATH)
tmux_default_session: Option<String>Default session name when creating new tmux sessions
tmux_auto_attach: boolAuto-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: boolSync 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: boolShow 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: u64Tmux 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: StringTmux 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: boolUse 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: StringTmux 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: StringTmux status bar right side format string.
Same variables as tmux_status_bar_left.
Default: {pane} | {time:%H:%M}
pause_shaders_on_blur: boolPause shader animations when window loses focus This reduces GPU usage when the terminal is not actively being viewed
pause_refresh_on_blur: boolReduce refresh rate when window is not focused When true, uses unfocused_fps instead of max_fps when window is blurred
unfocused_fps: u32Target 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: boolEnable automatic shader reloading when shader files are modified This watches custom_shader and cursor_shader files for changes
shader_hot_reload_delay: u64Debounce 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: ShaderInstallPromptShader 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: InstallPromptStateShell integration install state
integration_versions: IntegrationVersionsVersion tracking for integrations
update_check_frequency: UpdateCheckFrequencyHow 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: boolWhether to restore the previous session (tabs, panes, CWDs) on startup
session_undo_timeout_secs: u32Seconds to keep closed tab metadata for undo (0 = disabled)
session_undo_max_entries: usizeMaximum number of closed tabs to remember for undo
session_undo_preserve_shell: boolWhen 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: boolDefault case sensitivity for search
search_regex: boolDefault regex mode for search
search_wrap_around: boolWrap around when navigating search matches
auto_log_sessions: boolAutomatically record all terminal sessions When enabled, all terminal output is logged to files in the log directory
session_log_format: SessionLogFormatLog 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: StringDirectory where session logs are saved Default: ~/.local/share/par-term/logs/
archive_on_close: boolAutomatically save session log when tab/window closes When true, ensures the session is fully written before the tab closes
log_level: LogLevelLog 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: boolEnable badge display
badge_format: StringBadge 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: f32Badge opacity (0.0-1.0)
badge_font: StringBadge font family (uses system font if not found)
badge_font_bold: boolUse bold weight for badge font
badge_top_margin: f32Top margin in pixels from terminal edge
badge_right_margin: f32Right margin in pixels from terminal edge
badge_max_width: f32Maximum badge width as fraction of terminal width (0.0-1.0)
badge_max_height: f32Maximum badge height as fraction of terminal height (0.0-1.0)
status_bar_enabled: boolEnable the status bar
status_bar_position: StatusBarPositionStatus bar position (top or bottom)
status_bar_height: f32Status bar height in pixels
status_bar_bg_color: [u8; 3]Status bar background color [R, G, B] (0-255)
status_bar_bg_alpha: f32Status 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: StringStatus bar font family (empty string = use terminal font)
status_bar_font_size: f32Status bar font size in points
status_bar_separator: StringSeparator string between widgets
status_bar_auto_hide_fullscreen: boolAuto-hide the status bar when in fullscreen mode
status_bar_auto_hide_mouse_inactive: boolAuto-hide the status bar when mouse is inactive
status_bar_mouse_inactive_timeout: f32Timeout in seconds before hiding status bar after last mouse activity
status_bar_system_poll_interval: f32Polling interval in seconds for system monitor data (CPU, memory, network)
status_bar_git_poll_interval: f32Polling interval in seconds for git branch detection
status_bar_time_format: StringTime format string for the Clock widget (chrono strftime syntax)
status_bar_git_show_status: boolShow ahead/behind and dirty indicators on the Git Branch widget
status_bar_widgets: Vec<StatusBarWidgetConfig>Widget configuration list
progress_bar_enabled: boolEnable progress bar overlay When enabled, progress bars from OSC 9;4 and OSC 934 sequences are displayed
progress_bar_style: ProgressBarStyleProgress bar visual style
- bar: Simple thin bar (default)
- bar_with_text: Bar with percentage text and labels
progress_bar_position: ProgressBarPositionProgress bar position
- bottom: Display at the bottom of the terminal (default)
- top: Display at the top of the terminal
progress_bar_height: f32Progress bar height in pixels
progress_bar_opacity: f32Progress 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: boolEnable AI Inspector side panel
ai_inspector_open_on_startup: boolOpen the AI Inspector panel automatically on startup
ai_inspector_width: f32Width of the AI Inspector panel in pixels
ai_inspector_default_scope: StringDefault capture scope: “visible”, “scrollback”, or “selection”
ai_inspector_view_mode: StringView mode for inspector results: “cards” or “raw”
ai_inspector_live_update: boolAutomatically refresh inspector when terminal content changes
ai_inspector_show_zones: boolShow semantic zone overlays on terminal content
ai_inspector_agent: StringAI agent identifier for inspector queries
ai_inspector_auto_launch: boolAutomatically launch AI agent when inspector opens
ai_inspector_auto_context: boolAutomatically include terminal context with AI queries
ai_inspector_context_max_lines: usizeMaximum number of terminal lines to include as AI context
ai_inspector_auto_approve: boolAutomatically approve AI-suggested actions without confirmation
ai_inspector_agent_terminal_access: boolAllow the AI agent to write input to the terminal (drive terminal)
Implementations§
Source§impl Config
impl Config
Sourcepub fn apply_tab_style(&mut self)
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.
Sourcepub fn generate_snippet_action_keybindings(&mut self)
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:
Sourcepub fn config_path() -> PathBuf
pub fn config_path() -> PathBuf
Get the configuration file path (using XDG convention)
Sourcepub fn resolve_tmux_path(&self) -> String
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).
Sourcepub fn logs_dir(&self) -> PathBuf
pub fn logs_dir(&self) -> PathBuf
Get the session logs directory path, resolving ~ if present Creates the directory if it doesn’t exist
Sourcepub fn shaders_dir() -> PathBuf
pub fn shaders_dir() -> PathBuf
Get the shaders directory path (using XDG convention)
Sourcepub fn shader_path(shader_name: &str) -> PathBuf
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
Sourcepub fn resolve_texture_path(path: &str) -> PathBuf
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
Sourcepub fn shader_channel_paths(&self) -> [Option<PathBuf>; 4]
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
Sourcepub fn shader_cubemap_path(&self) -> Option<PathBuf>
pub fn shader_cubemap_path(&self) -> Option<PathBuf>
Get the cubemap path prefix (resolved) Returns None if not configured, otherwise the resolved path prefix
Sourcepub fn with_title(self, title: impl Into<String>) -> Config
pub fn with_title(self, title: impl Into<String>) -> Config
Set the window title
Sourcepub fn load_theme(&self) -> Theme
pub fn load_theme(&self) -> Theme
Load theme configuration
Sourcepub fn apply_system_theme(&mut self, is_dark: bool) -> bool
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.
Sourcepub fn apply_system_tab_style(&mut self, is_dark: bool) -> bool
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.
Sourcepub fn get_shader_override(&self, shader_name: &str) -> Option<&ShaderConfig>
pub fn get_shader_override(&self, shader_name: &str) -> Option<&ShaderConfig>
Get the user override config for a specific shader (if any)
Sourcepub fn get_cursor_shader_override(
&self,
shader_name: &str,
) -> Option<&CursorShaderConfig>
pub fn get_cursor_shader_override( &self, shader_name: &str, ) -> Option<&CursorShaderConfig>
Get the user override config for a specific cursor shader (if any)
Sourcepub fn get_or_create_shader_override(
&mut self,
shader_name: &str,
) -> &mut ShaderConfig
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
Sourcepub fn get_or_create_cursor_shader_override(
&mut self,
shader_name: &str,
) -> &mut CursorShaderConfig
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
Sourcepub fn remove_shader_override(&mut self, shader_name: &str)
pub fn remove_shader_override(&mut self, shader_name: &str)
Remove a shader config override (revert to defaults)
Sourcepub fn remove_cursor_shader_override(&mut self, shader_name: &str)
pub fn remove_cursor_shader_override(&mut self, shader_name: &str)
Remove a cursor shader config override (revert to defaults)
Sourcepub fn should_prompt_shader_install(&self) -> bool
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
Sourcepub fn config_dir() -> PathBuf
pub fn config_dir() -> PathBuf
Get the configuration directory path (using XDG convention)
Sourcepub fn shell_integration_dir() -> PathBuf
pub fn shell_integration_dir() -> PathBuf
Get the shell integration directory (same as config dir)
Sourcepub fn should_prompt_shell_integration(&self) -> bool
pub fn should_prompt_shell_integration(&self) -> bool
Check if shell integration should be prompted
Sourcepub fn should_prompt_shader_install_versioned(&self) -> bool
pub fn should_prompt_shader_install_versioned(&self) -> bool
Check if shaders should be prompted (version-aware logic)
Sourcepub fn should_prompt_integrations(&self) -> bool
pub fn should_prompt_integrations(&self) -> bool
Check if either integration should be prompted
Sourcepub fn get_effective_startup_directory(&self) -> Option<String>
pub fn get_effective_startup_directory(&self) -> Option<String>
Get the effective startup directory based on configuration mode.
Priority:
- Legacy
working_directoryif set (backward compatibility) - Based on
startup_directory_mode:- Home: Returns user’s home directory
- Previous: Returns
last_working_directoryif valid, else home - Custom: Returns
startup_directoryif set and valid, else home
Returns None if the effective directory doesn’t exist (caller should fall back to default).
Sourcepub fn state_file_path() -> PathBuf
pub fn state_file_path() -> PathBuf
Get the state file path for storing session state (like last working directory)
Sourcepub fn save_last_working_directory(
&mut self,
directory: &str,
) -> Result<(), Error>
pub fn save_last_working_directory( &mut self, directory: &str, ) -> Result<(), Error>
Save the last working directory to state file
Sourcepub fn get_pane_background(
&self,
index: usize,
) -> Option<(String, BackgroundImageMode, f32, f32)>
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
Sourcepub fn load_last_working_directory(&mut self)
pub fn load_last_working_directory(&mut self)
Load the last working directory from state file
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Config
impl<'de> Deserialize<'de> for Config
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Config, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Config, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for Config
impl Serialize for Config
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnsafeUnpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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
impl<T> DowncastSync for T
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().