Wie ändere ich den Gnome-Terminal-Titel?

165

Ich habe mehrere Instanzen von Terminals in meiner Arbeitsumgebung. Ich möchte einen bestimmten Titel für jedes Terminal festlegen, um eine klare Vorstellung davon zu bekommen, welchem ​​Zweck das jeweilige Terminal dient, z. B. Apache, editing_ini, postgres usw.

Natürlich von der Kommandozeile.

oben ohne
quelle
Weiter zu Wards Kommentar: Vergessen Sie nicht, "PROMPT_COMMAND" zu deaktivieren, bevor Sie die Escape-Sequenz für die Titeländerung senden, da ansonsten alle vorgenommenen Änderungen beim nächsten Shell-Prompt verloren gehen.
Jon Green
Eine ähnliche Frage für KDE finden Sie unter stackoverflow.com/questions/8782159/…
naught101,
Ich hatte dieses Problem beim Wechsel von OS X zu Ubuntu. Um benutzerdefinierte Titel in einer Mehrfachregisterkonfiguration zu erhalten, habe ich gnome-terminal --load-configzusammen mit diesem Skript, das ich geschrieben habe, verwendet.
Halfer
3
Füge Folgendes zu deiner .bashrc-Datei in deinem Home-Verzeichnis hinzu, # set title of current terminal setTerminalTitle(){ echo -ne "\033]0;${1}\007" } alias termttl=setTerminalTitlejetzt kannst du termttl alias verwenden, um den Titel termttl askubuntu
festzulegen,
1
"Geschützt", daher kann ich keine Antwort geben. Gnome3 gnome-terminalStandard ist PROMPT_COMMAND=__vte_prompt_command. Dies verwendet Werte aus Profilen in Einstellungen. Wenn mehrere Profile vorhanden sind, verfügen die Menüelemente " Neuer Tab" und " Neues Fenster" über ein Untermenüelement für jedes Profil. Die manuelle Möglichkeit besteht darin, eine neue Terminalregisterkarte zu öffnen, mit der rechten Maustaste auf den Registerkartentitel zu klicken und Titel festlegen ... auszuwählen . (Dies würde in einer separaten Antwort so viel einfacher zu lesen sein, aber ...)
Rich

Antworten:

145
  • Die benutzerfreundlichste Methode ist die Auswahl über das Menü Terminal -> "Titel festlegen ...".

  • Es gibt jedoch auch andere Möglichkeiten, die Sie ausstellen können

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

    Dies führt möglicherweise nicht zu dem gewünschten Effekt, da die Wahrscheinlichkeit groß ist, dass Sie .bashrcdieses Verhalten überschreiben.

  • Bring uns zur letzten Methode, die ich schamlos aus meiner herausgerissen habe .bashrc.

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

Als zusätzliche Referenz ist dies die bestimmte Zeile in meinem .bashrc

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

Möglicherweise müssen Sie diesen Code auch in Ihrem ~ / .bashrc auskommentieren

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
Ward Muylaert
quelle
2
Müssen wie erwähnt auskommentiert oder entfernt werden, um wirksam zu werden!
Oben ohne
1
@Ward: PROMPT_COMMANDist ein auszuführendes Programm . PS1und PS1sind Textzeichenfolgen , die angezeigt werden. Im obigen Beispiel wird der Befehl ausgeführt echo, der dann einfach eine Zeichenfolge ausgibt. Weitere Informationen finden Sie unter man bashoder unter manpages.ubuntu.com/bash .
Sladen
29
GNOME-Terminal 3.16.2 sagtOption "--title" is no longer supported in this version of gnome-terminal.
Ivan Kozik
10
Unter Gnome 3.18.3 gibt es keinen Eintrag "Titel festlegen" in den Menüs: /
shadi
2
Für alle anderen, die durch das Gobbledegook in den obigen Zeichenfolgen verwirrt sind, handelt es sich um ANSI- Fluchtzeichen
WillC
65

Die Antwort von Ward ist großartig, wenn Sie Ihren Titel bei jedem Öffnen eines Terminals basierend auf dem Host festlegen möchten, auf dem Sie sich befinden. Wenn Sie jedoch nur schnell einen Titel festlegen möchten, können Sie Echo einfach selbst ausführen:

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

oder machen Sie eine einfache Funktion (in Ihrem ~/.bashrc), sagen wirtermtitle

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

mit dem du laufen kannst termtitle some title here.

naught101
quelle
3
oder in ähnlicher Weise können wir als Bash-Alias ​​hinzufügen, indem wir die folgenden Zeilen in ~ / .bash_aliases einfügen function set_title() { echo -ne "\033]0;${1}\007" } alias title=set_titleund dann Folgendes verwenden: $ title term_title
murarisumit
11
Scheint in GNOME-Terminal 3.6.2 leider nicht zu funktionieren.
AustinMarton
1
Scheint auch nicht in xterm 322 oder konsole 16.12 zu funktionieren ... Ich weiß leider nicht, ob es eine neue Methode gibt :(
naught101
2
@ 3ocene es ist in diesem Fall eigentlich egal, sie sind das Gleiche, aber es ist eine gute Angewohnheit, sich darauf einzulassen, denn zB $var_logund ${var}_logsind sehr verschiedene Dinge, und der Unterschied kann Fehler in Skripten verursachen.
Naught101
2
Wenn es bei Ihnen nicht funktioniert, liegt es wahrscheinlich daran, dass PROMPT_COMMAND var oder PS1 var gesetzt ist und es überschreibt. unset PROMPT_COMMANDoder stellen Sie es so ein, dass es auch den Titel ändert, zB export PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "$(basename $PWD)"'
gaoithe
32

Wenn Sie den Vim-Editor verwenden, können Sie diese Option auch in Ihrem vimrc aktivieren:

:set title

welches standardmäßig deaktiviert ist. Es werden coole Terminal-Titel gesetzt, die den Dateinamen, den Sie gerade bearbeiten, und einige andere Dinge anzeigen.

ulidtko
quelle
26

Der Vollständigkeit halber möchte ich hinzufügen, dass Sie den gnome-terminalTitel auch mit diesem Befehl festlegen können :

wmctrl -r :ACTIVE: -N "MyWindowTitle"

Sie müssen zuerst das Paket wmctrlInstallieren Sie wmctrl installieren .

Jesaja
quelle
1
MyWindowTitle wird im Titel des Terminals nicht angezeigt. Es wird angezeigt, wenn ich wmctrl -m tue.
Sureshvv
2
Beachten Sie, dass wmctrl den Fenstertitel und nicht den Tabulatortitel ändert, wohingegen die Lösung für maskierte Zeichen den Tabulatortitel ändert. Außerdem wird der Fenstertitel auf den ursprünglichen Tabulatortitel zurückgesetzt, sobald Sie zwischen den Tabulatoren wechseln.
Redochka
23

Argh, so viele Antworten ...

Ich habe versucht wmctrl, was fast geklappt hat, außer dass ich den Symboltitel nicht dauerhaft ändern konnte.

Das Problem ist, dass die PS1 in Bash in Ubuntu den Titel festlegt.

Die Standard-PS1 ist

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

... was den Titel in der ersten Escape-Sequenz festlegt: \e]0;\u@\h: \w\a

Es gibt also zwei Lösungen:

Lösung 1: Vereinfache PS1 und benutze dann PROMPT_COMMAND

Ändere PS1 zu etwas Einfacherem:

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

Dann benutze den PROMPT_COMMAND:

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

Lösung 2: PS1 direkt modifizieren

Ändere einfach die PS1 mit dem neuen Titel:

PS1='\[\e]0;newtitle\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Hugh Perkins
quelle
hi, ich mag deine antwort sehr. Würde es Ihnen etwas ausmachen, die Rolle von ]0;in Ihrem Code zu erklären ? Ich glaube, ich habe die Bedeutung von echo -e '\007 \033'mit dem ascii -oBefehl gefunden ... obwohl ich ehrlich gesagt nicht sicher bin, was das dort tut ... danke ...
isomorphismes
2
@iso \eoder \033ist das Escape-Zeichen (ESC), mit dem eine Escape-Sequenz gestartet wird. ]Startet einen Betriebssystembefehl (OSC). Für ein xterm 0;bedeutet "set the title" und \aoder \007ist die Glocke (BEL), die den OSC beendet. Weitere Informationen: en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences
wjandrea
@wjandrea Ich suchte nach den entsprechenden Escape-Buchstaben ( \eund \a) für \033und \007konnte sie jedoch nicht finden, da ich nicht die richtigen Keywords für die Eingabe in Google kannte. Der von Ihnen angegebene Link ist ebenfalls nützlich. Können Sie bitte Ihren Kommentar in eine Antwort umwandeln?
SebMa
10

Wenn Sie Ubuntu-Benutzer sind, können Sie den Titel eines Gnome-Terminal-Tabs über das HUD ändern .

Drücken Sie im Gnome-Terminal Alt, um das HUD aufzurufen, geben Sie die ersten Buchstaben ein, z. B. "tit", drücken Sie die Eingabetaste und geben Sie Ihren neuen Titel ein.

Dies ist eine sehr schnelle Methode und vermeidet die Verwendung der Maus.

Tom
quelle
1
Tatsächlich. Hält die Hände auf der Tastatur. Der vorhandene Titel wird angezeigt, sodass Sie mit dieser Methode schnell und einfach auch den vorhandenen Titel ändern können.
Brent Faust
tit ist nur für Englisch Ubuntu.
Törzsmókus
und die ganze Option wurde entfernt :(
törzsmókus
Der F2Schlüssel vermeidet auch die Maus.
Isomorphismen
@ Törzsmókus und Französisch - Titer ;)
wjandrea
3

Eine andere Möglichkeit, den Titel von zu ändern, gnome-terminalist die Verwendung von gconftool-2; Dadurch wird der ursprüngliche Terminaltitel für das ausgewählte Profil geändert , sodass mit Titeln wie "Apache", "Bearbeiten" usw. unterschiedliche Profile verknüpft sein können. Anschließend werden Sie gnome-terminalmit dem entsprechenden Profil gestartet , um den von Ihnen angegebenen Terminaltitel abzurufen. Dies steht im Gegensatz dazu, gnome-terminal --title "name"dass der Titel pro Terminal geändert wird, der im Profil angegebene ursprüngliche Titel jedoch nicht beeinflusst wird.

Sie können den folgenden Befehl in einem Skript verwenden, um den Namen des Terminals für ein Profil festzulegen, und den Namen des Terminals zu bestimmten Tageszeiten ändern, um Sie an bestimmte Dinge zu erinnern:

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

Dies ist für das Standardprofil, aber Sie können den Titel auch für andere Profile festlegen, indem Sie beispielsweise ein Defaultanderes Profil wie das Profile0folgende auswählen :

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

Ich dachte, diese Art, den Titel zu ändern, ist nützlich, weil sie in Skripten verwendet werden kann oder nur als schnelle Befehlszeilenmethode, um den Titel für das Profil festzulegen. Beachten Sie, dass Sie manchmal das Terminal mit dem angegebenen Profil neu starten müssen, damit die gconftool-2Einstellung wirksam wird. Die vollständigen verfügbaren Einstellungen für gnome-terminalkönnen mit aufgelistet werden gconftool-2 -R /apps/gnome-terminal.


quelle
3

Eine andere Lösung ist die Verwendung von xdotool zur Simulation von Tastenanschlägen, die in Skripten nützlich sein können:

  1. Setze eine Tastenkombination in gnome-terminal:

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

    Zum Beispiel das Assing Shift+Ctrl+Y.

  2. Installieren xdotoolSie, wenn Sie es noch nicht haben:

    sudo apt-get install xdotool
    
  3. Die folgende Befehlssequenz (die Sie auch in einem Bash-Skript verwenden können) legt den Terminal- / Tabulatortitel fest (Leerzeichen mit \):

    xdotool key ctrl+shift+y 
    xdotool type My\ new\ fabulous\ title
    xdotool key Return
    
  4. [optional] Sie können auch xdotool verwenden, um z. B. eine neue Registerkarte zu öffnen und den Titel mit den oben genannten Befehlen festzulegen. Verwenden Sie dazu:

    xdotool key ctrl+shift+t
    

    Erwägen Sie, eine Ruhezeit vor und nach dem Öffnen eines neuen Registers hinzuzufügen, z. B. sleep 1(um 1 Sekunde zu warten).

Dies ist nicht die eleganteste Lösung, aber es hat bei mir funktioniert! Die vorherigen Antworten haben in meinem Fall nicht funktioniert. Ich benutze Gnome-Terminal in Ubuntu 14.04 und wollte ein Bash-Skript erstellen.

MakisH
quelle
1

Um nur das aktuelle Arbeitsverzeichnis im Titel anzuzeigen, versuchen Sie Folgendes in Ihrer '.bashrc'-Datei:

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

oder

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

Dies funktionierte in meinem Gnome Terminal 3.18.3 .

Bearbeiten Sie Ihre .bashrc- Datei und fügen Sie diese Funktion hinzu

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

Vergessen Sie nicht sourceIhre .bashrc- Datei

$ source ~/.bashrc

Und dann können Sie einfach aktualisieren und den Terminaltitel wie folgt ändern:

$ termtitle "MariaDB CLI"
RousseauAlexandre
quelle
0

Meine Antwort ähnelt der neueren Antwort, die bei mir nicht funktioniert hat. Die ältesten Antworten funktionieren nicht mehr. Die mittlere alte Antwort ist zu viel geschrieben, deshalb habe ich eine Funktion in meiner ~/.bashrcDatei erstellt:

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

Nach dem Hinzufügen oder Ändern der Funktion oder wenn Sie den Titel ein zweites Mal zurücksetzen möchten, gehen Sie wie folgt vor:

. ~/.bashrc
termtitle Special Projects

Ansonsten tagtäglich einfach termtitlemit einem neuen Titel verwenden.

WinEunuuchs2Unix
quelle
-1

Falls arme Seelen wie ich gezwungen sind, tcsh zu verwenden, versuchen Sie Folgendes in Ihrer .cshrc:

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

Quelle und weitere Details: http://tldp.org/HOWTO/Xterm-Title-4.html

Gruselerdnuss
quelle
Ein Hinweis darauf, warum meine Antwort abgelehnt wurde, wäre nett gewesen :-(
spookypeanut
-1

Wenn Sie Gnome 3 verwenden, wurde die praktische Terminal > Set TitleMenüoption entfernt. Sie können ein gabelförmiges Gnome 2-Terminal installieren, das noch die Menüoption "Titel festlegen" enthält, und stattdessen Folgendes ausführen:

sudo apt-get install mate-terminal

Anstatt "Terminal" auszuführen, führen Sie "MATE Terminal" aus. Sie sollten wahrscheinlich auch Mate-Terminal in auswählen sudo update-alternatives --config x-terminal-emulator.

JDiMatteo
quelle