¿Cómo cambiar el título de Gnome-Terminal?


166

Tengo varias instancias de terminales ejecutándose en mi entorno de trabajo, lo que me gustaría es establecer un título específico para cada una, con el fin de tener una idea clara para qué sirve la terminal específica, es decir, Apache, edición_ini, postgres, etc.

Por supuesto desde la línea de comando.


Además del comentario de Ward: No olvide "desarmar PROMPT_COMMAND" antes de enviar la secuencia de escape de cambio de título, de lo contrario, cualquier cambio que realice se perderá tan pronto como aparezca el siguiente indicador de shell.
Jon Green

Para una pregunta similar para KDE, consulte stackoverflow.com/questions/8782159/…
naught101

Tuve este problema al cambiar de OS X a Ubuntu. Para obtener títulos personalizados dentro de una configuración de múltiples pestañas, utilicé gnome-terminal --load-configjunto con este script que he escrito.
halfer

3
agregue seguimiento a su archivo .bashrc en su directorio de inicio # set title of current terminal setTerminalTitle(){ echo -ne "\033]0;${1}\007" } alias termttl=setTerminalTitleahora puede usar el alias termttl para configurar el título, por ejemplotermttl askubuntu
urmalp

1
"Protegido", así que no puedo proporcionar una respuesta. El valor gnome-terminalpredeterminado de Gnome3 es PROMPT_COMMAND=__vte_prompt_command. Esto usa valores de Perfiles en prefs. Cuando existen varios perfiles, los elementos del menú Nueva pestaña y Nueva ventana tienen un elemento de submenú para cada Perfil. La forma manual es para abrir una pestaña nueva terminal, haga clic derecho en el título de la pestaña y seleccione Conjunto Título ... . (Esto sería mucho más fácil en una respuesta por separado, pero ...)
Rico

Respuestas:


146
  • La forma más fácil de usar es elegirlo desde el menú Terminal -> "Establecer título ...".

  • Sin embargo, hay otras formas de emitir

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

    Esto podría no dar el efecto deseado ya que existe una gran posibilidad de que .bashrcsobrescriba ese comportamiento.

  • Llevándonos al último método, que descaradamente saqué de mi .bashrc.

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

Como referencia adicional, esta es la línea particular en mi .bashrc

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

También es posible que deba comentar este código en su ~ / .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
¡Necesita comentar o eliminar como mencionó para que surta efecto!
topless

1
@Ward: PROMPT_COMMANDes un programa para ejecutar. PS1y PS1son cadenas de texto que se muestran. En el ejemplo anterior, el comando que se ejecuta es echo, que simplemente imprime una cadena. Ver man basho manpages.ubuntu.com/bash para más detalles.
Sladen

29
La Terminal 3.16.2 de GNOME diceOption "--title" is no longer supported in this version of gnome-terminal.
Ivan Kozik el

10
En Gnome 3.18.3, no hay entrada "Establecer título" en los menús: /
shadi

2
Para cualquier otra persona confundida por el gobbledegook en las cadenas anteriores, son caracteres de escape ANSI - ver, por ejemplo, lihaoyi.com/post/…
WillC

65

La respuesta de Ward es excelente si desea establecer su título en función del host en el que se encuentra, etc., cada vez que abre una terminal. Sin embargo, si solo desea establecer un título rápidamente, puede ejecutar echo por sí mismo:

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

o hacer una función simple (dentro de su ~/.bashrc), digamostermtitle

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

con el que puedes correr termtitle some title here.


3
o de manera similar, podemos agregar como bash alias agregando las siguientes líneas en ~ / .bash_aliases function set_title() { echo -ne "\033]0;${1}\007" } alias title=set_titley luego usar: $ title term_title
murarisumit

11
Lamentablemente, no parece funcionar para mí en el terminal 3.6.2 de GNOME.
austinmarton

1
Tampoco parece funcionar en xterm 322 o konsole 16.12 ... No sé si hay un nuevo método, desafortunadamente :(
naught101

2
@ 3ocene en realidad no importa en este caso, son la misma cosa, pero es un buen hábito para entrar, porque por ejemplo, $var_logy ${var}_logson cosas muy diferentes, y la diferencia puede causar errores en los scripts.
naught101

2
si no funciona para usted, probablemente se deba a que PROMPT_COMMAND var o PS1 var están configurados y lo anulan. unset PROMPT_COMMANDo export PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "$(basename $PWD)"'
configúrelo

32

Si usa el editor Vim, también puede habilitar esta opción en su vimrc:

:set title

que está deshabilitado por defecto. Establecerá títulos de terminal geniales que muestren el nombre de archivo que está editando en este momento y algunas otras cosas.


26

En aras de la exhaustividad, agregaría que también puede establecer el gnome-terminaltítulo con este comando:

wmctrl -r :ACTIVE: -N "MyWindowTitle"

PrimeroInstalar wmctrl deberá instalar el paquete wmctrl .


1
MyWindowTitle no aparece en el título del terminal. Aparece cuando hago wmctrl -m.
sureshvv

2
Tenga en cuenta que wmctrl cambia el título de la ventana y no el título de la pestaña, mientras que la solución de caracteres escapados cambia el título de la pestaña. Además, el título de la ventana vuelve a cambiar al título de la pestaña original tan pronto como cambia entre pestañas.
redochka

23

Argh, tantas respuestas ...

Lo intenté wmctrl, lo que casi funcionó, excepto que no pude cambiar el título del ícono, al menos no permanentemente.

El problema es que la PS1 en Bash en Ubuntu establece el título.

La PS1 predeterminada es

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

... que establece el título en la primera secuencia de escape: \e]0;\u@\h: \w\a

Por lo tanto, hay dos soluciones:

Solución 1: simplifique PS1, luego use PROMPT_COMMAND

Cambia PS1 a algo más simple:

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

Luego use PROMPT_COMMAND:

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

Solución 2: modifique directamente PS1

Simplemente modifique PS1 con un nuevo título:

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

hola, me gusta mucho tu respuesta. ¿Te importaría explicar el papel de ]0;tu código? Creo que he encontrado el significado de echo -e '\007 \033'la ascii -oorden ... aunque no estoy seguro de lo que la verdad está haciendo allí, ya sea ... gracias ...
isomorphismes

2
@iso \eo \033es el carácter de escape (ESC), que inicia una secuencia de escape. ]inicia un comando del sistema operativo (OSC). Para un xterm, 0;significa "establecer el título", y \ao \007es el carácter de campana (BEL) que termina el OSC. Más información: en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences
wjandrea

@wjandrea Estaba buscando las letras de escape equivalentes ( \ey \a) para \033y \007pero no pude encontrarlas ciertamente porque no sabía las palabras clave correctas para escribir en google. El enlace que diste también es útil. ¿Puedes por favor convertir tu comentario en una respuesta?
SebMa

10

Si es un usuario de Ubuntu, puede cambiar el título de una pestaña gnome-terminal usando el HUD .

Mientras esté en la terminal gnome, presione Alt para que aparezca el HUD, escriba las primeras letras, por ejemplo, "tit", presione enter y escriba su nuevo título.

Este es un método muy rápido y evita usar el mouse.


1
En efecto. Mantiene las manos sobre el teclado. Se muestra el título existente, por lo que es rápido y fácil también modificar el existente con este método.
Brent Faust

tit es solo para inglés Ubuntu.
törzsmókus

y toda la opción ha sido eliminada :(
törzsmókus

la F2tecla también evita el mouse.
isomorphismes

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

3

Otra forma de cambiar el título de gnome-terminales mediante el uso de gconftool-2; esto cambia el título inicial del terminal para el perfil seleccionado, por lo que podría tener diferentes perfiles asociados con títulos como 'Apache', 'Edición', etc. Luego, iniciaría gnome-terminalcon el perfil apropiado para obtener el título del terminal que había especificado. Esto contrasta con lo gnome-terminal --title "name"que cambia el título por terminal, pero no afecta el título inicial especificado en el perfil.

Puede usar el siguiente comando en un script para establecer el nombre de la terminal para un perfil, y puede hacer que cambie el nombre de la terminal en ciertos momentos del día para recordarle cosas:

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

Esto es para el perfil predeterminado, pero también puede establecer el título para otros perfiles cambiando, por ejemplo, Defaulta otro perfil como Profile0:

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

Pensé que esta forma de cambiar el título es útil debido a la forma en que podría usarse en las secuencias de comandos, o simplemente como una forma rápida de línea de comandos para establecer el título para el perfil. Tenga en cuenta que a veces tiene que reiniciar el terminal con el perfil especificado para que la gconftool-2configuración surta efecto. La configuración completa disponible para gnome-terminalse puede enumerar con gconftool-2 -R /apps/gnome-terminal.


3

Otra solución es usar xdotool para simular pulsaciones de teclas, tal vez útil en scripts:

  1. Establecer un atajo de teclado en gnome-terminal:

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

    Por ejemplo, evaluando el Shift+Ctrl+Y.

  2. Instale xdotoolsi aún no lo tiene:

    sudo apt-get install xdotool
    
  3. La siguiente secuencia de comandos (que puede usar también en un script bash) establecerá el título de la terminal / pestaña (escape de los espacios con \):

    xdotool key ctrl+shift+y 
    xdotool type My\ new\ fabulous\ title
    xdotool key Return
    
  4. [opcional] También puede usar xdotool para, por ejemplo, abrir una nueva pestaña y establecer el título con los comandos anteriores, usando:

    xdotool key ctrl+shift+t
    

    Considere agregar un tiempo de sueño antes y después de abrir una nueva pestaña, por ejemplo sleep 1(para esperar 1 segundo).

Esta no es la solución más elegante, ¡pero funcionó para mí! Las respuestas anteriores no funcionaron en mi caso. Uso gnome-terminal en Ubuntu 14.04 y quería hacer un script bash.


1

Para mostrar solo el directorio de trabajo actual en el título, intente esto en su '.bashrc':

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

o

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

0

Esto funcionó en mi Gnome Terminal 3.18.3 .

Edite su archivo .bashrc y agregue esta función

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

No olvides sourcetu archivo .bashrc

$ source ~/.bashrc

Y luego simplemente puede actualizar, podrá cambiar el título del terminal de esta manera:

$ termtitle "MariaDB CLI"

0

Mi respuesta es similar a la nueva respuesta que no funcionó para mí. Las respuestas más antiguas ya no funcionan. La respuesta antigua es escribir demasiado, así que creé una función en mi ~/.bashrcarchivo:

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

Después de agregar o cambiar la función o, si desea restablecer el título por segunda vez, use:

. ~/.bashrc
termtitle Special Projects

De lo contrario, a diario, simplemente use termtitlecon un nuevo título.



-1

Si está utilizando gnome 3, la Terminal > Set Titleopción de menú conveniente se ha eliminado. Puede instalar un terminal bifurcado gnome 2 que todavía tiene esa opción de menú "Establecer título" y ejecutarlo en su lugar:

sudo apt-get install mate-terminal

En lugar de ejecutar "Terminal", ejecute "Terminal MATE". Probablemente también deberías seleccionar mate-terminal in sudo update-alternatives --config x-terminal-emulator.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.