staging.inyokaproject.org

[Tipp] Terminal passend benennen

Status: Ungelöst | Ubuntu-Version: Ubuntu
Antworten |

FLoH.tar

Anmeldungsdatum:
6. Januar 2006

Beiträge: 470

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

Antworten |