Existe uma maneira de listar as janelas de uma sessão de tela a partir de um terminal não interativo?
screen -S 'screen_name' -X windows
De acordo com o gnu.org , este comando exibe a lista de janelas usando a linha de mensagem .
Isso é bom e elegante para um console interativo, mas eu preciso disso para imprimir na saída padrão para que eu possa lê-lo em outro programa.
Qualquer maneira de fazer isso?
SOLUÇÃO
Descobri que a melhor maneira de fazer isso é obter a lista de ids do windows usando este comando: (como postado por Stephen Harris)
screen -S 'pid.screen_name' -Q windows
Embora isso trunque os nomes das janelas quando elas são impressas, na verdade não trunca o tamanho total da saída. Então, se eu tiver 20 janelas em uma sessão de tela, essa será a saída.
> screen -S 'pid.screen_name' -Q windows
0 bash 1 bash 2 bash 3 bash 4 bash 5 bash 6 bash 7 bash 8 bash 9 bash 10 bash 11 bash 12 bash 13 bash 14 bash 15 bash 16 bash 17 bash 18 bash 19 bash 20 bash
Eu tentei isso com um número absurdo de janelas.
Com isso, você pode analisar quantas janelas existem na sessão de tela e, em seguida, emitir um comando "title" para cada um usando o seguinte comando:
screen -S 'pid.screen_name' -p %window_id% -Q title
Substitua %window_id%
por cada ID de janela do comando windows
.
Desta vez, o título da janela não é truncado. Portanto, o nome da tela inteira é enviado para a saída padrão.