Add ability to select a default profile. (#144)

* add default profile

* check profile

* default profiles add translations

* default profiles check for profile removal
This commit is contained in:
leb-kuchen 2024-02-26 04:47:52 +01:00 • committed by GitHub
parent 1b0d018e43
commit d4f1e1cd12
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 28 additions and 2 deletions

View file

@ -18,6 +18,7 @@ tab-title = Tab title
tab-title-description = Override the default tab title tab-title-description = Override the default tab title
add-profile = Add profile add-profile = Add profile
new-profile = New profile new-profile = New profile
make-default = Make default
## Settings ## Settings
settings = Settings settings = Settings

View file

@ -219,6 +219,7 @@ pub struct Config {
pub syntax_theme_dark: String, pub syntax_theme_dark: String,
pub syntax_theme_light: String, pub syntax_theme_light: String,
pub focus_follow_mouse: bool, pub focus_follow_mouse: bool,
pub default_profile: Option<ProfileId>,
} }
impl Default for Config { impl Default for Config {
@ -241,6 +242,7 @@ impl Default for Config {
syntax_theme_dark: "COSMIC Dark".to_string(), syntax_theme_dark: "COSMIC Dark".to_string(),
syntax_theme_light: "COSMIC Light".to_string(), syntax_theme_light: "COSMIC Light".to_string(),
use_bright_bold: false, use_bright_bold: false,
default_profile: None,
} }
} }
} }

View file

@ -322,6 +322,7 @@ pub enum Message {
ZoomOut, ZoomOut,
ZoomReset, ZoomReset,
FocusFollowMouse(bool), FocusFollowMouse(bool),
UpdateDefaultProfile((bool, ProfileId)),
} }
#[derive(Clone, Copy, Debug, Eq, PartialEq)] #[derive(Clone, Copy, Debug, Eq, PartialEq)]
@ -855,6 +856,15 @@ impl App {
}, },
), ),
), ),
)
.add(
widget::settings::item::builder(fl!("make-default")).control(
widget::toggler(
"".to_string(),
self.get_default_profile().is_some_and(|p| p == profile_id),
move |t| Message::UpdateDefaultProfile((t, profile_id)),
),
),
); );
let padding = Padding { let padding = Padding {
@ -1074,6 +1084,9 @@ impl App {
]) ])
.into() .into()
} }
fn get_default_profile(&self) -> Option<ProfileId> {
self.config.default_profile
}
fn create_and_focus_new_terminal( fn create_and_focus_new_terminal(
&mut self, &mut self,
@ -1398,6 +1411,9 @@ impl Application for App {
} }
match message { match message {
Message::UpdateDefaultProfile((default, profile_id)) => {
config_set!(default_profile, default.then_some(profile_id));
}
Message::AppTheme(app_theme) => { Message::AppTheme(app_theme) => {
self.config.app_theme = app_theme; self.config.app_theme = app_theme;
return self.save_config(); return self.save_config();
@ -1761,7 +1777,8 @@ impl Application for App {
); );
if let Some((pane, _)) = result { if let Some((pane, _)) = result {
self.terminal_ids.insert(pane, widget::Id::unique()); self.terminal_ids.insert(pane, widget::Id::unique());
let command = self.create_and_focus_new_terminal(pane, None); let command =
self.create_and_focus_new_terminal(pane, self.get_default_profile());
self.pane_model.panes_created += 1; self.pane_model.panes_created += 1;
return command; return command;
} }
@ -1852,6 +1869,9 @@ impl Application for App {
} }
} }
} }
if Some(profile_id) == self.get_default_profile() {
config_set!(default_profile, None);
}
self.config.profiles.remove(&profile_id); self.config.profiles.remove(&profile_id);
return self.save_profiles(); return self.save_profiles();
} }
@ -2026,7 +2046,10 @@ impl Application for App {
return self.update_title(Some(pane)); return self.update_title(Some(pane));
} }
Message::TabNew => { Message::TabNew => {
return self.create_and_focus_new_terminal(self.pane_model.focus, None) return self.create_and_focus_new_terminal(
self.pane_model.focus,
self.get_default_profile(),
)
} }
Message::TabNext => { Message::TabNext => {
if let Some(tab_model) = self.pane_model.active() { if let Some(tab_model) = self.pane_model.active() {