use std::collections::HashMap;
use crate::types::{
BackgroundImageMode, BackgroundMode, DividerStyle, DroppedFileQuoteStyle, ImageScalingMode,
InstallPromptState, IntegrationVersions, LogLevel, ModifierRemapping, NewTabPosition,
OptionKeyMode, PaneTitlePosition, PowerPreference, ProgressBarPosition, ProgressBarStyle,
RemoteTabTitleFormat, SemanticHistoryEditorMode, SessionLogFormat, ShaderInstallPrompt,
ShellExitAction, TabBarMode, TabBarPosition, TabStyle, TabTitleMode, VsyncMode, WindowType,
default_smart_selection_rules,
};
use super::{
AiInspectorConfig, Config, CopyModeConfig, CursorConfig, FontRenderingConfig,
GlobalShaderConfig, MouseConfig, NotificationConfig, ScrollbackConfig, SearchConfig, SshConfig,
StatusBarConfig, UnicodeConfig, WindowConfig,
};
impl Default for Config {
fn default() -> Self {
Self {
cols: crate::defaults::cols(),
rows: crate::defaults::rows(),
font_size: crate::defaults::font_size(),
font_family: crate::defaults::font_family(),
font_family_bold: None,
font_family_italic: None,
font_family_bold_italic: None,
font_ranges: Vec::new(),
line_spacing: crate::defaults::line_spacing(),
char_spacing: crate::defaults::char_spacing(),
enable_text_shaping: crate::defaults::text_shaping(),
enable_ligatures: crate::defaults::bool_true(),
enable_kerning: crate::defaults::bool_true(),
font_rendering: FontRenderingConfig::default(),
copy_mode: CopyModeConfig::default(),
scrollback: ScrollbackConfig::default(),
unicode: UnicodeConfig::default(),
cursor: CursorConfig::default(),
scrollbar_autohide_delay: crate::defaults::scrollbar_autohide_delay(),
window_title: crate::defaults::window_title(),
allow_title_change: crate::defaults::bool_true(),
theme: crate::defaults::theme(),
auto_dark_mode: false,
light_theme: crate::defaults::light_theme(),
dark_theme: crate::defaults::dark_theme(),
left_option_key_mode: OptionKeyMode::default(),
right_option_key_mode: OptionKeyMode::default(),
modifier_remapping: ModifierRemapping::default(),
use_physical_keys: crate::defaults::bool_false(),
auto_copy_selection: crate::defaults::bool_true(),
copy_trailing_newline: crate::defaults::bool_false(),
middle_click_paste: crate::defaults::bool_true(),
paste_delay_ms: crate::defaults::paste_delay_ms(),
warn_paste_control_chars: crate::defaults::bool_true(),
dropped_file_quote_style: DroppedFileQuoteStyle::default(),
mouse: MouseConfig::default(),
word_characters: crate::defaults::word_characters(),
smart_selection_enabled: crate::defaults::smart_selection_enabled(),
smart_selection_rules: default_smart_selection_rules(),
screenshot_format: crate::defaults::screenshot_format(),
max_fps: crate::defaults::max_fps(),
vsync_mode: VsyncMode::default(),
power_preference: PowerPreference::default(),
reduce_flicker: crate::defaults::reduce_flicker(),
reduce_flicker_delay_ms: crate::defaults::reduce_flicker_delay_ms(),
maximize_throughput: crate::defaults::maximize_throughput(),
throughput_render_interval_ms: crate::defaults::throughput_render_interval_ms(),
window: WindowConfig::default(),
window_type: WindowType::default(),
target_monitor: None,
target_space: None,
lock_window_size: crate::defaults::bool_false(),
show_window_number: crate::defaults::bool_false(),
transparency_affects_only_default_background: crate::defaults::bool_true(),
keep_text_opaque: crate::defaults::bool_true(),
background_image: None,
background_image_enabled: crate::defaults::bool_true(),
background_image_mode: BackgroundImageMode::default(),
background_image_opacity: crate::defaults::background_image_opacity(),
image_scaling_mode: ImageScalingMode::default(),
image_preserve_aspect_ratio: crate::defaults::bool_true(),
background_mode: BackgroundMode::default(),
pane_backgrounds: Vec::new(),
background_color: crate::defaults::background_color(),
download_save_location: crate::types::DownloadSaveLocation::default(),
last_download_directory: None,
shader: GlobalShaderConfig::default(),
shell_exit_action: ShellExitAction::default(),
custom_shell: None,
shell_args: None,
working_directory: None,
startup_directory_mode: crate::types::StartupDirectoryMode::default(),
startup_directory: None,
last_working_directory: None,
shell_env: None,
login_shell: crate::defaults::login_shell(),
initial_text: crate::defaults::initial_text(),
initial_text_delay_ms: crate::defaults::initial_text_delay_ms(),
initial_text_send_newline: crate::defaults::initial_text_send_newline(),
answerback_string: crate::defaults::answerback_string(),
prompt_on_quit: crate::defaults::bool_false(),
confirm_close_running_jobs: crate::defaults::bool_false(),
jobs_to_ignore: crate::defaults::jobs_to_ignore(),
semantic_history_enabled: crate::defaults::bool_true(),
semantic_history_editor_mode: SemanticHistoryEditorMode::default(),
semantic_history_editor: crate::defaults::semantic_history_editor(),
link_highlight_color: crate::defaults::link_highlight_color(),
link_highlight_color_enabled: crate::defaults::bool_true(),
link_highlight_underline: crate::defaults::bool_true(),
link_underline_style: crate::types::LinkUnderlineStyle::default(),
link_handler_command: String::new(),
scrollbar_position: crate::defaults::scrollbar_position(),
scrollbar_width: crate::defaults::scrollbar_width(),
scrollbar_thumb_color: crate::defaults::scrollbar_thumb_color(),
scrollbar_track_color: crate::defaults::scrollbar_track_color(),
scrollbar_command_marks: crate::defaults::bool_true(),
scrollbar_mark_tooltips: crate::defaults::bool_false(),
command_separator_enabled: crate::defaults::bool_false(),
command_separator_thickness: crate::defaults::command_separator_thickness(),
command_separator_opacity: crate::defaults::command_separator_opacity(),
command_separator_exit_color: crate::defaults::bool_true(),
command_separator_color: crate::defaults::command_separator_color(),
clipboard_max_sync_events: crate::defaults::clipboard_max_sync_events(),
clipboard_max_event_bytes: crate::defaults::clipboard_max_event_bytes(),
command_history_max_entries: crate::defaults::command_history_max_entries(),
notifications: NotificationConfig::default(),
ssh: SshConfig::default(),
tab_style: TabStyle::default(),
light_tab_style: crate::defaults::light_tab_style(),
dark_tab_style: crate::defaults::dark_tab_style(),
tab_bar_mode: TabBarMode::default(),
tab_title_mode: TabTitleMode::default(),
remote_tab_title_format: RemoteTabTitleFormat::default(),
remote_tab_title_osc_priority: true,
tab_bar_height: crate::defaults::tab_bar_height(),
tab_bar_position: TabBarPosition::default(),
tab_bar_width: crate::defaults::tab_bar_width(),
tab_show_close_button: crate::defaults::bool_true(),
tab_show_index: crate::defaults::bool_false(),
tab_inherit_cwd: crate::defaults::bool_true(),
max_tabs: crate::defaults::zero(),
show_profile_drawer_button: crate::defaults::bool_false(),
new_tab_shortcut_shows_profiles: crate::defaults::bool_false(),
new_tab_position: NewTabPosition::default(),
tab_bar_background: crate::defaults::tab_bar_background(),
tab_active_background: crate::defaults::tab_active_background(),
tab_inactive_background: crate::defaults::tab_inactive_background(),
tab_hover_background: crate::defaults::tab_hover_background(),
tab_active_text: crate::defaults::tab_active_text(),
tab_inactive_text: crate::defaults::tab_inactive_text(),
tab_active_indicator: crate::defaults::tab_active_indicator(),
tab_activity_indicator: crate::defaults::tab_activity_indicator(),
tab_bell_indicator: crate::defaults::tab_bell_indicator(),
tab_close_button: crate::defaults::tab_close_button(),
tab_close_button_hover: crate::defaults::tab_close_button_hover(),
dim_inactive_tabs: crate::defaults::bool_true(),
inactive_tab_opacity: crate::defaults::inactive_tab_opacity(),
tab_min_width: crate::defaults::tab_min_width(),
tab_stretch_to_fill: crate::defaults::tab_stretch_to_fill(),
tab_html_titles: crate::defaults::tab_html_titles(),
tab_border_color: crate::defaults::tab_border_color(),
tab_border_width: crate::defaults::tab_border_width(),
tab_inactive_outline_only: crate::defaults::bool_true(),
pane_divider_width: crate::defaults::pane_divider_width(),
pane_divider_hit_width: crate::defaults::pane_divider_hit_width(),
pane_padding: crate::defaults::pane_padding(),
pane_min_size: crate::defaults::pane_min_size(),
pane_background_opacity: crate::defaults::pane_background_opacity(),
pane_divider_color: crate::defaults::pane_divider_color(),
pane_divider_hover_color: crate::defaults::pane_divider_hover_color(),
dim_inactive_panes: crate::defaults::bool_false(),
inactive_pane_opacity: crate::defaults::inactive_pane_opacity(),
show_pane_titles: crate::defaults::bool_false(),
pane_title_height: crate::defaults::pane_title_height(),
pane_title_position: PaneTitlePosition::default(),
pane_title_color: crate::defaults::pane_title_color(),
pane_title_bg_color: crate::defaults::pane_title_bg_color(),
pane_title_font: String::new(),
pane_divider_style: DividerStyle::default(),
max_panes: crate::defaults::max_panes(),
pane_focus_indicator: crate::defaults::bool_true(),
pane_focus_color: crate::defaults::pane_focus_color(),
pane_focus_width: crate::defaults::pane_focus_width(),
tmux_enabled: crate::defaults::bool_false(),
tmux_path: crate::defaults::tmux_path(),
tmux_default_session: crate::defaults::tmux_default_session(),
tmux_auto_attach: crate::defaults::bool_false(),
tmux_auto_attach_session: crate::defaults::tmux_auto_attach_session(),
tmux_clipboard_sync: crate::defaults::bool_true(),
tmux_hide_gateway_tab: crate::defaults::bool_false(),
tmux_profile: None,
tmux_show_status_bar: crate::defaults::bool_false(),
tmux_status_bar_refresh_ms: crate::defaults::tmux_status_bar_refresh_ms(),
tmux_prefix_key: crate::defaults::tmux_prefix_key(),
tmux_status_bar_use_native_format: crate::defaults::bool_false(),
tmux_status_bar_left: crate::defaults::tmux_status_bar_left(),
tmux_status_bar_right: crate::defaults::tmux_status_bar_right(),
pause_shaders_on_blur: crate::defaults::bool_true(),
pause_refresh_on_blur: crate::defaults::bool_true(),
unfocused_fps: crate::defaults::unfocused_fps(),
inactive_tab_fps: crate::defaults::inactive_tab_fps(),
shader_hot_reload: crate::defaults::bool_false(),
shader_hot_reload_delay: crate::defaults::shader_hot_reload_delay(),
shader_configs: HashMap::new(),
cursor_shader_configs: HashMap::new(),
keybindings: crate::defaults::keybindings(),
custom_action_prefix_key: crate::defaults::custom_action_prefix_key(),
shader_install_prompt: ShaderInstallPrompt::default(),
shell_integration_state: InstallPromptState::default(),
integration_versions: IntegrationVersions::default(),
updates: crate::config::config_struct::UpdateConfig::default(),
auto_restore_arrangement: None,
restore_session: crate::defaults::bool_false(),
session_undo_timeout_secs: crate::defaults::session_undo_timeout_secs(),
session_undo_max_entries: crate::defaults::session_undo_max_entries(),
session_undo_preserve_shell: crate::defaults::session_undo_preserve_shell(),
search: SearchConfig::default(),
auto_log_sessions: crate::defaults::bool_false(),
session_log_format: SessionLogFormat::default(),
session_log_directory: crate::defaults::session_log_directory(),
archive_on_close: crate::defaults::bool_true(),
session_log_redact_passwords: crate::defaults::bool_true(),
log_level: LogLevel::default(),
badge_enabled: crate::defaults::bool_false(),
badge_format: crate::defaults::badge_format(),
badge_color: crate::defaults::badge_color(),
badge_color_alpha: crate::defaults::badge_color_alpha(),
badge_font: crate::defaults::badge_font(),
badge_font_bold: crate::defaults::bool_true(),
badge_top_margin: crate::defaults::badge_top_margin(),
badge_right_margin: crate::defaults::badge_right_margin(),
badge_max_width: crate::defaults::badge_max_width(),
badge_max_height: crate::defaults::badge_max_height(),
status_bar: StatusBarConfig::default(),
progress_bar_enabled: crate::defaults::bool_true(),
progress_bar_style: ProgressBarStyle::default(),
progress_bar_position: ProgressBarPosition::default(),
progress_bar_height: crate::defaults::progress_bar_height(),
progress_bar_opacity: crate::defaults::progress_bar_opacity(),
progress_bar_normal_color: crate::defaults::progress_bar_normal_color(),
progress_bar_warning_color: crate::defaults::progress_bar_warning_color(),
progress_bar_error_color: crate::defaults::progress_bar_error_color(),
progress_bar_indeterminate_color: crate::defaults::progress_bar_indeterminate_color(),
triggers: Vec::new(),
coprocesses: Vec::new(),
scripts: Vec::new(),
snippets: Vec::new(),
actions: Vec::new(),
collapsed_settings_sections: Vec::new(),
dynamic_profile_sources: Vec::new(),
allow_all_env_vars: crate::defaults::bool_false(),
allow_http_profiles: crate::defaults::bool_false(),
ai_inspector: AiInspectorConfig::default(),
insecure_trigger_names: Vec::new(),
unaccepted_risk_trigger_names: Vec::new(),
}
}
}