Bisakah saya menetapkan judul default untuk jendela tmux?

38

Saat ini judul default-nya adalah reattach-to-user-namespace(OS X), yang cukup menyebalkan. Apakah ada opsi yang bisa saya masukkan ke saya tmux.confuntuk mendapatkan judul default lain?

Jika tidak, bagaimana cara saya membuat ikatan kunci yang menciptakan jendela baru dan kemudian meminta saya untuk nama?

js-coder
sumber
Lihat jawaban di sini superuser.com/questions/306028/…
Fredrik Pihl
Itu tentang menonaktifkan penggantian nama otomatis (yang sudah saya lakukan), bukan tentang nama default, kan?
js-coder
Saya kira Anda benar, maaf!
Fredrik Pihl
Saya menggunakan set-option -g default-command "reattach-to-user-namespace -l zsh", dan sebagian besar waktu berakhir dengan jendela bernama zsh, seperti yang diinginkan. Untuk alasan yang tidak diketahui, kadang-kadang nama tidak berganti, dan jendela dipanggil reattach-to-user-namespace. Saya masih belum melihat pola kapan / mengapa ini terjadi, tetapi sepertinya ada bug yang halus, atau sesuatu dalam konfigurasi saya.
Jim Stewart
Apa cara terbaik untuk memasukkan nomor jendela dalam nama?
DanCat

Jawaban:

43

Tidak ada nama jendela default global yang diterapkan ke semua jendela baru; mereka default ke (bagian dari) "kata" pertama dari perintah (atau shell default jika tidak ada perintah). Jendela Anda mungkin default ke reattach-to-user-namespacekarena Anda itulah bit pertama yang menarik dari default-commandnilai Anda .

Itu akan sedikit bulat, tetapi Anda bisa menempatkan perintah default Anda di skrip shell dan arahkan default-commandke skrip itu. Dengan konfigurasi itu nama jendela default (untuk windows yang dibuat tanpa perintah eksplisit) akan menjadi apa pun yang Anda beri nama skrip shell.

Jika tidak, ada beberapa cara untuk secara manual memberi nama / mengubah nama jendela:

  • Saat pembuatan dengan -n:

    new-window -n 'some name'
    

    Anda dapat mengikat kembali c(kunci default yang digunakan untuk membuat jendela) untuk memasukkan "nama default" yang Anda pilih:

    bind-key c new-window -n 'default name'
    
  • Ganti nama jendela yang ada:

    rename-window 'new name'
    

    Ada juga pengikatan default (Awalan ,) yang akan meminta Anda untuk nama baru dan mengganti nama jendela.

  • Ganti nama jendela melalui "escape sequence" yang dikirim ke panel panty:

    # E.g. in a shell:
    printf '\033kWINDOW_NAME\033\\'
    

"Beri saya nama untuk jendela baru" Anda dapat dilakukan seperti ini (meminta sebelum atau setelah membuat jendela):

bind-key C command-prompt -p "Name of new window: " "new-window -n '%%'"

bind-key C new-window \; command-prompt -p "Name for this new window: " "rename-window '%%'"
Chris Johnsen
sumber
2
Wow, ini jawaban yang sangat epik, terima kasih banyak! :)
js-coder
7
Saya menemukan cara untuk menetapkan judul default: set-option -g default-command "tmux rename-window base; reattach-to-user-namespace -l zsh"menetapkan judul default base. Anda mungkin ingin menambahkan ini ke jawaban Anda. :)
js-coder
solusi Anda memecah manajer tmux seperti tmuxinator. Jika demikian, tab tidak dapat diganti namanya
SystematicFrank
4

tmux mengambil perintah pertama sebagai nama jendela.

Katakanlah Anda ingin "i" menjadi judul default, Anda dapat menipu seperti ini.

set-option -g default-command "i > /dev/null 2>&1; reattach-to-user-namespace -l bash"

Ini lebih baik daripada

set-option -g default-command "tmux rename-window i; reattach-to-user-namespace -l bash"

karena jika Anda membuat panel setelah Anda menetapkan judul jendela secara manual, judul tersebut akan diubah namanya kembali menjadi "i" lagi.

David
sumber
1

Selain jawaban Chris tentang pengaturan judul jendela menggunakan new window -n 'somename', Anda juga dapat memberikan string kosong ''sebagai nama jendela. Dengan cara ini, saya dapat menggunakan pintasan default (awalan + c) dan tidak perlu memunculkan nama untuk windows sementara, tetapi masih bisa mengganti nama ketika diperlukan:

bind-key c new-window -n ''

Ferdy
sumber
1

Bukan benar-benar jawaban lebih dari peretasan:

Saya membuat symlink dengan

sudo ln -s /usr/local/bin/reattach-to-user-namespace /usr/local/bin/pbash

Dan sekarang ini ditampilkan sebagai pbashjudul default.

Marco Aurelio
sumber