4 октября 2011 г.

Скриншот gdm

Для предыдущего поста мне пришлось сделать скриншот GDM. Попробовала в разных вариантах DISPLAY=":0" scrot и скрипт:

#!/bin/bash
export DISPLAY=:0.0
sudo -u gdm gnome-screensot
Но не сработало.
Позже нашла скрипт, который в изменённом виде сработал:
chvt 8 ; XAUTHORITY=/var/lib/gdm/:0.Xauth DISPLAY=:0.0 sudo scrot -d 5; chvt 2
Можно конечно не писать всё это руками, а просто сохранить строку в файл и дать ему права на выполнение. Затем нужно переключиться в один из терминалов (в данном случае второй), например, с помощью Ctrl+Alt+F2. А затем написать там эту строку или написать полный путь к файлу, в котором она записана.
Для этой команды должна быть установлена программа scrot. Произойдёт переключение на виртуальный дисплей с запущенными иксами, он будет «сфотографирован» с задержко в 5 секунд, затем произойдёт возвращение во вторую виртуальную консоль.
То есть последнюю цифру можно заменить в зависимости от того, откуда команду предполагается запустить. А первая цифра показывает расположение первого виртуального дисплея, то есть в данном случае он находится на месте восьмой виртуальной консоли (Ctrl+Alt+F8). Хотя обычно иксы запускаются в седьмой, это GDM почему-то так делает.
Есть ещё вариант, для него scrot не нужен, нужны imagemagick и, возможно, xnest:
chvt 8 ; sleep 5 ; XAUTHORITY=/var/lib/gdm/:0.Xauth DISPLAY=:0.0 sudo import -window root screen.png; chvt 2
Но первый вариант мне больше нравится: от него в домашней директории остаётся файл с именем в виде даты, а от второго варианта файл с заданным именем (screen.png).
Ещё способ:
chvt 8; sleep 5; XAUTHORITY=/var/gdm/:0.Xauth DISPLAY=:0.0 import -window root /tmp/gdm-screenshot.png
Правда, тут в результате файл скриншота окажется в папке /tmp/ и придётся оттуда его доставать. Последние два варианта я не пробовала.


7 комментариев:

  1. Может, можно бы было fbgrag поиграться. Я им терминалы "фотал", с gdm, думается, тоже справился бы. Но не ручаюсь

    ОтветитьУдалить
  2. Зачем всё это из-под рута?

    >и, возможно, xnest
    Зачем?
    >от второго варианта файл с заданным именем (screen.png).
    import -window root "$(date -SomeFancyArgsToFormatDate)".png

    ОтветитьУдалить
  3. А вот не работает не из-под рута.

    А насчёт второго смотрим последнее предложение. "Последние два варианта я не пробовала." Как нашла, так и переписала. Вопросы "зачем" и прочее не ко мне.

    ОтветитьУдалить
  4. Этот комментарий был удален автором.

    ОтветитьУдалить