Terminal penceresi başlığını tmux penceresiyle senkronize etme


7

Zamanımı izlemek için "Zamanlama" adlı bir program kullanıyorum. Zamanlama, iTerm'deki mevcut pencerenin adını kategorizasyon amacıyla kullanır.

Şu anda aktif olan tmux penceresinin adıyla eşleşmesi için geçerli iTerm başlığını ayarlamak istiyorum.

İle bir dosya kurdum ~/.config/fish/functions/fish_title.fish:

function fish_title
  tmux display-message -p '#W'
end

Bu, yeni bir terminal penceresi açtığımda, mevcut Tmux pencere başlığını terminal penceresine başarıyla çıkarıyor. Ancak, bir tmux penceresini yeniden adlandırırsam veya yeni bir pencereye geçersem, terminal güncellenmez.

Ben böyle bir şey kullanmak eğer güncelleştirme yapar pwdiçinde fish_title:

function fish_title
  pwd
end

fish_titleTmux pencere adını dinamik olarak kapma konusunda bir fikrin var mı?

Yanıtlar:


14

Dikkate alınması gereken ilk şey, kabuğundan tamamen bağımsız olarak bunu tmux ile yapabileceğin. Aşağıdakileri ~ / .tmux.conf; Örneğin:

set-option -g set-titles on
set-option -g set-titles-string "#S / #W"

Ayrıca, iTerm2'nin programların başlığı bir kaçış dizisi ile ayarlamasına izin verecek şekilde yapılandırıldığından emin olmanız gerekir. Https://www.iterm2.com/documentation-one-page.html adresindeki "Terminal sekme / pencere başlığını ayarlayabilir" bölümüne bakın .

Fakat asıl probleminiz fish_title işlevinin gönderdiği kaçış dizisinin tmux tarafından geçilmemesi. Tmux, bunun yerine, bölme başlığını ayarlamak için değeri kullanır. Bu, açıkça belirtilmemekle birlikte, "İSİMLER VE ADI" bölümünde açıklanmıştır man tmux. Ekle #Tiçin set-titles-stringsizin aracılığı pencere adıyla aynı değere ayarlanmış olan, aslında olduğunu görmek için fish_titleişlevi.


Ah, bunu bilmiyordum; ~ / .tmux.conf hakkındaki ilk yorumunuz benim için mükemmeldi. Teşekkürler!
thekevinscott
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.