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\\"

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


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:

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.