gnu screen, um meine Fenstertitel nicht zu ändern

3126
Anton Pegushin

Ich setze aussagekräftige Namen für neue Fenster, die ich im Gnu-Bildschirm erstellt habe, aber wenn ich 'cd' oder öffne vim, wird dieser Name beispielsweise in 'pwd' geändert. Gibt es eine Möglichkeit, den Bildschirm daran zu hindern, den Titel zu ändern? Ich weiß, dass es eine solche Einstellung in tmux gibt, aber aus irgendeinem Grund scrollt vim in tmux mit mehreren vertikalen Splits wirklich langsam, also musste ich es aufgeben (tmux). Ideen geschätzt!

5

5 Antworten auf die Frage

3
Thomas Dickey

gnu screen scheint keine Möglichkeit zu haben, die Funktion auszuschalten (und Sie würden dies auf jeden Fall selektiv anwenden). Um dies zu beheben, können Sie das Shell- und Vim-Verhalten ändern:

1
Otheus

Von welchen "Fenstern" sprichst du?

Screen und möglicherweise das Shell und Vim senden für diese Dinge Term-Escape-Codes an das Terminal. Einige Terminalemulatoren sind nicht so gut darin, sie alle zu fangen, und werden im Wesentlichen Fubar sein. Aber es ist Ewigkeiten her, seit ich das gesehen habe.

Mit screen können Sie den Titel des Fensters title <title>festlegen und programmatisch einrichten (durch Bindung an Tasten oder spezielle ESC-Sequenzen), wie Sie möchten. Letztendlich senden diese Programme eine Sequenz an Ihr Terminal. Sie können die PROMPT_COMMANDUmgebungsvariable verwenden, um dies dynamisch zu ändern, z. B. von Ihrer cwd. Hier ist meins, was anscheinend von / etc / bashrc meines Systems festgelegt wird

printf "\033]0;%s@%s:%s\033\\" "$" "$" "$" 

Damit der Titel vollständig verschwindet, müssen Sie (mindestens) drei Dinge tun:

  1. alle, aber 1 - Bildschirm und ungesetzt PROMPT_COMMAND an der Eingabeaufforderung schließen und in dem ~/.profilenach /etc/bashrcgeladen.
  2. Verwenden Sie den titleBefehl auf dem Bildschirm . Ctrl-ADann :dann schlagen title ""<CR>. Sie können dies auch einstellen .screenrc.
  3. Senden Sie eine Nullsequenz aus der Shell:

    printf "\033]0;\033\\" 

Wenn etwas anderes (wie vim) es festlegt, müssen wir weiter recherchieren.

In der Bildschirm-Manpage gibt es einen Abschnitt zu TITLES, in dem das ausführlich besprochen wird.

1
guest_screener

Related, I found that after setting my window title (and ensuring that PROMPT_COMMAND was unset and that nothing untoward was in my PS1), that launching screen on some systems would result in my window title changing. After lots of experiments and frustration I finally found that by grabbing the screen package's installed file /etc/screenrc from a system that did NOT have this problem and using that to replace the same file on a system that did have the problem, it fixed my issue. screen now no longer changes my window title. Now exactly, what line or lines in the /etc/screenrc are doing that I do not know. The diff between the two screenrc's is huge and so I didn't even bother trying to sleuth it out.

1
W Dean Stanton

Die Zeile in / etc / screenrc war das Problem für mich

hardstatus string "[screen% n% ?:% t%?]% h"

Nachdem das identifiziert wurde, musste ich die Systemdatei nicht bearbeiten. Ich könnte den Bildschirm ändern, um den Titel zu ändern

STRG-A: hardstatus alwaysignore

für das aktuelle Fenster oder durch Hinzufügen des folgenden Befehls zu ~ / .screenrc für zukünftige Fenster:

hardstatus alwaysignore

(Ich habe die Registerkarte und die Fenstertitel meines Terminalfensters in der Bash-Eingabeaufforderung so festgelegt, dass sie nützliche Informationen enthält. Der Bildschirm hat mir nicht geholfen.)

1
math

In Centos wird dies durch Erstellen von / etc / sysconfig / bash-prompt-screen behoben, das von der Standardeinstellung / etc / bashrc ausgeführt wird. Wenn du

touch /etc/sysconfig/bash-prompt-screen chmod +x /etc/sysconfig/bash-prompt-screen exec bash 

dann wird es ausgeführt, was (da es leer ist) nichts bewirkt und Ihre Fenstertitel darauf verlassen. (Beachten Sie die exec bash, um bash neu zu starten, um dies in Ihrer aktuellen Shell auszulösen.)

hardstatus alwaysignore hat bei mir nicht funktioniert