Универсальный способ быстро сделать скриншот в linux

Источник: habrahabr
felix0id

Как дошло до жизни такой

С переходом ubuntu на unity как-то резко пришло просветление и жажда чего-то такого, что не приходилось бы раз в пол года переделывать с нуля. Поставил себе arch, а там дошло до минимализма и нежной любви к xfce.

Правда, лень моя тогда ещё была не столь развита и скриншоты делались при помощи GIMP'а.
За подробностями - прошу под кат.

Прошло время...

И надоело мне это нудное дело. Решил я автоматизировать получение скриншотов и, немного покопавшись, обнаружил, что любимый консольный графический редактор ImageMagick выполняет эту работу на раз:
import -window root $filename.png # или любое другое расширение, как удобно
И у нас появляется снимок всего экрана. Повесить на любое сочетание клавиш проблем не составит

Пойдём дальше. Если сделать:
import $filename.png
то выделенная область (или выбранное окно) сохраняется в виде того же файла. Правда, неприятность в том, что окно сохраняется без рамки. Добавление ключика "-frame" исправляет это.

Ну, уже образовался небольшой скриптик, который сохраняет скриншот с датой:
#!/bin/bash case $1 in full) import -window root ~/Images/Screenshots/screen_$(date +%F_%H-%M-%S).png ;; window) import -frame ~/Images/Screenshots/screen_$(date +%F_%H-%M-%S)_window.png ;; esac
Его можно развесить на разные сочетания клавиш и делать скриншоты всего экрана, либо выделенной области/окна.
Можно на этом и останоситься…

Но Лень шептала: "Продолжай, всегда есть, что можно улучшить"

Так и случилось. Ведь можно сразу же класть скриншоты прямо в облако:
#!/bin/bash case $1 in full) import -window root ~/Dropbox/Public/Screenshots/screen_$(date +%F_%H-%M-%S).png ;; window) import -frame ~/Dropbox/Public/Screenshots/screen_$(date +%F_%H-%M-%S)_window.png ;; esac
Душа радовалась. Но, если уж оно сразу в облаке, можно пойти дальше и тут же получать ссылку на паблик. В этом поможет утилитка xclip, которая работает с буфером обмена и CLI-интерфейс для dropbox. В результате, получается такая штука:
#!/bin/bash case $1 in full) name=~/Dropbox/Public/Screenshots/screen_$(date +%F_%H-%M-%S).png import -window root $name dropbox puburl $name / xclip -i;; window) name=~/Dropbox/Public/Screenshots/screen_$(date +%F_%H-%M-%S)_window.png import -frame $name dropbox puburl $name / xclip -i;; esac
У нас в primary-буфере оказывается ссылка на свежесозданный файл.
Вот, кстати, и он (правда, переложен в другое место)
screenshot
То, что это выполняется при помощи imagemagick позволяет вытворять со скриншотом всё, что угодно, вплоть до изменения масштаба, сжатия до необходимого качества и так далее. Каждый изголяется, как может, а инструмент позволяет.
А вот то, что от этого скрипта нужно, он выполняет на все 100%. Надеюсь, многим поможет.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=35219