Задача: наладить процедуру создания снимков экрана рабочего стола независимым от используемой графической оболочки системы способом.
Мне важно, чтобы снимок экрана делался по нажатию на соответствующую клавишу, без промедлений и лишних вопросов - чтобы я мог нащёлкать скриншотов происходящего, а уже потом разбираться с накопившимся графическим материалом.
Используем утилиты "Scrot" и "ImageMagick":
# aptitude install scrot imagemagick
Создаём директорию, в которой будут складываться снимки экрана:
$ mkdir -p ~/Screenshots
Пишем простенький скрипт, в котором фиксируется время создания снимка и делается таковой для всего экрана (или экранов, если их несколько), с сохранением в заготовленную ранее директорию:
# vi /usr/local/bin/screenshot-full.sh && chmod +x /usr/local/bin/screenshot-full.sh
#!/bin/bash
DATE=`date "+%Y-%m-%d_%H:%M:%S"`
scrot "$HOME/Screenshots/screenshot-$DATE.png"
exit ${?}
DATE=`date "+%Y-%m-%d_%H:%M:%S"`
scrot "$HOME/Screenshots/screenshot-$DATE.png"
exit ${?}
Пишем чуть более сложный скрипт для снимка только активного в данный момент окна:
# vi /usr/local/bin/screenshot-window.sh && chmod +x /usr/local/bin/screenshot-window.sh
#!/bin/bash
DATE=`date "+%Y-%m-%d_%H:%M:%S"`
ACWINID=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk -F "#" '{print $2}' | tr -d "[:space:]")
import -frame -window "${ACWINID}" "$HOME/Screenshots/screenshot-$DATE-window.png"
exit ${?}
DATE=`date "+%Y-%m-%d_%H:%M:%S"`
ACWINID=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | awk -F "#" '{print $2}' | tr -d "[:space:]")
import -frame -window "${ACWINID}" "$HOME/Screenshots/screenshot-$DATE-window.png"
exit ${?}
Настраиваем запуск скриптов по нажатию на клавишу "PrintScreen" и комбинацию клавиш "Alt + PrintScreen" путём внесения дополнения в основной конфигурационный файл "OpenBox", оконного менеджера LXDE - для примера:
$ cp ~/.config/openbox/lxde-rc.xml ~/.config/openbox/lxde-rc.xml.backup
$ vi ~/.config/openbox/lxde-rc.xml
$ vi ~/.config/openbox/lxde-rc.xml
....
<keyboard>
....
<!-- Launch Scrot when PrintScreen is pressed -->
<keybind key="Print">
<action name="Execute">
<command>/usr/local/bin/screenshot-full.sh</command>
</action>
</keybind>
<!-- Launch ImageMagik:import when Alt+PrintScreen is pressed -->
<keybind key="A-Print">
<action name="Execute">
<command>/usr/local/bin/screenshot-window.sh</command>
</action>
</keybind>
....
</keyboard>
....
<keyboard>
....
<!-- Launch Scrot when PrintScreen is pressed -->
<keybind key="Print">
<action name="Execute">
<command>/usr/local/bin/screenshot-full.sh</command>
</action>
</keybind>
<!-- Launch ImageMagik:import when Alt+PrintScreen is pressed -->
<keybind key="A-Print">
<action name="Execute">
<command>/usr/local/bin/screenshot-window.sh</command>
</action>
</keybind>
....
</keyboard>
....
Даём указание "OpenBox" перечитать и принять обновлённую конфигурацию:
$ openbox --reconfigure
Теперь можно щёлкать по клавише "PrintScreen/PrtSc", получая снимки экрана без отрыва от основного процесса.