tmux set-titles nie działa?

17

Aby rozpocząć tmuxprzy każdym logowaniu do powłoki, do ~/.bashrc(na serwerze) dodano :

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

Chcę także zmienić tytuł okna na coś takiego user@server(zamiast user@localhost), gdy ssh zostanie hostem. Oto moje ~/.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@'

Jak widać, set-titlesustawiono na on, ale nie działa zgodnie z oczekiwaniami.

Więcej informacji:

Poza tmux:

$ echo $TERM
xterm

Wewnątrz tmux:

$ echo $TERM
screen

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

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

A oto dzienniki, gdy tmux -vvvvvtrochę się uruchamia :

Jeśli skomentuję wiersze w ~/.bashrc, z mojego laptopa, ssh na serwer, pasek tytułowy wyświetli się poprawnie ( quanta@server), a następnie zacznij tmuxod tego również działa zgodnie z oczekiwaniami.

Ale jeśli chcę zacząć tmuxnatychmiast po zalogowaniu, pasek tytułu pozostaje quanta@Ubuntupo ssh.


AKTUALIZACJA Pt 10 maja 07:51:23 ICT 2013

Usunąłem exitpolecenie, aby nie zamykać sesji powłoki, gdy ostatnie tmuxokno jest zamknięte:

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

Dziwne jest to:

  • ssh to server -> pasek tytułu: quanta@Ubuntu
  • odłącz od tmux-> przełącz pasek tytułu naquanta@server
  • dołącz do tmuxponownie -> pasek tytułu nadal wyświetla się poprawnie quanta@server

Nie jestem pewien, czy jest on powiązany ze PROMPT_COMMANDzmienną środowiskową, czy nie:

Poza tmux:

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

Wewnątrz tmux:

$ echo $PROMPT_COMMAND
echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\033\\"
kwanty
źródło
W przypadku, gdy nie jest to oczywiste w tym pytaniu. Jego konfiguracja działa dobrze, ale nie wtedy, gdy próbuje uruchomić go z .bashrc.
slm
Podaj dane wyjściowe z tmux info.
slm

Odpowiedzi:

15

Problem rozwiązany!

Aby włączyć natywne przewijanie myszą xterm tmux, wiele stron wiki , pytań i odpowiedzi , post na blogu sugerują dodanie wiersza:

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

do ~/.tmux.conf. I to jest winowajca.

Aby zezwolić na tytuły Xterm w oknie terminala, musisz również dodać XTflagę, coś takiego:

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

Źródło: http://opennomad.com/content/goodbye-screen-hello-tmux

kwanty
źródło
3
Dziękuję za twój post. W moim przypadku rxvtustawienie toset -ga terminal-overrides ",rxvt*:XT"
favadi
2
Jak wskazał @favadi, poprawnym rozwiązaniem jest użycie -aopcji z, setaby dołączyć przesłonięcia smcup / rmcup. To naprawi inne dziwne problemy, takie jak niemożność prawidłowego ustawienia kształtu kursora.
blueyed
2

Przeszedł przez ten wątek z listy dyskusyjnej tmux-users. Wątek został zatytułowany: set-titles nie działa . W tym wątku jest kilka rzeczy do wypróbowania. Jest czystsza wersja wątku .

Zasoby XTerm

Na początek ostatecznym rozwiązaniem było dodanie następującego wiersza do pliku zasobów XTerm ~/.Xresources:

XTerm*allowSendEvents: true

Debugowanie wskazówek Tmux

W tym wątku było również kilka wskazówek dotyczących debugowania, które również mogą ci pomóc.

pełny tmux

  1. zamknij wszystkie sesje tmux
  2. uruchom polecenie: tmux -vvvvv
  3. uruchom polecenie: vi foo
  4. Zapisz plik
  5. wyjdź z tmux

Po wykonaniu tej czynności powinieneś mieć 3 pliki, takie jak te:

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

informacje o tmux

$ 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
źródło
Przeczytałem już ten wątek, zanim zapytałem tutaj. XTerm*allowSendEvents: truenie działało Pliki dziennika zostały przesłane. Zobacz moje zaktualizowane pytanie.
kwanty
1
W przyszłości powinieneś uwzględnić tego rodzaju przedmioty w swoim pytaniu, aby nie marnować czasu na przerabianie rzeczy, które już wypróbowałeś.
slm