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)
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?
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)
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.