tmux set-title ไม่ทำงาน?


17

ในการเริ่มต้นtmuxในการเข้าสู่ระบบเชลล์ทุกครั้งจะมีการเพิ่มสิ่งต่อไปนี้ลงใน~/.bashrc(บนเซิร์ฟเวอร์):

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

ฉันยังต้องการเปลี่ยนชื่อหน้าต่างเป็นบางสิ่งเช่นuser@server(แทนuser@localhost) เมื่อ ssh เป็นโฮสต์ นี่คือฉัน~/.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@'

อย่างที่คุณเห็นset-titlesถูกตั้งค่าเป็นonแต่มันไม่ทำงานอย่างที่คาดไว้

ข้อมูลเพิ่มเติม:

ภายนอก tmux:

$ echo $TERM
xterm

ภายใน tmux:

$ echo $TERM
screen

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

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

และนี่คือบันทึกเมื่อใช้งาน tmux -vvvvvสำหรับบิต:

หากฉันใส่เครื่องหมายในบรรทัด~/.bashrcจากแล็ปท็อปของฉัน ssh ไปยังเซิร์ฟเวอร์แถบชื่อเรื่องจะแสดงอย่างถูกต้อง (quanta@server ) จากนั้นก็เริ่มtmuxจากที่นั่นก็ทำงานได้ตามที่คาดไว้

แต่ถ้าฉันต้องการเริ่มต้นtmuxทันทีหลังจากเข้าสู่ระบบแถบชื่อเรื่องจะยังคงอยู่quanta@Ubuntuหลังจาก ssh


อัพเดทเมื่อวันศุกร์ 10 พฤษภาคม 07:51:23 ICT 2013

ฉันได้ลบexitคำสั่งเพื่อไม่ให้ปิดเซสชันเชลล์เมื่อtmuxปิดหน้าต่างสุดท้าย:

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

สิ่งที่แปลกคือ:

  • ssh to server -> แถบหัวเรื่อง: quanta@Ubuntu
  • แยกออกจากtmux-> แถบหัวเรื่องเปลี่ยนเป็นquanta@server
  • แนบกับtmuxอีกครั้ง -> แถบหัวเรื่องยังคงแสดงอย่างถูกต้อง quanta@server

ฉันไม่แน่ใจว่าเกี่ยวข้องกับPROMPT_COMMANDตัวแปรสภาพแวดล้อมหรือไม่:

นอกtmux:

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

ภายในของtmux:

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

ในกรณีที่มันไม่ชัดเจนในคำถามนี้ การตั้งค่าของเขาทำงานได้ดีไม่เพียง แต่เมื่อเขาพยายามเรียกใช้จาก. bashrc ของเขา
slm

tmux infoโปรดให้เอาท์พุทจาก
slm

คำตอบ:


15

แก้ไขปัญหา!

ต้องการเปิดใช้งานเมาส์ xterm พื้นเมืองเลื่อนในtmuxจำนวนมากของวิกิพีเดีย , Q & A เว็บไซต์ , บล็อกโพสต์แนะนำให้เพิ่มบรรทัดเช่น:

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

~/.tmux.confไปยัง และมันก็เป็นผู้ร้าย

หากต้องการอนุญาตชื่อ xterm ในหน้าต่างเทอร์มินัลคุณจำเป็นต้องเพิ่มการXTตั้งค่าสถานะดังนี้:

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

ที่มา: http://opennomad.com/content/goodbye-screen-hello-tmux


3
ขอบคุณสำหรับการโพสต์ของคุณ ในกรณีของฉันด้วยrxvtการตั้งค่าคือset -ga terminal-overrides ",rxvt*:XT"
favadi

2
ตามที่ @favadi ชี้ให้เห็นการแก้ไขที่เหมาะสมสำหรับสิ่งนี้คือการใช้-aตัวเลือกด้วยsetการผนวกการแทนที่ smcup / rmcup วิธีนี้จะแก้ไขปัญหาแปลก ๆ เช่นไม่สามารถตั้งค่ารูปร่างเคอร์เซอร์ได้อย่างถูกต้อง
blueyed

2

เข้ามาในหัวข้อนี้จากรายชื่อผู้รับจดหมายของ tmux หัวข้อหัวข้อ: การตั้งชื่อไม่ได้ทำงาน มีสองสิ่งจากชุดข้อความนี้ที่ควรลอง มีเธรดเวอร์ชันที่สะอาดกว่าเช่นกัน

ทรัพยากร XTerm

สำหรับการเริ่มแก้ไขในที่สุดก็คือการเพิ่มบรรทัดต่อไปนี้ไปยังไฟล์ XTerm Resources ของคุณ~/.Xresources:

XTerm*allowSendEvents: true

การดีบักเคล็ดลับ tmux

นอกจากนี้ยังมีเคล็ดลับการแก้ไขข้อบกพร่องบางอย่างในชุดข้อความนี้ที่อาจช่วยคุณได้เช่นกัน

verbose tmux

  1. ปิดเซสชัน tmux ทั้งหมด
  2. เรียกใช้คำสั่ง: tmux -vvvvv
  3. เรียกใช้คำสั่ง: vi foo
  4. บันทึกไฟล์
  5. ออกจาก tmux

หลังจากทำเช่นนั้นคุณควรมี 3 ไฟล์ดังนี้:

  • tmux ออก 21594.log
  • tmux-client-21592.log
  • tmux เซิร์ฟเวอร์ 21594.log

ข้อมูล 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:

ฉันได้อ่านเธรดนั้นก่อนถามที่นี่ XTerm*allowSendEvents: trueไม่ทำงาน อัปโหลดไฟล์บันทึกแล้ว ดูคำถามที่อัปเดตของฉัน
quanta

1
ในอนาคตคุณควรรวมรายการประเภทเหล่านี้ไว้ในคำถามของคุณเพื่อที่จะได้ไม่ต้องเสียเวลาในการฟื้นฟูทุกสิ่งที่คุณได้ลองไปแล้ว
slm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.