Come cambiare il titolo di Gnome-Terminal?


166

Ho diversi casi di terminali in esecuzione nel mio ambiente di lavoro, quello che vorrei è impostare un titolo specifico per ognuno di essi, al fine di avere un'idea chiara dello scopo del terminale specifico, ad esempio Apache, editing_ini, postgres ecc ...

Naturalmente dalla riga di comando.


A seguito del commento di Ward: non dimenticare di "annullare l'impostazione di PROMPT_COMMAND" prima di inviare la sequenza di escape per la modifica del titolo, altrimenti qualsiasi modifica apportata andrà persa non appena il prossimo prompt della shell.
Jon Green

Per una domanda simile per KDE, vedi stackoverflow.com/questions/8782159/...
naught101

Ho avuto questo problema durante il passaggio da OS X a Ubuntu. Per ottenere titoli personalizzati all'interno di una configurazione multi-tab, ho usato gnome-terminal --load-configinsieme a questo script che ho scritto.
halfer

3
aggiungi seguito al tuo file .bashrc nella tua home directory # set title of current terminal setTerminalTitle(){ echo -ne "\033]0;${1}\007" } alias termttl=setTerminalTitleora puoi usare alias termttl per impostare il titolo, ad es.termttl askubuntu
urmalp,

1
"Protetto", quindi non posso fornire una risposta. L' gnome-terminalimpostazione predefinita di Gnome3 è PROMPT_COMMAND=__vte_prompt_command. Questo utilizza i valori di Profili nelle preferenze. In presenza di più profili, le voci di menu Nuova scheda e Nuova finestra presentano un sottomenu per ciascun profilo. Il modo manuale è quello di aprire una nuova scheda terminale, fare clic destro sul titolo della scheda e selezionare Imposta titolo ... . (Questo sarebbe molto più semplice in una risposta separata, ma ...)
Rich

Risposte:


146
  • Il modo più intuitivo è selezionarlo dal menu Terminale -> "Imposta titolo ...".

  • Esistono altri modi, tuttavia, puoi anche emettere

    gnome-terminal --title="SOME TITLE HERE"
    

    Ciò potrebbe non dare l'effetto desiderato poiché esiste una grande probabilità che il tuo .bashrccomportamento venga sovrascritto.

  • Portandoci all'ultimo metodo, che ho sfacciatamente strappato dal mio .bashrc.

    PROMPT_COMMAND='echo -ne "\033]0;SOME TITLE HERE\007"'
    

Come riferimento extra, questa è la linea particolare nella mia .bashrc

PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'

Potrebbe anche essere necessario commentare questo codice nel tuo ~ / .bashrc

case "$TERM" in
xterm*|rxvt*)
    # JEFFYEE REMOVED because it makes commands to title() not work
    #PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

2
È necessario commentare o rimuovere come hai detto per avere effetto!
topless il

1
@Ward: PROMPT_COMMANDè un programma da eseguire. PS1e PS1sono stringhe testuali che vengono visualizzate. Nell'esempio sopra è il comando che viene eseguito echo, che quindi stampa semplicemente una stringa. Vedi man basho manpages.ubuntu.com/bash per maggiori dettagli.
sladen,

29
Il Terminale 3.16.2 di GNOME diceOption "--title" is no longer supported in this version of gnome-terminal.
Ivan Kozik, il

10
Su Gnome 3.18.3, non vi è alcuna voce "Imposta titolo" nei menu: /
shadi

2
Per chiunque sia confuso dal gobbledegook nelle stringhe sopra, sono personaggi di escape ANSI - vedi ad esempio lihaoyi.com/post/…
WillC

65

La risposta di Ward è ottima se vuoi impostare il tuo titolo in base all'host in cui ti trovi, ecc. Ogni volta che apri un terminale. Se vuoi solo impostare rapidamente un titolo, puoi semplicemente eseguire l'eco da solo:

echo -ne "\033]0;SOME TITLE HERE\007"

o fai una semplice funzione (dentro la tua ~/.bashrc), diciamotermtitle

termtitle() { printf "\033]0;$*\007"; }

con cui puoi correre termtitle some title here.


3
o allo stesso modo possiamo aggiungere come alias bash aggiungendo le righe seguenti in ~ / .bash_aliases function set_title() { echo -ne "\033]0;${1}\007" } alias title=set_titlee quindi usare: $ title term_title
murarisumit

11
Purtroppo non sembra funzionare per me nel terminale GNOME 3.6.2.
austinmarton,

1
Inoltre non sembra funzionare in xterm 322 o in konsole 16.12 ... Sfortunatamente non so se c'è un nuovo metodo :(
naught101

2
@ 3ocene in realtà non importa in questo caso, sono la stessa cosa, ma è una buona abitudine per entrare, perché ad esempio, $var_loge ${var}_logsono cose molto diverse, e la differenza può causare bug negli script.
niente

2
se non funziona per te, probabilmente è perché PROMPT_COMMAND var o PS1 var è impostato e lo supera. unset PROMPT_COMMANDo impostarlo in modo che cambia anche il titolo ad esempio export PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "$(basename $PWD)"'
Gaoithe

32

Se usi l'editor Vim, puoi anche abilitare questa opzione nel tuo vimrc:

:set title

che è disabilitato di default. Imposta i titoli dei terminali interessanti che mostrano il nome del file che si sta modificando al momento e alcune altre cose.


26

Per completezza, aggiungerei che puoi anche impostare il gnome-terminaltitolo usando questo comando:

wmctrl -r :ACTIVE: -N "MyWindowTitle"

DovraiInstalla wmctrl prima installare il pacchetto wmctrl .


1
MyWindowTitle non viene visualizzato nel titolo del terminale. Si presenta quando lo faccio wmctrl -m.
sureshvv,

2
Nota che wmctrl cambia il titolo della finestra e non il titolo della scheda, mentre la soluzione con caratteri di escape modifica il titolo della scheda. Inoltre, il titolo della finestra torna al titolo della scheda originale non appena si passa da una scheda all'altra.
Redochka,

23

Argh, tante risposte ...

Ho provato wmctrl, che ha funzionato quasi , tranne che non sono riuscito a farlo cambiare il titolo dell'icona, almeno non in modo permanente.

Il problema è che la PS1 in Bash in Ubuntu imposta il titolo.

La PS1 predefinita è

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 

... che imposta il titolo nella prima sequenza di escape: \e]0;\u@\h: \w\a

Pertanto, ci sono due soluzioni:

Soluzione 1: semplifica PS1, quindi utilizza PROMPT_COMMAND

Cambia PS1 in qualcosa di più semplice:

PS1="\u@\h:\w\$ "

Quindi utilizzare PROMPT_COMMAND:

PROMPT_COMMAND='echo -ne "\033]0;SOME TITLE HERE\007"'

Soluzione 2: modifica direttamente PS1

Modifica semplicemente PS1 con il nuovo titolo:

PS1='\[\e]0;newtitle\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

ciao, mi piace molto la tua risposta. Ti dispiacerebbe spiegare il ruolo di ]0;nel tuo codice? Penso di aver trovato il significato di echo -e '\007 \033'con il ascii -ocomando ... anche se in verità non sono sicuro di quello che sta facendo lì ... grazie ...
Isomorfismi

2
@iso \eo \033è il carattere escape (ESC), che avvia una sequenza di escape. ]avvia un comando del sistema operativo (OSC). Per un xterm, 0;significa "imposta il titolo", \aoppure o \007è il carattere della campana (BEL) che termina l'OSC. Maggiori informazioni: en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences
wjandrea,

@wjandrea Stavo cercando le lettere di escape equivalenti ( \ee \a) per \033e \007ma non sono riuscito a trovarle sicuramente perché non conoscevo le parole chiave giuste per digitare in Google. Anche il link che hai fornito è utile. Puoi per favore convertire il tuo commento in una risposta?
SebMa,

10

Se sei un utente Ubuntu, puoi cambiare il titolo di una scheda gnome-terminal usando l' HUD .

Mentre sei nel terminale gnomo, premi Alt per visualizzare l'HUD, digita le prime lettere, ad esempio "tit", premi invio e digita il tuo nuovo titolo.

Questo è un metodo molto rapido ed evita di usare il mouse.


1
Infatti. Mantiene le mani sulla tastiera. Viene visualizzato il titolo esistente, quindi è facile e veloce modificare anche quello esistente usando questo metodo.
Brent Faust,

tit è solo per Ubuntu inglese.
törzsmókus,

e l'intera opzione è stata rimossa :(
törzsmókus il

il F2tasto evita anche il mouse.
Isomorfismi

@ törzsmókus And French - titre ;)
wjandrea,

3

Un altro modo di cambiare il titolo di gnome-terminalè usando gconftool-2; ciò modifica il titolo iniziale del terminale per il profilo selezionato, in modo da poter avere profili diversi associati a titoli come 'Apache', 'Modifica', ecc. Quindi si avvia gnome-terminalcon il profilo appropriato per ottenere il titolo del terminale specificato. Ciò è in contrasto con il gnome-terminal --title "name"quale cambia il titolo per terminale, ma non influisce sul titolo iniziale specificato nel profilo.

È possibile utilizzare il seguente comando in uno script per impostare il nome del terminale per un profilo e si potrebbe avere il nome della modifica del terminale in determinate ore del giorno per ricordare le cose:

gconftool-2 --set /apps/gnome-terminal/profiles/Default/title --type=string "Apache"

Questo è per il profilo predefinito, ma è possibile impostare il titolo anche per altri profili cambiando, ad esempio, Defaultun altro profilo come Profile0:

gconftool-2 --set /apps/gnome-terminal/profiles/Profile0/title --type=string "Editing"

Ho pensato che questo modo di cambiare il titolo fosse utile a causa del modo in cui poteva essere usato negli script, o semplicemente come un modo rapido da riga di comando per impostare il titolo per il profilo. Si noti che a volte è necessario riavviare il terminale con il profilo specificato per gconftool-2rendere effettive le impostazioni. Le impostazioni complete disponibili per gnome-terminalpossono essere elencate con gconftool-2 -R /apps/gnome-terminal.


3

Un'altra soluzione è utilizzare xdotool per simulare sequenze di tasti, forse utile negli script:

  1. Imposta una scorciatoia da tastiera in gnome-terminal:

    Edit > Keyboard Shortcuts... > Terminal > Set Title
    

    Ad esempio, valutando il Shift+Ctrl+Y.

  2. Installa xdotoolse non l'hai già:

    sudo apt-get install xdotool
    
  3. La seguente sequenza di comandi (che puoi usare anche in uno script bash) imposterà il titolo del terminale / tab (sfuggire agli spazi con \):

    xdotool key ctrl+shift+y 
    xdotool type My\ new\ fabulous\ title
    xdotool key Return
    
  4. [opzionale] Puoi anche usare xdotool per esempio per aprire una nuova scheda e impostare il titolo con i comandi sopra, usando:

    xdotool key ctrl+shift+t
    

    Prendi in considerazione l'ipotesi di aggiungere un periodo di inattività prima e dopo l'apertura di una nuova scheda, ad es. sleep 1(Attendere 1 secondo).

Questa non è la soluzione più elegante, ma ha funzionato per me! Le risposte precedenti non hanno funzionato nel mio caso. Uso gnome-terminal in Ubuntu 14.04 e volevo creare uno script bash.


1

Per visualizzare solo la directory di lavoro corrente nel titolo, prova questo nel tuo '.bashrc':

PROMPT_COMMAND='echo -ne "\033]0; ${PWD##*/}\007"'

o

PROMPT_COMMAND='echo -ne "\033]0;$(basename ${PWD})\007"' 

0

Questo ha funzionato nel mio terminale Gnome 3.18.3 .

Modifica il tuo file .bashrc e aggiungi questa funzione

# Update gnome terminal title
function termtitle() {
    # take argument
    TITLE=$1
    shift
    # update title
    PROMPT_COMMAND='echo -ne "\033]0; $TITLE \007"'
}

Non dimenticare il sourcetuo file .bashrc

$ source ~/.bashrc

E poi puoi semplicemente aggiornare sarai in grado di cambiare il titolo del terminale in questo modo:

$ termtitle "MariaDB CLI"

0

La mia risposta è simile alla risposta più recente che non ha funzionato per me. Le risposte più vecchie non funzionano più. La risposta di vecchia data è troppo digitando, quindi ho creato una funzione nel mio ~/.bashrcfile:

function termtitle() { PS1="${PS1/\\u@\\h: \\w/$@}"; }

Dopo aver aggiunto o modificato la funzione o, se si desidera reimpostare il titolo una seconda volta, utilizzare:

. ~/.bashrc
termtitle Special Projects

Altrimenti su base giornaliera basta usare termtitlecon un nuovo titolo.


-1

Nel caso in cui qualche povera anima come me sia costretta a usare tcsh, prova qualcosa del genere nel tuo .cshrc:

set prompt='%{\033]0;%n@%m\007%}%~%# '

Fonte e maggiori dettagli: http://tldp.org/HOWTO/Xterm-Title-4.html


Qualche indicazione del perché la mia risposta è stata votata verso il basso sarebbe stata piacevole :-(
spookypeanut

-1

Se stai usando gnome 3, la comoda Terminal > Set Titleopzione di menu è stata rimossa. Puoi installare un terminale biforcato gnome 2 che ha ancora l'opzione di menu "Imposta titolo" ed eseguirlo invece:

sudo apt-get install mate-terminal

Invece di eseguire "Terminale", eseguire "Terminale MATE". Probabilmente dovresti anche selezionare mate-terminal in sudo update-alternatives --config x-terminal-emulator.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.