Detailed changes
@@ -472,6 +472,10 @@
// Can also be 'csh', 'fish', and `nushell`
"activate_script": "default"
}
+ },
+ "toolbar": {
+ // Whether to display the terminal title in its toolbar.
+ "title": true
}
// Set the terminal's font size. If this option is not included,
// the terminal will default to matching the buffer's font size.
@@ -18,6 +18,11 @@ pub enum TerminalDockPosition {
Right,
}
+#[derive(Copy, Clone, Debug, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
+pub struct Toolbar {
+ pub title: bool,
+}
+
#[derive(Deserialize)]
pub struct TerminalSettings {
pub shell: Shell,
@@ -36,6 +41,7 @@ pub struct TerminalSettings {
pub default_height: Pixels,
pub detect_venv: VenvSettings,
pub max_scroll_history_lines: Option<usize>,
+ pub toolbar: Toolbar,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize, JsonSchema)]
@@ -155,6 +161,8 @@ pub struct TerminalSettingsContent {
///
/// Default: 10_000
pub max_scroll_history_lines: Option<usize>,
+ /// Toolbar related settings
+ pub toolbar: Option<ToolbarContent>,
}
impl settings::Settings for TerminalSettings {
@@ -274,3 +282,12 @@ pub enum WorkingDirectory {
/// this platform's home directory (if it can be found).
Always { directory: String },
}
+
+// Toolbar related settings
+#[derive(Clone, Debug, Default, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
+pub struct ToolbarContent {
+ /// Whether to display the terminal title in its toolbar.
+ ///
+ /// Default: true
+ pub title: Option<bool>,
+}
@@ -13,6 +13,7 @@ use gpui::{
use language::Bias;
use persistence::TERMINAL_DB;
use project::{search::SearchQuery, Fs, LocalWorktree, Metadata, Project};
+use settings::SettingsStore;
use terminal::{
alacritty_terminal::{
index::Point,
@@ -90,6 +91,7 @@ pub struct TerminalView {
blink_epoch: usize,
can_navigate_to_selected_word: bool,
workspace_id: WorkspaceId,
+ show_title: bool,
_subscriptions: Vec<Subscription>,
_terminal_subscriptions: Vec<Subscription>,
}
@@ -165,7 +167,12 @@ impl TerminalView {
blink_epoch: 0,
can_navigate_to_selected_word: false,
workspace_id,
- _subscriptions: vec![focus_in, focus_out],
+ show_title: TerminalSettings::get_global(cx).toolbar.title,
+ _subscriptions: vec![
+ focus_in,
+ focus_out,
+ cx.observe_global::<SettingsStore>(Self::settings_changed),
+ ],
_terminal_subscriptions: terminal_subscriptions,
}
}
@@ -208,6 +215,12 @@ impl TerminalView {
self.context_menu = Some((context_menu, position, subscription));
}
+ fn settings_changed(&mut self, cx: &mut ViewContext<Self>) {
+ let settings = TerminalSettings::get_global(cx);
+ self.show_title = settings.toolbar.title;
+ cx.notify();
+ }
+
fn show_character_palette(&mut self, _: &ShowCharacterPalette, cx: &mut ViewContext<Self>) {
if !self
.terminal
@@ -832,7 +845,11 @@ impl Item for TerminalView {
}
fn breadcrumb_location(&self) -> ToolbarItemLocation {
- ToolbarItemLocation::PrimaryLeft
+ if self.show_title {
+ ToolbarItemLocation::PrimaryLeft
+ } else {
+ ToolbarItemLocation::Hidden
+ }
}
fn breadcrumbs(&self, _: &theme::Theme, cx: &AppContext) -> Option<Vec<BreadcrumbText>> {
@@ -681,6 +681,9 @@ These values take in the same options as the root-level settings with the same n
"font_size": null,
"option_as_meta": false,
"shell": {},
+ "toolbar": {
+ "title": true
+ },
"working_directory": "current_project_directory"
}
```
@@ -839,6 +842,22 @@ See Buffer Font Features
}
```
+## Terminal Toolbar
+
+- Description: Whether or not to show various elements in the terminal toolbar. It only affects terminals placed in the editor pane.
+- Setting: `toolbar`
+- Default:
+
+```json
+"toolbar": {
+ "title": true,
+},
+```
+
+**Options**
+
+At the moment, only the `title` option is available, it controls displaying of the terminal title that can be changed via `PROMPT_COMMAND`. If the title is hidden, the terminal toolbar is not displayed.
+
### Working Directory
- Description: What working directory to use when launching the terminal.