Dieses LDP-Howto zeigt, wie Sie den Titel eines xterm ändern.
Ich weiß, dass dies auch mit dem xtitle
Befehl möglich ist.
Bevor ich eine Aktion mit langer Laufzeit aufrufe, verwendet mein Skript solche Techniken, um den Titel seines xterm-Fensters zu ändern.
Ich möchte den Namen des xterm-Fensters extrahieren, bevor ich es ändere, damit ich nach Abschluss der lang laufenden Aktion den Titel auf den vorherigen Wert zurücksetzen kann.
Es wäre eine Art Umkehrung zu xtitle ... Ist das überhaupt möglich?
xterm
es einen Stapel für den Fenstertitel, wenn Sie herausfinden können, wie man ihn verwendet.Antworten:
Verwenden Sie ein
xtitle
Skript.Es gibt viele Varianten im Internet, aber ich neige dazu, eine zu verwenden, die davon abhängt
xprop
http://www.shelldorado.com/scripts/cmds/xtitle
quelle
xtitle
nur für lokale Sitzungen funktioniert.Es gibt eine Kontrollsequenz zum Abfragen des aktuellen Titels, die jedoch aus Sicherheitsgründen normalerweise deaktiviert ist. Dies liegt daran, dass ein Schadprogramm oder sogar nur eine cattierte Textdatei beliebige Zeichenfolgen einfügen kann, als ob sie auf der Tastatur eingegeben würden, indem zuerst der Titel festgelegt und dann die Rückmeldung angefordert wird. Daher wurde stattdessen der Titelstapel eingeführt.
Mit dem folgenden Befehl werden die aktuellen Fenster- und Symboltitel auf dem Stapel gespeichert:
Dadurch wird der Titel auf Folgendes gesetzt
my title
:Dadurch werden die vorherigen Fenster- und Symboltitel wiederhergestellt:
quelle
Für den trivialen (und wahrscheinlich häufigsten) Fall, in dem die Eingabeaufforderung nach dem aktuellen xterm abgefragt werden soll, verwenden Sie einfach
xprop -id $WINDOWID WM_NAME
. Wenn Sie den Wert für die Manipulation in einem Shell-Skript extrahieren möchten, können Sie etwas teureres ausführen, z.Verwenden Sie bash alleine (um den Aufruf von awk und xargs zu vermeiden):
Das xargs-Echo im ersten Beispiel und das eval im zweiten Beispiel dienen lediglich dazu, die Anführungszeichen zu entfernen, die xprop um den Wert setzt.
Ersetzen Sie WM_NAME durch WM_ICON, wenn Sie den Symbolnamen anstelle der Zeichenfolge in der Titelleiste erhalten möchten.
quelle
Wenn ich Ihre Frage richtig verstehe, sollten Sie in der Lage sein, den aktuellen xterm-Titel zu erhalten, indem Sie die
$PROMPT_COMMAND
Variable untersuchen, z.und Sie können es wie folgt einstellen (Zeilenumbruch zur besseren Lesbarkeit):
quelle
PROMPT_COMMAND
ist nicht die maßgeblichste Methode, um den Titel abzurufen, da er nicht immer festgelegt ist und jeder von Ihnen ausgeführte Befehl den Titel zwischen den Eingabeaufforderungen ändern kann. Für die höchste Genauigkeit sind wahrscheinlich Terminalemulator-spezifische Steuersequenzen der richtige Weg.$PROMPT_COMMAND
ist nicht der Fenstertitel. Sie haben nichts miteinander zu tun.