tmux passo através de janelas abertas automaticamente

0

No meu servidor VPN, tenho alguns scripts que executo em janelas separadas e gostaria de percorrê-los em intervalos de poucos segundos, como o GIF abaixo.

Existe uma ligação tmux existente ou uma que eu poderia criar que, quando ativada, percorrerá as janelas abertas (não painéis) de uma sessão tmux? Mesmo se fosse uma espécie de macro que executasse o pressionamento de tecla abaixo em um loop seria ótimo. Eu também gostaria de usar a mesma ligação para parar de percorrer as janelas.

Ctrl + b , n , (aguarde 3 segundos)

    
por user208145 19.06.2018 / 01:07

1 resposta

1

Você pode escrever seu próprio script de shell pequeno para fazer isso. Por exemplo, crie o arquivo mytmux em algum lugar no seu PATH e torne-o executável chmod +x mytmux , com estes conteúdos:

#!/bin/bash
rotate(){
        file=/tmp/mytmux.$session
        if [ -f "$file" ]
        then rm "$file"
        else touch "$file"
             while [ -f "$file" ] && tmux next-window -t "$session"
             do     sleep 3
             done
        fi
}
case $1 in
-rotate)shift
        session=${1?session name}
        rotate ;;
esac

Eu fiz isso com um argumento -rotate caso você adicionasse outras rotinas auxiliares mais tarde. Para o seu ~/.tmux.conf adicione uma ligação adequada, por exemplo:

bind-key C run-shell -b 'mytmux -rotate #{session_name}'

O -b deve ser executado em segundo plano. A primeira vez que você digita control-b C , o arquivo tmp não existe, portanto o loop while executa a emissão de um comando next-window a cada 3 segundos. A segunda vez que o arquivo tmp é removido e o primeiro script será interrompido. Você deve esperar 3 segundos antes de começar de novo ou você pode acabar com 2 scripts rodando!

    
por 20.06.2018 / 12:04