shell-integration: implement no-title option

This adds a new option to the shell integration feature set, `no-title`.
If this option is set, the shell integration will not automatically
update the window title.
This commit is contained in:
Marius Svechla
2024-04-03 21:27:53 +02:00
parent c1b5957cb0
commit e34b373426
4 changed files with 17 additions and 9 deletions

View File

@ -839,7 +839,9 @@ keybind: Keybinds = .{},
/// ///
/// * `sudo` - Set sudo wrapper to preserve terminfo. /// * `sudo` - Set sudo wrapper to preserve terminfo.
/// ///
/// Example: `cursor`, `no-cursor`, `sudo`, `no-sudo` /// * `title` - Set the window title via shell integration.
///
/// Example: `cursor`, `no-cursor`, `sudo`, `no-sudo`, `title`, `no-title`
@"shell-integration-features": ShellIntegrationFeatures = .{}, @"shell-integration-features": ShellIntegrationFeatures = .{},
/// Sets the reporting format for OSC sequences that request color information. /// Sets the reporting format for OSC sequences that request color information.
@ -3378,6 +3380,7 @@ pub const ShellIntegration = enum {
pub const ShellIntegrationFeatures = packed struct { pub const ShellIntegrationFeatures = packed struct {
cursor: bool = true, cursor: bool = true,
sudo: bool = false, sudo: bool = false,
title: bool = true,
}; };
/// OSC 4, 10, 11, and 12 default color reporting format. /// OSC 4, 10, 11, and 12 default color reporting format.

View File

@ -70,9 +70,11 @@ function __ghostty_precmd() {
} }
fi fi
# Command if [[ "$GHOSTTY_SHELL_INTEGRATION_NO_TITLE" != 1 ]]; then
PS0=$PS0'$(__ghostty_get_current_command)' # Command
PS1=$PS1'\[\e]2;$PWD\a\]' PS0=$PS0'$(__ghostty_get_current_command)'
PS1=$PS1'\[\e]2;$PWD\a\]'
fi
fi fi
if test "$_ghostty_executing" != "0"; then if test "$_ghostty_executing" != "0"; then

View File

@ -194,11 +194,13 @@ _ghostty_deferred_init() {
_ghostty_report_pwd" _ghostty_report_pwd"
_ghostty_report_pwd _ghostty_report_pwd
# Enable terminal title changes. if [[ "$GHOSTTY_SHELL_INTEGRATION_NO_TITLE" != 1 ]]; then
functions[_ghostty_precmd]+=" # Enable terminal title changes.
builtin print -rnu $_ghostty_fd \$'\\e]2;'\"\${(%):-%(4~|…/%3~|%~)}\"\$'\\a'" functions[_ghostty_precmd]+="
functions[_ghostty_preexec]+=" builtin print -rnu $_ghostty_fd \$'\\e]2;'\"\${(%):-%(4~|…/%3~|%~)}\"\$'\\a'"
builtin print -rnu $_ghostty_fd \$'\\e]2;'\"\${(V)1}\"\$'\\a'" functions[_ghostty_preexec]+="
builtin print -rnu $_ghostty_fd \$'\\e]2;'\"\${(V)1}\"\$'\\a'"
fi
if [[ "$GHOSTTY_SHELL_INTEGRATION_NO_CURSOR" != 1 ]]; then if [[ "$GHOSTTY_SHELL_INTEGRATION_NO_CURSOR" != 1 ]]; then
# Enable cursor shape changes depending on the current keymap. # Enable cursor shape changes depending on the current keymap.

View File

@ -50,6 +50,7 @@ pub fn setup(
// Setup our feature env vars // Setup our feature env vars
if (!features.cursor) try env.put("GHOSTTY_SHELL_INTEGRATION_NO_CURSOR", "1"); if (!features.cursor) try env.put("GHOSTTY_SHELL_INTEGRATION_NO_CURSOR", "1");
if (!features.sudo) try env.put("GHOSTTY_SHELL_INTEGRATION_NO_SUDO", "1"); if (!features.sudo) try env.put("GHOSTTY_SHELL_INTEGRATION_NO_SUDO", "1");
if (!features.title) try env.put("GHOSTTY_SHELL_INTEGRATION_NO_TITLE", "1");
return shell; return shell;
} }