Como faço para screencapar outro display do Xorg?

4

Eu iniciei outra sessão X da minha atual assim:

xinit xterm -- :128

Uma sessão X começa na exibição :128 , xterm é executada e tudo está bem.

Voltei para a tela :0 (o padrão) e tentei screencap da nova exibição:

$ xwd -root -screen -out screencap.xwd -display :128

e o arquivo resultante era apenas um grande retângulo preto. Eu também tentei com imagemagick import , sem sucesso. O que está errado?

    
por enthdegree 05.08.2012 / 21:24

2 respostas

2

Parece que scrot é capaz de fazer isso, testado com:

xinit thunar -- :128
DISPLAY=:128 scrot

me deu uma captura de tela correta.

(mas, infelizmente, o scrot não foi mantido por um bom tempo)

    
por 06.08.2012 / 21:25
2

Acontece que x exibe em branco a tela e pára de redesenhar uma vez que seu tty perde o foco, com a intenção de economizar tempo e memória RAM da CPU. Não parece haver uma maneira de desativar essa funcionalidade.

Xvfb , 'X Virtual Framebuffer' é uma implementação especial que não apresenta esse comportamento como parte de seu design e objetivo.

Em vez de iniciar uma nova xsession 'normal', executei o software cliente em um framebuffer virtual:

xvfb-run <client software> --server-args="-screen 0 [width]x[height]x[bitdepth]"

e screencapped assim:

xwd -root -d :99 # (the default for xvfb)

Observe que essa exibição pode ser mais difícil para o usuário, pois não está vinculada a um terminal.

    
por 07.08.2012 / 02:20