tmux set-title funktioniert nicht

17

Um tmuxbei jedem Shell-Login zu starten , wurde dem ~/.bashrc(auf dem Server) Folgendes hinzugefügt :

if [ $TERM != "screen-256color" ] && [  $TERM != "screen" ]; then
    tmux attach || tmux new; exit
fi

Ich möchte auch den Fenstertitel in so etwas wie user@server(anstelle von user@localhost) als SSH in einen Host ändern . Hier ist mein ~/.tmux.conf:

set -g prefix C-a
unbind C-b
bind C-a send-prefix

set -g set-titles on
set -g set-titles-string "#T"

bind-key o split-window -v
bind-key e split-window -h

bind-key w kill-pane

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

Wie Sie sehen, set-titleswurde festgelegt on, aber es funktioniert nicht wie erwartet.

Mehr Informationen:

Außerhalb von tmux:

$ echo $TERM
xterm

Innerhalb von tmux:

$ echo $TERM
screen

show -g: https://clbin.com/h7oDh

tmux info: http://sprunge.us/XHCB

Und hier sind die Protokolle, wenn Sie tmux -vvvvvein bisschen laufen :

Wenn ich die Zeilen in ~/.bashrc, von meinem Laptop, ssh zum Server auskommentiere, wird die Titelleiste korrekt angezeigt ( quanta@server), dann tmuxfunktioniert der Start von dort auch wie erwartet.

Aber wenn ich tmuxsofort nach dem Login starten möchte, bleibt die Titelleiste quanta@Ubuntunach ssh.


UPDATE Fr 10 Mai 07:51:23 ICT 2013

Ich habe den exitBefehl gelöscht , um die Shell-Sitzung beim Schließen des letzten tmuxFensters nicht zu schließen :

if [ $TERM != "screen-256color" ] && [  $TERM != "screen" ]; then
    tmux attach || tmux new
fi

Das Merkwürdige ist:

  • SSH zum Server -> die Titelleiste: quanta@Ubuntu
  • trennen von tmux-> die Titelleiste wechseln zuquanta@server
  • tmuxErneut anhängen -> Die Titelleiste wird weiterhin korrekt angezeigt quanta@server

Ich bin nicht sicher, ob es mit der PROMPT_COMMANDUmgebungsvariablen zusammenhängt oder nicht:

Außerhalb von tmux:

$ echo $PROMPT_COMMAND 
echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"

Innerhalb von tmux:

$ echo $PROMPT_COMMAND
echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\033\\"
Quanten
quelle
Falls es in dieser Frage nicht offensichtlich ist. Sein Setup funktioniert einwandfrei, nur nicht, wenn er versucht, es von seinem .bashrc auszuführen.
slm
Bitte geben Sie die Ausgabe von tmux info.
slm

Antworten:

15

Problem gelöst!

Um das Scrollen mit nativen XTM-Mäusen zu ermöglichen , schlagen tmuxviele Wiki , Q & A-Sites und Blog-Posts vor, eine Zeile wie die folgende hinzuzufügen:

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

zu ~/.tmux.conf. Und es ist der Täter.

Um xterm-Titel im Terminalfenster zuzulassen, müssen Sie auch das XTFlag hinzufügen , etwa so:

set -g terminal-overrides "xterm*:XT:smcup@:rmcup@"

Quelle: http://opennomad.com/content/goodbye-screen-hello-tmux

Quanten
quelle
3
Vielen Dank für Ihren Beitrag. In meinem Fall rxvtist die Einstellungset -ga terminal-overrides ",rxvt*:XT"
favadi
2
Wie @favadi hervorhob, besteht die richtige Lösung dafür darin, die -aOption setzum Anhängen der smcup / rmcup-Überschreibungen zu verwenden. Dies behebt andere seltsame Probleme, zum Beispiel, dass die Cursorform nicht richtig eingestellt werden kann.
bläulich
2

Kam über diesen Thread aus der Mailingliste der tmux-Benutzer. Der Thread hatte den Titel: Set-Titel funktionieren nicht . Es gibt ein paar Dinge aus diesem Thread zu versuchen. Es gibt auch eine sauberere Version des Threads .

XTerm-Ressourcen

Für den Anfang bestand die mögliche Korrektur darin, der XTerm-Ressourcendatei die folgende Zeile hinzuzufügen ~/.Xresources:

XTerm*allowSendEvents: true

Tmux-Tipps debuggen

Es gab auch einige Debugging-Tipps in diesem Thread, die Ihnen ebenfalls helfen könnten.

ausführliche tmux

  1. Schließe alle tmux Sessions
  2. Führen Sie den Befehl aus: tmux -vvvvv
  3. Führen Sie den Befehl aus: vi foo
  4. Speicher die Datei
  5. Beenden Sie tmux

Danach sollten Sie 3 Dateien haben, so etwas wie diese:

  • tmux-out-21594.log
  • tmux-client-21592.log
  • tmux-server-21594.log

tmux info

$ tmux info
tmux 1.4, pid 22182, started Fri May 10 04:00:37 2013
socket path /var/run/tmux/tmux-500/default, debug level 0
system is Linux 2.6.35.14-106.fc14.x86_64 #1 SMP Wed Nov 23 13:07:52 UTC 2011 x86_64
configuration file is /home/saml/.tmux.conf
protocol version is 6

Clients:
 0: /dev/pts/12 (8, 11): 0 [132x24 xterm] [flags=0x1/0x38, references=0]

Sessions: [5/10]
 0: 0: 1 windows (created Fri May 10 04:00:37 2013) [132x23] [flags=0x0]
   0: bash [132x23] [flags=0x8, references=1, last layout=-1]
     0: /dev/pts/48 22183 13 1/23, 135 bytes; UTF-8 0/23, 0 bytes

Terminals:
xterm [references=1, flags=0x0]:
 1: acsc: (string) ``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~
 0: AX: (flag) true
 2: bel: (string) \007
 ...
 ...
144: smul: (string) \033[4m
145: vpa: (string) \033[%i%p1%dd
146: xenl: (flag) true

Jobs:
slm
quelle
Ich habe diesen Thread bereits gelesen, bevor ich hier nachfrage. XTerm*allowSendEvents: truehat nicht funktioniert. Die Protokolldateien wurden hochgeladen. Siehe meine aktualisierte Frage.
Quanten
1
In Zukunft sollten Sie diese Art von Elementen in Ihre Frage einbeziehen, um nicht die Zeit zu verlieren, die jeder damit verbringt, die Dinge, die Sie bereits ausprobiert haben, erneut aufzuwärmen.
slm