Я пытался использовать DISPLAY=:0 import -window root "$HOME/Pictures/screenshot.png"
(import
является частью пакета ImageMagick), но на нем просто отображается черный экран.
Я хочу сделать это так, как я хотел автоматизировать открытие приложения и делать его скриншоты на разных языках, а для смены языков мне нужно перезапустить lightdm. поэтому запустите tty, чтобы ваш скрипт продолжал работать ...
В дополнение к существующим ответам, для отображения скриншота в ASCII в терминале:
xwd -root -display :0 | convert - jpg:- | jp2a - --colors
(Требуется x11-apps
для xwd
, imagemagick
для convert
и jp2a
). .)
Вот что сработало для меня.
chvt 7
DISPLAY=:0 import -window root "$HOME/Pictures/screenshot.png
chvt 1
Вот решение с использованием xwd
, которое доступно почти во всех установках Xorg:
xwd -root -out screenshot.xwd
Файл screenshot.xwd
можно открыть с помощью GIMP:
Для получения дополнительной информации см. http://www.x.org/wiki/UserDocumentation/GettingStarted/ .
Попробуйте использовать затвор
DISPLAY=:0 shutter -f -e -n -o "$HOME/Pictures/screenshot.png"
Импорт не будет работать, поскольку корневое окно не используется. Композиция «обходит» его (каждое окно отображается в своем собственном буфере, а затем мультиплексируется на дисплей вместо старого способа, в котором все они отображались в «корневом» окне).
Кроме того, вам нужно убедиться, что VTY активен, прежде чем делать снимок экрана. Так, например,
#!/bin/bash
X :1 &
export DISPLAY=:1
sleep 10 # give time for X to start
gedit &
sleep 10 # give time for app to do something
chvt 8 # ensure the X display is active
shutter -f -e -n -o "$HOME/Pictures/screenshot.png" # screenshot
killall xorg # terminate X
Сидеть на одном компьютере и делать это с другого виртуального терминала, на котором работает X-сервер, не работает.
Это объясняется там: http://www.karlrunge.com/x11vnc/faq.html#faq-linuxvc . Цитата:
Q-108: Я использую виртуальные терминалы Linux (VT) для реализации «быстрого переключения пользователей» между сеансами пользователей (например, Бетти находится на Ctrl-Alt-F7 Бобби находится на Ctrl-Alt-F8, а Сид на Ctrl-Alt-F1: они используют эти нажатия клавиш для переключения между своими сессиями.) Почему вид в средстве просмотра VNC, подключающемся к x11vnc, либо полностью черный, обновить или пиксели испортились, если X-сессия, к которой подключен x11vnc, не находится в активном VT?
Похоже, это связано с тем, как приложения (процессы X-сервера в этом случае) должны «хорошо играть», если они не находятся на активном VT (иногда называемом VC для виртуальной консоли). То есть они не должны читать с клавиатуры или мыши или управлять дисплеем видео, если у них нет активного VT. Учитывая, что кажется, что вызов XGetImage () должен в конечном итоге получить данные кадрового буфера от самого видеооборудования, было бы разумно, чтобы опрос x11vnc не работал, если сеанс X не имел активного контроля над VT.
Кажется, нет простого способа обойти это. Даже xwd (1) в этом случае не работает (попробуйте.) Что-то должно быть сделано на более низком уровне, скажем, на XFree86 / Xorg X-сервере. Кроме того, использование теневого кадрового буфера (копия видеокадрового буфера хранится в основной памяти), по-видимому, не решает проблему (последняя проверка 2007 г.).
Если на рабочей станции никто не сидит, а вы просто хотите для удаленного переключения VT на тот, который связан с вашим сеансом X (чтобы x11vnc мог правильно его опрашивать), можно использовать команду chvt (1), например "chvt 7" для VT # 7.
BLOCKQUOTE>