Come posso impostare che il titolo della finestra di iTerm2 sia lo stesso indipendentemente dal riquadro selezionato?

2

Sono consapevole che il titolo della finestra di iTerm2 può essere impostato con

echo -ne "3]0;"Title goes here"
echo -ne "3]0;"Title goes here"%pre%7"
7"

ma sembra impostare solo il titolo per un riquadro singolo . Quando cambio i riquadri, il titolo della finestra è cambiato.

Come posso impostare rapidamente / automaticamente il titolo della finestra in modo che sia lo stesso per ogni riquadro?

    
posta Luke Davis 01.05.2018 - 21:45
fonte

3 risposte

0

Ecco come ho risolto questo alla fine: aggiungendo le seguenti righe al mio .bashrc .

_title_file=~/.title
_win_num="${TERM_SESSION_ID%%t*}"
_win_num="${_win_num#w}"
function title_declare() {
  # Record title from user input, or as user argument
  [ -z "$TERM_SESSION_ID" ] && echo "Error: Not an iTerm session." && return 1
  if [ -n "$1" ]; then # warning: $@ is somehow always non-empty!
    _title="$@"
  else
    read -p "Window title (window $_win_num): " _title
  fi
  [ -z "$_title" ] && _title="window $_win_num"
  # Use gsed instead of sed, because Mac syntax is "sed -i '' <pattern> <file>" while
  # GNU syntax is "sed -i <pattern> <file>", which is annoying.
  [ ! -e "$_title_file" ] && touch "$_title_file"
  gsed -i '/^'$_win_num':.*$/d' $_title_file # remove existing title from file
  echo "$_win_num: $_title" >>$_title_file # add to file
}
function title_update() {
  # Check file availability
  [ ! -r "$_title_file" ] && title_declare
  # Read from file
  _title="$(cat $_title_file | grep "^$_win_num:.*$" 2>/dev/null | cut -d: -f2-)"
  # Update or re-declare
  _title="$(echo "$_title" | sed $'s/^[ \t]*//;s/[ \t]*$//')"
  if [ -z "$_title" ]; then title_declare # reset title
  else echo -ne "3]0;$_title
_title_file=~/.title
_win_num="${TERM_SESSION_ID%%t*}"
_win_num="${_win_num#w}"
function title_declare() {
  # Record title from user input, or as user argument
  [ -z "$TERM_SESSION_ID" ] && echo "Error: Not an iTerm session." && return 1
  if [ -n "$1" ]; then # warning: $@ is somehow always non-empty!
    _title="$@"
  else
    read -p "Window title (window $_win_num): " _title
  fi
  [ -z "$_title" ] && _title="window $_win_num"
  # Use gsed instead of sed, because Mac syntax is "sed -i '' <pattern> <file>" while
  # GNU syntax is "sed -i <pattern> <file>", which is annoying.
  [ ! -e "$_title_file" ] && touch "$_title_file"
  gsed -i '/^'$_win_num':.*$/d' $_title_file # remove existing title from file
  echo "$_win_num: $_title" >>$_title_file # add to file
}
function title_update() {
  # Check file availability
  [ ! -r "$_title_file" ] && title_declare
  # Read from file
  _title="$(cat $_title_file | grep "^$_win_num:.*$" 2>/dev/null | cut -d: -f2-)"
  # Update or re-declare
  _title="$(echo "$_title" | sed $'s/^[ \t]*//;s/[ \t]*$//')"
  if [ -z "$_title" ]; then title_declare # reset title
  else echo -ne "3]0;$_title%pre%7" # re-assert existing title, in case changed
  fi
}
function prompt_append() { # fix issues with consecutive semicolons
  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)
[[ ! "$PROMPT_COMMAND" =~ "title_update" ]] && prompt_append title_update
[[ "$TERM_SESSION_ID" =~ w?t?p0: ]] && [ -z "$_title" ] && title_declare
7" # re-assert existing title, in case changed fi } function prompt_append() { # fix issues with consecutive semicolons 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) [[ ! "$PROMPT_COMMAND" =~ "title_update" ]] && prompt_append title_update [[ "$TERM_SESSION_ID" =~ w?t?p0: ]] && [ -z "$_title" ] && title_declare

Le righe sopra chiedono all'utente di inserire un titolo ogni volta che viene creata una nuova finestra (con l'impostazione predefinita "finestra n") e aggiorna il titolo ogni volta che viene generato un prompt. Puoi modificare manualmente il titolo della finestra chiamando title <new_title> dalla finestra desiderata.

    
risposta data 30.10.2018 - 19:18
fonte
2

Se stai cercando un titolo statico puoi aggiungere quella linea al tuo ~ / .bash_profile. Assicurati di cercarlo per caricarlo:

source ~/.bash_profile

Altrimenti potresti usare un alias. Anche questi sono aggiunti nel tuo ~ / .bash_profile:

alias title1='echo -ne "3]0;"Title goes here"
source ~/.bash_profile
7"' alias title2='echo -ne "3]0;"Other Title goes here"
alias title1='echo -ne "3]0;"Title goes here"%pre%7"'
alias title2='echo -ne "3]0;"Other Title goes here"%pre%7"'
7"'

Spero che ti aiuti!

    
risposta data 01.05.2018 - 21:59
fonte
1

Se vai a iTerm2 / Preferences / Appearance c'è un'area sul lato destro della finestra dove puoi definire i nomi e cosa appare nelle schede o nella finestra. Dovresti essere in grado di giocare con queste impostazioni per ottenere un risultato accettabile.

    
risposta data 02.05.2018 - 08:07
fonte

Leggi altre domande sui tag