Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions assets/settings/default.json
Original file line number Diff line number Diff line change
Expand Up @@ -458,6 +458,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.
Expand Down
17 changes: 17 additions & 0 deletions crates/terminal/src/terminal_settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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)]
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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>,
}
21 changes: 19 additions & 2 deletions crates/terminal_view/src/terminal_view.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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>,
}
Expand Down Expand Up @@ -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,
}
}
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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>> {
Expand Down
19 changes: 19 additions & 0 deletions docs/src/configuring_zed.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
```
Expand Down Expand Up @@ -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.
Expand Down