Wie kann ich den Titel des iTerm2-Fensters so einstellen, dass er gleich ist, egal welcher Bereich ausgewählt ist?

Mir ist bekannt, dass der iTerm2-Fenstertitel mit eingestellt werden kann

echo -ne "\033]0;"Title goes here"\007"

aber das scheint nur den Titel für einen einzelnen Bereich festzulegen . Wenn ich die Bereiche wechsle, wird der Fenstertitel geändert.

Wie kann ich den Fenstertitel schnell/automatisch so einstellen, dass er für alle Bereiche gleich ist?

Antworten (3)

Wenn Sie nur nach einem statischen Titel suchen, können Sie diese Zeile zu Ihrem ~/.bash_profile hinzufügen. Achten Sie nur darauf, es zu laden, um es zu laden:

source ~/.bash_profile

Andernfalls könnten Sie einen Alias ​​verwenden. Diese werden auch in Ihrem ~/.bash_profile hinzugefügt:

alias title1='echo -ne "\033]0;"Title goes here"\007"'
alias title2='echo -ne "\033]0;"Other Title goes here"\007"'

Hoffentlich hilft das!

Am Ende habe ich das gelöst, indem ich die folgenden Zeilen zu meiner hinzugefügt habe .bashrc.

# Private variables
_title_file=$HOME/.title
_win_num=${TERM_SESSION_ID%%t*}
_win_num=${_win_num#w}

# Record title from user input, or as user argument
_title_set() {  # default way is probably using Cmd-I in iTerm2
  [ -z "$TERM_SESSION_ID" ] && return 1
  if [ $# -gt 0 ]; then
    _title="$*"
  else
    read -r -p "Window title (window $_win_num):" _title
  fi
  [ -z "$_title" ] && _title="window $_win_num"
  [ -e "$_title_file" ] || touch "$_title_file"
  sed -i '/^'"$_win_num"':.*$/d' "$_title_file"  # remove existing title from file
  echo "$_win_num: $_title" >> "$_title_file"  # add to file
}

# Retrieve title from the hidden file
_title_get() {
  if [ -r "$_title_file" ]; then
    _title=$(grep "^$_win_num:.*$" "$_title_file" 2>/dev/null | cut -d: -f2-)
  else
    unset _title
  fi
  _title=$(echo "$_title" | sed $'s/^[ \t]*//;s/[ \t]*$//')
}

# Update the title
_title_update() {
  _title_get  # set _title to existing window title if possible
  [ -n "$_title" ] || _title_set  # set title name
  echo -ne "\033]0;$_title\007"  # re-assert title, in case changed
}

# Add a prompt command
_prompt() {
  export PROMPT_COMMAND=$(echo "$PROMPT_COMMAND; $1" | sed 's/;[ \t]*;/;/g;s/^[ \t]*;//g')
}

# Ask for a title when we create pane 0 (i.e. the first pane of a new window)
alias title='_title_set'  # easier for user
[[ "$PROMPT_COMMAND" =~ "_title_update" ]] || _prompt _title_update
[[ "$TERM_SESSION_ID" =~ w?t?p0: ]] && _title_update

Die obigen Zeilen werden Sie auffordern, einen Titel einzugeben, wenn ein neues Fenster erstellt wird (mit der Standardeinstellung als "Fenster n"), und den Titel jedes Mal aktualisieren, wenn eine Eingabeaufforderung generiert wird. Sie können den Fenstertitel manuell ändern, indem Sie title <new_title>innerhalb des gewünschten Fensters aufrufen.

Wow, ziemlich beeindruckend umfassende Antwort!

Wenn Sie zu iTerm2/Preferences/Appearance gehen, gibt es auf der rechten Seite des Fensters einen Bereich, in dem Sie Namen definieren können und was auf den Registerkarten oder im Fenster angezeigt wird. Sie sollten in der Lage sein, mit diesen Einstellungen zu spielen, um ein akzeptables Ergebnis zu erzielen.