Сидя дома тихим воскресным вечером, я вдруг осознал что мне действительно нехватает быстрого снятия и загрузки скриншотов в 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, путь к нашему скипту.
Готово! Теперь всё что нам необходимо сделать это зажать установленный Вами hotkey (По дефолту Super + Левый клик) и сделать обводку той зоны, скриншот которой мы хотим сделать.
К сожалению у данного способа я нашёл один недостаток, при выделения полного экрана, у скриншота остаётся синий фон выделения. Решения данного вопроса я не нашёл т.к. это проблема плагина Compiz.
В качестве альтернативы, можно использовать исходный скрипт от angel2s2, он делает полный скриншот рабочего стола.
Ещё один недостаток скрипта заключается в том, что он будет брать скриншот только с именен screenshot1.png, это опять же ограничение плагина и я не могу ничего с этим поделать. Конечного пользователя это не касается до тех пор, пока у него в папке не будет других файлов с именени screenshot1.png, скрипт за собой каждый раз подчищает поэтому не следует об этом беспокоиться. Скрипт для Dropbox подобным недостатком не страдает.
Любые замечания и поправки приветствуются.
Для смертных без Compiz
Автором скрипта для Dropbox является oWeRQ
Скрипт был обновлён в связи с обновлением процесса загрузки изображений habreffect.ru