Рубрики
Разное

[macOS] Свой онлайн скриншотер: аналог JOXI

Итак, сделаем автоматическую загрузку снимков экрана на свой домен.

Как настроить автоматическую загрузку скриншотов на сервер на macOS

В iCopyWriter.ru мы используем общее правило: сервер служит для того, чтобы делиться скриншотами и записями экрана между коллегами. У каждого разработчика есть своя папка, куда он может загружать файлы и делиться ими с миром. Для автоматизации этого процесса мы обычно используем ShareX — отличное приложение, которое делает всю работу за нас. Но есть одна проблема: ShareX работает только на Windows.

Когда я перешел на macOS несколько месяцев назад, я столкнулся с проблемой — просто делиться скриншотами с коллегами оказалось сложнее, чем я думал. Я попробовал такие программы, как CloudApp и Skitch, но, к сожалению, они не оправдали моих ожиданий.

И тут у меня появилась безумная идея: а что если сделать все самому?

Цель и инструменты

Для начала я решил поставить перед собой конкретные цели для создания собственного инструмента:

  • Использование стандартного сочетания клавиш Cmd + Shift + 4
  • Возможность выбора между режимами «выделить фрагмент» и «выделить окно»
  • Возможность задать имя файла с опцией использовать дату или сгенерировать случайное имя
  • Автоматическая отправка файла на сервер и генерация ссылки

Для выполнения задачи я воспользовался Automator — инструментом для автоматизации процессов на macOS. Начнем с создания нового приложения, выбрав Файл -> Новое -> Приложение.

Шаг 1. Создание скриншота

Первым делом нам нужно сделать скриншот (какой сюрприз!). Для этого мы воспользуемся командой screencapture в терминале:

screencapture -i ~/Desktop/tmpScreenshot.png

В Automator с левой стороны окна перетащите действие «Выполнить скрипт оболочки» и выберите нужную оболочку (в моем случае это zsh). Затем введите команду для создания скриншота и сохраните изображение на рабочий стол.

Шаг 2. Выбор имени файла

Следующим шагом мы напишем простой скрипт на AppleScript, который позволит задать имя файла или отменить операцию:

on run
    set cryptname to do shell script "openssl rand -hex 10"
    set datename to do shell script "date -ju +%Y-%m-%d_%H.%M.%S"
    set cryptbutton to "Использовать \"" & cryptname & "\""
    display dialog "Имя файла (расширение будет добавлено автоматически)" default answer datename buttons {"Отмена", cryptbutton, "ОК"} default button "ОК" cancel button "Отмена" with title "Новый скриншот"

    if button returned of result is cryptbutton then
        return cryptname & ".png"
    else
        return (text returned of result) & ".png"
    end if
end run

Здесь мы генерируем случайное имя файла с помощью openssl и получаем текущую дату. Далее отображается диалоговое окно, где пользователь может выбрать имя файла или отменить операцию.

[macOS] Свой онлайн скриншотер: аналог JOXI

Screenshot

Шаг 3. Загрузка файлов на сервер

Это был самый сложный этап. Вот скрипт, который отправляет файл на сервер:

export PATH=/usr/local/bin:$PATH
HOST='0.0.0.0'
URL='url.com'
USER='user'
PASS='pass'
PORT=2252
REMOTEPATH="/remote/path/$1"
LOCALFILE="/Users/user/Desktop/tmpScreenshot.png"
sshpass -p $PASS scp -P $PORT $LOCALFILE $USER@$HOST:$REMOTEPATH
rm "$LOCALFILE"
echo "https://$URL/$USER/$1" | pbcopy

Здесь важно передать имя файла как аргумент, используя переменную $1. После отправки файла он удаляется с рабочего стола, а ссылка на файл копируется в буфер обмена.

Шаг 4. Отображение уведомлений

В заключение, мы добавляем уведомление о том, что операция завершена успешно, а ссылка скопирована в буфер обмена.

Шаг 5. Назначение горячих клавиш

Теперь самое сложное позади. Чтобы назначить скрипт на сочетание клавиш, перейдите в Системные настройки -> Клавиатура -> Сочетания клавиш. Здесь найдите сочетание Cmd + Shift + 4 и измените его, например, добавив Ctrl.

Затем в разделе Службы выберите наш скрипт и назначьте его на выбранное сочетание клавиш.

Итог

Это, конечно, не идеальное решение, но оно полностью покрывает мои потребности. На все про все у меня ушло около 4 часов — я никогда не работал с Automator и AppleScript до этого. Но я доволен результатом!

Не стесняйтесь улучшать и модифицировать скрипт (например, добавить обработку ошибок) и делитесь своими наработками в комментариях. В Dogtronic мы уделяем особое внимание совместному обучению и взаимной мотивации, даже в таких маленьких, но интересных задачах, как эта. Если вам тоже нравится экспериментировать и быть креативным, заходите в наш раздел Карьера!