Hallo,
dies hier ist keine Frage, sondern vielmehr eine Lösung des Problems, dass man bei mehreren offenen Terminalfenstern leicht den Überblick verliert, weil sie out-of-the-box mit nichtssagendem "user@machine ~:" betitelt sind. Besser finde ich es, wenn ich ein Terminal bzw. Reiter unterhalb eines Terminals) eigenhändig aussagekräftig betiteln kann, wie etwa "Dateien umbenennen" oder "ustunts install". Wenn es euch auch so geht und noch keine andere Lösung habt, lest weiter ☺.
Level 1: Innerhalb der Terminalsitzung Fenster neu benennen
Das wichtigste an der ganzen Chose ist die Datei, die die Shellumgebungsvariable PROMPT_COMMAND (Wert: Befehl der vor jedem Prompt noch ausgeführt wird) zurücksetzt, denn unser Titel soll ja bleibend sein, sowie den Fenster-/Reitertitel neu belegt. Bei mir ist diese Datei ~/bin/retitle-xterm.sh:
# Aufrufen mit "source /absoluter/pfad/retitle-xterm.sh" if [ "$1" ]; then if [ "$PROMPT_COMMAND" ]; then PROMPT_CMD_RESET=$PROMPT_COMMAND fi PROMPT_COMMAND="" echo -ne "\033]0;${1}\007" false else if [ "$PROMPT_CMD_RESET" ]; then PROMPT_COMMAND=$PROMPT_CMD_RESET fi true fi
Weil "source ~/bin/retitle-xterm.sh" sehr umständlich ist, habe ich mir einen Alias angelegt:
echo -ne 'alias nti="source ~/bin/retitle-xterm.sh"' >> ~/.bash_aliases
Wichtig: Wenn ihr noch keine Aliases habt, müsst ihr in der Datei ~/.bashrc den entsprechenden Abschnitt auskommentieren:
# Alias definitions. # You may want to put all your additions into a separate file like # ~/.bash_aliases, instead of adding them here directly. # See /usr/share/doc/bash-doc/examples in the bash-doc package. if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
Fertig. Aliases neu einlesen oder Shell neu starten und schon reicht ein
du@computer:~$ nti 'Neuer Titel'
Entscheidet man sich dann wieder für das dynamische Titelverhalten von vorher:
du@computer:~$ nti
Dies funktioniert aber nur, wenn der Titel nachträglich geändert wurde (d.h. nicht im GTK-Dialog von Level 2)!
Level 2: Beim Start eines Terminalfensters Titel in GTK-Dialog eingeben können
Ich will mich beim Start einer X-Shell an einen richtigen Titel erinnern lassen und diesen gleich eingeben können. Falls es nur darum geht mal schnell einen Befehl abzusetzen, soll ich die Abfrage mit ESC abbrechen können und alles bleibt beim alten.
1. Zenity installieren, aber ich glaube das ist out-of-the-box mit dabei
2. ~/.bashrc editieren:
Aus
# If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"' fi ;; *) ;; esac
... werde ...
# Alias definitions. <-- VON UNTEN HERAUFHOLEN SONST FINDET ER KEIN "NTI" # You may want to put all your additions into a separate file like # ~/.bash_aliases, instead of adding them here directly. # See /usr/share/doc/bash-doc/examples in the bash-doc package. if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) # Warum hat die BASH kein unless? *perlverwöhntsei* if nti "`zenity --entry --text="Bitte Titel eingeben:" --title="Neue Shell"`"; then PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"' fi ;; *) ;; esac
Sollte funktionieren. (getestet)
Hätte da doch noch ne Frage: Wie gehe ich mit der 0=wahr/1=falsch-Eigenheit der Bash eleganter um? Die obige if-Konstruktion erscheint mir unlogisch, funktioniert aber so. (Bin ich schon zu verPERLt?)
In der Hoffnung,
dass es der eine oder andere
gut gebrauchen kann,
FLoH.tar