TMUX: Depois de dividir a janela, como eu sei o novo id do painel?

2

Parece um procedimento bastante simples que estou tentando realizar, mas procurei sem sucesso. Eu gostaria de criar uma ligação de chave que faz uma janela dividida e, em seguida, enviar chaves para o painel recém-criado; no entanto, preciso do id do painel para usar com o comando send-keys. O problema é que eu não sei quantos painéis estão atualmente abertos na janela; Assim, não sei de nenhuma maneira para o código em execução no painel original para deduzir o que o novo índice de painel será. Existe alguma maneira de descobrir esse novo índice ou id (qualquer um pode ser usado como um alvo)?

Obrigado.

    
por Kyndig 05.07.2017 / 22:14

5 respostas

0

Você está exagerando no seu problema. Quando você faz split-window , o novo painel se torna o destino atual para send-keys . Você não deve chamar o tmux na ligação, pois você já está no tmux. Experimente

bind-key s split-window \; send-keys "pwd" Enter
    
por 08.07.2017 / 17:48
1

No tmux, cada novo painel recebe um valor exclusivo, que você pode acessar usando a variável de ambiente TMUX_PANE . %código% isso mostrará o número do painel.

    
por 05.07.2017 / 23:46
1

Bem, eu ainda prefiro encontrar uma maneira direta de obter o novo ID de painel, mas pelo menos consegui realizar meu objetivo chamando um script de shell em vez de tentar fazer tudo no tmux.conf . Parece meio desajeitado para mim, mas funciona. tmux.conf:

bind s run-shell "~/bin/tmux_split_pane.sh '#{window_id}' '#{pane_id}'"

e o script:

#!/bin/sh

current_window_id=$1
current_pane_id=$2

tmux split-window -t $current_pane_id
new_pane_id=$(tmux list-panes -F '#{pane_id}' -t "$current_window_id" | sort -n --key=1.2 | tail -1)
tmux send-keys -t $new_pane_id -l "update_env" \; send-keys -t $new_pane_id Enter
    
por 08.07.2017 / 00:21
1

Outra forma, especialmente útil para scripts de shell.

tmux split-window -P -F "#{pane_id}"

gerará o id do painel, (por exemplo,% 4) em stdout

para que você possa fazer

bash_var=$(tmux split-window -P -F "#{pane_id}"

se você quiser capturá-lo em uma variável shell / bash.

Extraído daqui: link

    
por 12.11.2018 / 02:59
0

Eu fiz isso enviando o id do novo painel por meio de um pipe nomeado.

mkfifo pane_id
tmux split-window -h \; send-keys 'echo $TMUX_PANE > pane_id' Enter \; select-pane -t "$TMUX_PANE"
cat pane_id
    
por 17.04.2018 / 06:48

Tags