Gunakan tmux attach dengan xargs

1

Saya ingin membuat alias yang memungkinkan saya menelusuri semua jendela tmux saya dengan FZF dan kemudian melampirkan jendela itu. Apa yang saya miliki sejauh ini:

tmux list-windows -t main -F '#{session_name}:#{window_name}' | fzf | xargs "tmux attach -t"

# In FZF, I select a window named "main:mail".

Ini menghasilkan kesalahan:

open terminal failed: not a terminal

Saat saya menambahkan echo, perintah yang dihasilkan terlihat baik-baik saja:

tmux list-windows -t main -F '#{session_name}:#{window_name}' | fzf | xargs echo tmux attach -t```

=> tmux attach -t main:mail

Jika saya lari tmux attach -t main:mail secara langsung, ini berfungsi dengan baik.

Ada yang tahu apa yang saya lakukan salah?

Rincian sederhana tanpa fzf (yang menghasilkan kesalahan yang sama) adalah:

echo "main:mail" | xargs tmux attach -t

Remo
sumber

Jawaban:

1

tmux membutuhkan stdin untuk menjadi terminal, tetapi menggunakan pipa akan membuat stdin terhubung ke keluaran pipa. Solusi lain yang mungkin untuk Anda adalah

tmux attach -t "$(tmux list-windows -t main -F '#{session_name}:#{window_name}' | fzf)"
meuh
sumber
0

Berikut ini adalah solusinya, tetapi saya akan menghargai mengetahui mengapa hal di atas tidak berhasil dan memiliki solutino yang lebih baik:

run-shell tmux list-windows -t main -F "#{session_name}:#{window_name}" | fzf > /tmp/tmux-session && tmux attach -t $(cat /tmp/tmux-session)
Remo
sumber