Ich versuche, screen
meinen xterm
Titel festzulegen . Ich arbeite außerhalb davon screen
, screen
behalte aber den Titel bei, den ich zu Beginn hatte. Hier ist mein .bashrc
:
Funktion bash_prompt_command () { # Wie viele Zeichen der $ PWD sollen erhalten bleiben? lokales pwdmaxlen = 25 # Zeigt an, dass Dir abgeschnitten wurde local trunc_symbol = ".." lokales Verzeichnis = $ {PWD ## * /} pwdmaxlen = $ (((pwdmaxlen <$ {# dir})? $ {# dir}: pwdmaxlen)) NEW_PWD = $ {PWD / # $ HOME / \ ~} local pwdoffset = $ (($ {# NEW_PWD} - pwdmaxlen)) if [$ {pwdoffset} -gt "0"] dann NEW_PWD = $ {NEW_PWD: $ pwdoffset: $ pwdmaxlen} NEW_PWD = $ {trunc_symbol} / $ {NEW_PWD # * /} fi Exportieren Sie NEW_PWD } PROMPT_COMMAND = bash_prompt_command # Farbkarte @ http://wiki.archlinux.org/index.php/Color_Bash_Prompt case "$ {TERM}" in "xterm") TITLEBAR = '\ [\ 033] 0; \ u @ \ h> $ {NEW_PWD} \ 007 \]' PS1 = "$ {TITLEBAR} \ [\ e [1; 32 m \] [\ e [0; 36 m \] \ u \ e [1; 32 m \] @ \ e [1; 33 m \] \ h \ e [ 1; 32m \]] \ e [0; 37m \] \ $ {NEW_PWD} / \ e [1; 32m \] \ $ \ [\ e [0m " ;; "Bildschirm") TITLEBAR = '\ [\ 033] 0; \ u @ \ h> $ {NEW_PWD} \ 007 \]' ESC = '\ [\ ek \ e \\\]' PS1 = $ {TITLEBAR} \ [\ e [1; 32 m \] [\ e [0; 36 m \] \ u \ e [1; 32 m \]] \ e [0; 37 m \] \ $ {NEW_PWD} / \ e [1; 32m \] \ $ $ {ESC} \ [\ e [0m " ;; *) PS1 = [\ e [1; 32 m \] [\ e [0; 36 m \] \ u \ e [1; 32 m \] @ \ e [1; 33 m \] \ h \ e [1; 32 m \ ]] \ e [0; 37 m \] \ $ {NEW_PWD} / \ e [1; 32 m \] \ $ \ [\ e [0 m " ;; esac
Und hier ist meine .screenrc
:
hardstatus alwayslastline Hardstatus-Zeichenfolge '% {= kg} [% {Y}% H% {g}] [% =% {= kw}% - Lw%?% {= b kR} (% {W}% n-% t%? (% u)%?% {= b kR})% {= kw}%?% + Lw%?%?% =% {g}] [% {Y}% l% {g}]% {g} [% {B}% m.% d.% Y% {G}% c% {g}] ' termcapinfo xterm | xterms | xs | rxvt ti @: te @ termcapinfo xterm 'hs: ts = \ E] 2;: fs = \ 007: ds = \ E] 2; screen \ 007' altscreen ein Shelltitel '$ | bash'
Was mache ich falsch?
Update (19. August 2010):
Das Problem besteht darin, dass Sie den Titel des Terminals nicht über den Bildschirm aktualisieren können, wenn Sie dies festlegen alwayslastline
. Meine Lösung bestand also darin, auf einen bestimmten, nützlichen Titel für meine Bildschirmsitzungen zu verzichten und sich damit abzufinden. Mein aktualisiertes .bashrc
und .screenrc
kann bei http://bitbucket.org/jsumners/rcfiles/src gefunden werden .
quelle
hardstatus alwayslastline
die ich fürscreen
vornehme, dasscreen
Festlegen desxterm
Titels verhindert. Nun, wenn ich nur herausfinden kann, wie man beides gleichzeitig macht.screen
den Fenstertitel festlegen und dann das Programm starten. Und dann verzichten Sie einfach auf dynamische Terminaltitelscreen
. :(Tatsächlich gibt es eine Möglichkeit, Escape-Sequenzen direkt über den Bildschirm an das xterm zu senden. Es war nicht leicht zu finden, aber vom Bildschirmcode (src / ansi.c) aus glaube ich, dass es seit 2005 da ist. Ich habe es in xterm, Gnome Terminal und Putty. Ich habe in mintty source eine Notiz gefunden, die besagt, dass es dort nicht funktioniert, nur weil sie nicht mit DCS umgehen (es sei denn, es wurde kürzlich behoben).
In der Dokumentation zum Bildschirm unten (unter http://www.gnu.org/software/screen/manual/html_node/Control-Sequences.html )
Der ANSI-DCS-Code (Device Control String) ist ein Escape-Code, der zum direkten Senden an ein Terminal verwendet wird (ich glaube, dies war der ursprüngliche Zweck vor vielen Jahren). Ein solcher String wird mit einem ST-Escape-Code (String Terminator) abgeschlossen.
Wickeln Sie die Zeichenfolge ein, um den Fenstertitel des Terminals in einem DCS..ST-Block festzulegen. Die Zeichenfolge durchläuft den Bildschirm und wird korrekt aktualisiert, auch wenn hardstatus alwayslastline verwendet wird.
DCS = \ 033P, ST = \ 033 \
Beispiel - Um den Fenstertitel mit dem aktuellen Arbeitsverzeichnis zu aktualisieren, verwenden Sie
Besser spät als nie! Hoffe das hilft jemandem.
Nur für den Fall, dass ich mich bei den Änderungen an der Bildschirmquelle irre: Ich verwende das neueste von Screen-Session-Git, das wiederum fast das neueste von Screen-Git verwendet (mit einigen Änderungen, die für Screen-Session spezifisch sind). Die Protokollnachrichten stammen jedoch aus dem Bildschirm 2005 (Sie können die an diesem Commit vorgenommenen Änderungen in Bezug auf die DCS-Verarbeitung sehen, wenn Sie das Bildschirm-Git-Repo klonen und den folgenden Befehl verwenden).
quelle
crb ist irgendwie richtig, aber
a) Der von ihm verwendete Escape-Code funktioniert bei mir nicht. Es sollte
\033k
statt\033_
. Siehescreen (1)
unter"TITLES (naming windows)"
. So sollte es sein:b) Diese Art des Escapings wird nur zum Setzen des Fenstertitels verwendet. Eine Instanz des Bildschirms kann mehrere Fenster haben, von denen jedes einen Namen hat. Dies ist das, was in
hardstatus
undcaption
mit dert
Escape-Sequenz angezeigt wird.c) Das normale Bash-Escape funktioniert, wenn Sie den richtigen Terminfo für xterm in setzen
.screenrc
:(dies auch
works on my machine
für Kitt)Um den richtigen Titel sowohl für das Bildschirmfenster als auch für den Putty / Xterm-Titel festzulegen, verwende ich Folgendes:
Als Referenz: http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x395.html
quelle
Ich werde die Frage nicht vollständig beantworten, aber ich möchte vorschlagen, wie das Problem gelöst werden kann. Viele Fenstermanager unterstützen die EWMH- Spezifikation. Es gibt auch ein Befehlszeilen-Tool,
wmctrl
das mit ihnen interagieren kann. Mit diesem Tool kann der Titel des aktiven Fensters einfach mit dem folgenden Befehl geändert werden:Es ist auch möglich, Fenstersymbol, Layout und andere Eigenschaften zu ändern. Das Tool wird wahrscheinlich nicht für PuTTY funktionieren, da Windows EWMH nicht unterstützt, aber die meisten Linux-Systeme sollten es akzeptieren.
Bei dieser Methode spielt es keine Rolle, ob Sie verwenden
screen
oder nicht.quelle
In den letzten 2 Wochen habe ich viele Foren durchsucht und die Antwort auf die Frage nicht gefunden:
Wie bekomme ich alle Befehlsausgaben in den Putty-Titel?
Benötigt, damit andere Programme wissen, wann einige Aufträge auf einem Server ausgeführt wurden und ob sie richtig oder falsch ausgeführt wurden. Plink stdout und stdin funktionierten nicht, ich benutzte viele Optimierungen mit Wartezeiten und für einige Befehle, die für andere nicht funktionierten. XSEL und XCLIP konnten auf diesem Server nicht installiert werden.
Also hier ist die Lösung:
Auf Putty Client und Suse Server sieht es so aus:
Hoffentlich kann das jemand nutzen. Es wird natürlich nicht für alle Servertypen und Putty-Client-Einstellungen funktionieren, aber die Idee sollte gut funktionieren.
quelle