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

в 8:17, , рубрики: bash, DropBox, imagemagick, linux, screenshot, велосипед, метки: , , , ,

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

С переходом 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%. Надеюсь, многим поможет.

Автор: felix0id

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js