Как сделать screencap другим дисплеем Xorg?

Я начал новую сессию X из моего текущего:

xinit xterm -- :128 

На дисплее появляется X-сеанс :128 , xterm запускается в нем, и все в порядке.

Я снова переключился на экран :0 (по умолчанию) и попытался screencap новый экран:

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

и полученный файл был просто большим черным прямоугольником. Я также пробовал с import imagemagick, безрезультатно. Что происходит не так?

Похоже, что scrot способен это сделать, проверенный с помощью:

 xinit thunar -- :128 DISPLAY=:128 scrot 

дал мне правильный снимок экрана.

(но, к сожалению, скот оставался ненадолго)

Оказывается, x отображает пустой экран и прекращает перерисовку, когда их tty теряет фокус, с целью сохранения времени процессора и ОЗУ. Не похоже, что есть способ отключить эту функциональность.

Xvfb , «X Virtual Framebuffer» – это особая реализация, которая не учитывает это поведение как часть его дизайна и цели.

Вместо того, чтобы инициировать новый «нормальный» xsession, я запустил клиентское программное обеспечение в виртуальном фреймбуфере:

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

и screencled вот так:

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

Обратите внимание, что этот экран может быть сложнее для пользователя, поскольку он не привязан к терминалу.