Pull to refresh

Снятие и загрузка скриншотов в один клик с помощью плагина Compiz на habreffect.ru и Dropbox

Reading time3 min
Views2.9K
imageimage

Сидя дома тихим воскресным вечером, я вдруг осознал что мне действительно нехватает быстрого снятия и загрузки скриншотов в Linux. Есть масса готовых решений но все они по той или иной причине меня не устраивали, как правило все готовые решения требовали слишком много кликов. Я взял в руки напильник и потратив 30 минут своего времени смог сделать действительно удобный способ загрузки скриншотов на habreffect.ru

Для загрузки на habreffect.ru нам понадобится:

— Установленный compiz, compizconfig-settings-manager и compiz-plugins
— Установленные пакеты curl, xsel, libnotify-bin
— Прямые руки

Для ленивых убунтоводов
sudo apt-get install compiz compizconfig-settings-manager compiz-plugins curl xsel libnotify-bin

Для загрузки на Dropbox нам понадобится:

— Установленный xsel и libnotify-bin, compiz compizconfigconfig-settings-manager compiz-plugins

Для ленивых убунтоводов
sudo apt-get install xsel libnotify-bin compiz compizconfigconfig-settings-manager compiz-plugins


Все вышеперечисленные пакеты есть в репах.

За основу я взял скрипт от хабраюзера angel2s2 за что ему честь, хвала и плюсы в карму.
Исходный скрипт можно посмотреть тут.

1. Создаём shell скрипт с любым названием, и в любой директории.
В целях данного мануала он будет habreffect.sh и находиться в директории /home/vitali/.bin

Копируем туда следующее содержимое.



#!/bin/bash

trap "_exit" INT KILL TERM QUIT
_exit() {
rm -f $SCREEN_FILE
exit
}

LOG_FILE='/var/log/screenshots.log'
SCREEN_FILE='/tmp/screenshot1.png'

LOG_STR=$( curl -s -F "upload=yes" -F "file=@$SCREEN_FILE" -L habreffect.ru/upload.php |\
sed -ne '/Прямая\ ссылка\|delete:/s/^.*\(http.\+\)".*$/\1/gp' | tr '\n' ' ' |\
sed -e "s/'\ $/\ \]\n/;s/[\ \t]/\t\[del: /;s/^/$(date '+%d.%m.%Y %H:%M')\t/" |\
tee -ai $LOG_FILE | awk '{print $3}' )
[ $? -ne 0 ] && FINISH="[ FAIL ]"

echo $LOG_STR | xsel -b -i

notify-send -t 5000 -i dialog-information "Скриншот загружен"

_exit





Для Dropbox

#!/bin/sh

DPDIR=~/Dropbox/Public
ID=СВОЙID

if [ -e "$1" ]
then
cp -f "$1" "$DPDIR"
file=`basename "$1"`
link="http://dl.getdropbox.com/u/$ID/$file"
notify-send -i go-down "Dropbox" "Ссылка на скопирована в буфер обмена"
echo "$link" | xsel -b -i
else
notify-send -i dialog-information "Dropbox" "Выберите файл!"
fi





Делаем скрипт выполняемым chmod +x /home/vitali/.bin/dropbox.sh

Если используете скрипт для Dropbox, переходим к ступени 3

Если коротко, этот скрипт берёт некий файл с именем /tmp/screenshot1.png (о нём чуть позже), загружает его с помощью curl на habreffect.ru, копирует полученную ссылку с помощью xsel и выводит уведомление на экран с помощью libnotify-bin, подчищает за собой и оставляет дату, ссылку на скриншот и ссылку на его удаление в логе /var/log/screenshot.log

2. Перед использованием необходимо создать файл /var/log/screenshots.log и дать ему права для записи.

sudo touch /var/log/screenshots.log && sudo chmod 666 /var/log/screenshots.log

Самому же shell скрипту, необходимо дать права на выполнение.

chmod +x /home/vitali/.bin/habreffect.sh
Путь я надеюсь вы догадаетесь свой подставить.

3. Переходим непосредственно к плагину от Compiz. Далее я предполагаю что у Вас уже стоит Screenshot plugin т.к. он должен был поставиться с пакетом compiz-plugins.

  • Запускаем Compiz Settings Manager или через меню, или нажатием на ALT+F2 -> ccsm.
  • Ищем в списке Screenshot, включаем и открываем его.
  • В графе Directory пишем /tmp, в графе Launch application, путь к нашему скипту.
После наших манипуляций, выглядеть это должно приблизительно так.

image

Готово! Теперь всё что нам необходимо сделать это зажать установленный Вами hotkey (По дефолту Super + Левый клик) и сделать обводку той зоны, скриншот которой мы хотим сделать.

К сожалению у данного способа я нашёл один недостаток, при выделения полного экрана, у скриншота остаётся синий фон выделения. Решения данного вопроса я не нашёл т.к. это проблема плагина Compiz.
В качестве альтернативы, можно использовать исходный скрипт от angel2s2, он делает полный скриншот рабочего стола.

Ещё один недостаток скрипта заключается в том, что он будет брать скриншот только с именен screenshot1.png, это опять же ограничение плагина и я не могу ничего с этим поделать. Конечного пользователя это не касается до тех пор, пока у него в папке не будет других файлов с именени screenshot1.png, скрипт за собой каждый раз подчищает поэтому не следует об этом беспокоиться. Скрипт для Dropbox подобным недостатком не страдает.

Любые замечания и поправки приветствуются.

Для смертных без Compiz
Автором скрипта для Dropbox является oWeRQ

Скрипт был обновлён в связи с обновлением процесса загрузки изображений habreffect.ru
Tags:
Hubs:
Total votes 76: ↑63 and ↓13+50
Comments87

Articles