Ubuntu 15.04 nuova installazione: Impossibile rinominare le schede gnome-terminal


38

In Ubuntu 14.10, se avessi più schede Terminale aperte, potrei fare clic con il tasto destro su una scheda Terminale e rinominarla. In Ubuntu 15.04 non riesco a trovare questa funzione.

C'è un modo semplice per riaverlo?

Questa è la versione attuale:

$ gnome-terminal --version
GNOME Terminal 3.14.2

Risposte:


21

Risposto qui

Quoto:

Il user titlecodice è stato rimosso 1 da gnome-terminal 3.14. C'è solo un modo per impostare il titolo, usando una sequenza di escape - ad esempio con bash:

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

1: vedi bug 724110 di gnome e bug 740188 di gnome .


10
Grazie per la risposta. È un peccato che se ne sia andato, spero che lo aggiungano nella prossima versione, nel frattempo userò la sequenza di escape invece del metodo del tasto destro.
Tom,

2
@ Tom Scrivi una segnalazione di bug =)
AB

13
non è solo un peccato: non ha senso. Ho avuto la cattiva idea di "aggiornare" da Debian Wheezy a Jessie solo per avere tutto (non sono ancora sicuro, anzi) che avevo prima, ma peggio; decisioni sbagliate e difetti sciocchi (ad esempio in gdm3 l'elenco delle possibili wm / sessioni che ho installato non si adatta né scorre, quindi è semplice e quindi non posso scegliere tutto il wm che ho). Per me, GNOME è condannato da allora gnome-shell. È scomparso anche il menu per aprire un nuovo terminale in una nuova finestra o scheda (ma è ancora possibile farlo tramite il collegamento. Perché ?! Sostituire tutto con un grande pulsante intelligente: un clic e fa qualsiasi cosa!)
ShinTakezou

2
Di solito le nuove versioni aggiungono e non rimuovono le funzionalità.
Angelcervera,

2
Ho fatto un comando (uno script di shell) chiamato tab che contiene semplicemente echo -ne "\ 033] 0; $ 1 \ 007" quindi ora in qualsiasi scheda posso semplicemente eseguire la scheda TABNAME per impostare il titolo della scheda. Non conveniente come fare clic con il pulsante destro del mouse sulla scheda per rinominare, ma per ora lo farà. Grazie AB!
Brian Pipa,

31

La .bashrcsoluzione proposta da Kirby ha funzionato per me:

set-title(){
  ORIG=$PS1
  TITLE="\e]2;$@\a"
  PS1=${ORIG}${TITLE}
}

quindi dal mio prompt: $ set-title test-title


2
Funziona bene per me il 15.10, l'unico avvertimento è che ogni volta che lo esegui aggiungi a PS1, quindi non farlo da uno script. Dopo averlo chiamato alcune volte con set-title "longer and ":echo $PS1 \[\e]0; \u@\h: \w \a\]\u@\h:\w\[\033[m\]$(__git_ps1)$ \e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a
ahcox,

1
funziona per me su Ubuntu 16.04!
Programster,

1
funziona come un incanto !!
Sharadendu Sinha,

Come posso cambiare il titolo mentre è in esecuzione un processo in primo piano, che non voglio interrompere?
Jānis Elmeris,

1
Penso che puoi farlo mettendo in pausa il processo usando Control + Z, quindi set-title X, fgper riprenderlo.
ronan_mac,

18

Non riesco a credere che abbiano rimosso una funzionalità così intuitiva come questa.

Sto passando a ROXTerm ( http://roxterm.sourceforge.net ), che fa bene il lavoro. È confezionato in Ubuntu:

sudo apt-get install roxterm

Quindi, lascia che il dinosauro continui a modo suo ;-)


1
Come posso cambiare il titolo della scheda in roxterm? Non sono riuscito a trovarlo.
Halil,

funzionerà anche per il 16.04
prusswan

Wow, non riesco a impostare un terminale in background con gnome-terminal e non ho mai capito perché ... è un problema con il terminale stesso. Lo sfondo del terminale devilspie funziona alla grande con roxterm.
m3nda,

1
RoxTerm è fantastico e funziona ancora, ma purtroppo non continuerà più a lungo: sadface:: sourceforge.net/p/roxterm/discussion/422638/thread/60da6975
Williams

Da allora sono passato a Terminator e non ho più dovuto usare RoxTerm ....
Michael Opdenacker,

14

Ho provato RoxTerm come suggerito sopra, con buoni risultati. Ma ho optato per il Terminal MATE, che fa parte del Progetto MATE, una continuazione di Gnome 2, il 15.04:

sudo apt-get install mate-terminal

Quel terminale si basa sul codice Terminale di Gnome.


Commento: è difficile comprendere la mentalità degli sviluppatori di Gnome Terminal. Ci sono molte discussioni laggiù su "come" nominare le schede dei terminali e su come sia difficile ottenere il giusto. In tal caso, perché è più difficile per l'utente nominarli? Non molto intelligente.


6

Ora ho studiato questo per la parte migliore di una giornata e finalmente ho trovato il modo di impostare questo titolo. Viene eseguito tramite sequenze di escape che iniziano con \ e] 0; e termina con un carattere BEL (= \ 007 = \ a). A differenza di quanto ho detto sopra, le comunicazioni dalla shell all'applicazione terminale sono possibili, molto limitate, attraverso tali sequenze di escape (ce ne sono altre).

A proposito di questo dall'alto:

PROMPT_COMMAND='echo -ne "\e]0;YOUR TITLE GOES HERE\a"'

Si può lavorare, ma non sempre. PROMPT_COMMANDè una variabile il cui contenuto viene eseguito ogni volta che si invia un comando, quindi invia anche questa sequenza di escape. Tuttavia, questo può essere annullato da una sequenza di escape nella variabile PS1, che imposta il prompt della riga di comando. Questo è il motivo per cui quanto sopra non ha avuto effetto qui.

Da una vecchia installazione di Ubuntu ho preso questo, che imposta il prompt dei comandi (parte destra, dopo il ]) e invia anche la sequenza di escape richiesta (parte sinistra, fino a e incluso il ]):

PS1="\[\e]0;\u@\h: \w\a\]\u@\h:\w\$ "

Questo probabilmente funziona meglio, perché non c'è bisogno di interpretare $PROMPT_COMMANDogni volta. Ha anche molte più opzioni, perché Bash ha più sequenze di escape qui, ad esempio \uper il nome utente corrente, \Wper il nome della directory corrente o \wper l'intero percorso della directory di lavoro corrente, facoltativamente ridotto a solo gli ultimi dal numero in $PROMPT_DIRTRIM. Vedi capitolo PROMPTINGnella pagina man di Bash. Si noti inoltre che la sequenza di escape deve inoltre essere circondata da \[e \]qui.

Per impostare un titolo fisso, funziona:

PS1="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "

Godere!


Durante la mia indagine ho anche cercato di capire il codice sorgente di gnome-terminal, che porta al codice sorgente vte e lì il supporto per l'impostazione del titolo e la lettura delle sequenze di escape è considerato un rischio per la sicurezza: vedi qui (caso 20, caso 21) e qui ("Rapporti sul titolo della finestra").


Questo imposta il titolo ma cancella anche qualsiasi definizione precedente di PS1per altri usi come l'impostazione di un prompt dei comandi personalizzato. Ho appena provato ad aggiungere la sequenza di escape ai PS1contenuti esistenti e sembra funzionare. In questo modo: PS1+="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
ahcox,

5

L'impostazione di $ PROMPT_COMMAND come mostrato sopra non ha alcun effetto qui. Nessuna sorpresa, perché Bash gira all'interno del terminale e i processi parent (qui: gnome-terminal) non possono leggere l'ambiente di un bambino su un sistema operativo simile a unix. Usando qualcosa di più semplice, come

PROMPT_COMMAND='echo bla'

Esegue l' eco bla , non succede nient'altro.

Modifica: uno deve avvolgere questo in sequenze di escape, vedere la mia altra risposta. Nonostante non sia possibile leggere l'ambiente figlio, attraverso queste sequenze è possibile comunicare con il genitore.

Nel bug 740188 di Gnome parlano della definizione di una funzione title () in .bashrc. Uno diverso per ogni scheda aperta? Grave brutto attacco, se possibile affatto!

Anche altre spiegazioni su Stackexchange parlano dell'impostazione di $ PS1 (e vengono valutate). Siamo spiacenti, no, non è questo il titolo, è il prompt dei comandi.

In breve: l'hanno incasinato irreparabilmente per risparmiare un po 'di spazio nella finestra di dialogo delle preferenze. Oh mio Dio

Ora, l'unica possibilità per ottenere una decisione dello sviluppatore è quella di accendere una tempesta di merda grave, altrimenti chiudono semplicemente la tua segnalazione di bug in pochi secondi (provata molte molte molte volte). Come creeremmo questa tempesta di merda?

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.