25 мая 2012 г.

Делаем скриншоты в LXDE/openbox кнопкой

В openbox/lxde нет родного способа снять скриншот, а мне этого так не хватало. Имеется способ снятия через утилиту import, входящую в состав imagemagick. Сначала вешаем на обычные кнопкосочетания PrtScr (снять весь экран) и Alt+PrtScr (снять текущее окно) вызовы скриптов. Для этого прописываем в ~/.config/openbox/lxde-rc.xml (для openbox в составе lxde) в секцию <keyboard>:
<keybind key="Print">
      <action name="Execute">
        <command>~/bin/screenshot-root.sh</command>
      </action>
</keybind>
<keybind key="A-Print">
      <action name="Execute">
        <command>~/bin/screenshot-int.sh</command>
      </action>
</keybind>
Итак, сами скрипты. Снятие всего экрана (~/bin/screenshot-root.sh):
#!/bin/bash
DATE=`/bin/date "+%0Y%0m%0d-%0k%0M%0S"`
import -window root "$HOME/Desktop/screenshot-$DATE.png"
Снятие указанной области (~/bin/screenshot-int.sh):
#!/bin/bash
DATE=`/bin/date "+%0Y%0m%0d-%0k%0M%0S"`
import "$HOME/Desktop/screenshot-$DATE.png"
Тут именно спросит какую область экрана выбрать (выделяется мышью). Имхо, это как раз удобнее, чем делать снимок именно выбранного окна целиком. Но при желании можно и окно. Для окна целиком такой скрипт (нагуглил способ, чуть подправил):
#!/bin/bash
DATE=`/bin/date "+%0Y%0m%0d-%0k%0M%0S"`
activeWinLine=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)")
activeWinId=${activeWinLine:40}
import -window "$activeWinId" "$HOME/Desktop/screenshot-$DATE.png"
Скриншоты из примеров будут появляться, как понятно, на рабочем столе с именем screenshot-датавремя.png.

1 комментарий: