Сегодня Я Узнал: новый способ делать скриншоты

Опубликовано 28.11.2024 в OpenBSD

Вот чем красноглазое сообщество пользуется для изготовления скриншотов с целью последующего помещения их на LOR и прочий unixporn? Нет, понятно, что выкладываем мы скрины не из гордыни, а для пользы нашего общего гиблого дела, популяризируем, такскть...

Ну вот кто пользуется всяческими DE - там понятно, там это обычно встроенная фича самого DE. Какой-нибудь там spectacle в KDE или, там, xfce4-screenshoter... А истинные пуристы-минималисты, в ком жив еще дух униксвэя? Я, например, уже много лет плевался, но пользовался старой доброй скриншотилкой scrot - умеющей приблизительно всё, что мне нужно. А нужно мне мало - чтоб можно было сделать скрин всего экрана или выделенной вручную области, ну и чтоб клало этот скриншот во вменяемом графическом формате куда-нибудь в $HOME. И scrot с этим более-менее справлялся, но скорее менее, чем более: очень уж меня раздражали глюки его режима ручного выделения области для скрина. Какие-то то пропадающие, то оставляющие рудименты на экране линии от рамки выделения, сама рамка скачет как-то нелепо... В общем, пользоваться можно, но без удовольствия, без души.

И вот Сегодня Я Узнал про более другое легковесное решение: maim (от пенд. "make image"), вот тут оно гнездится https://github.com/naelstrof/maim, там есть описание с картинками и примерами использования. А если еще точнее, то работает оно в автоматической связке с утилитой slop (от пенд. "select operation"), про которую можно почитать тут: https://github.com/naelstrof/slop. То есть, когда вызывается maim -s - оно сначала запускает slop для выбора области на экране, а потом уже скриншотит.

А еще это очень юниксвейное решение, оно работает с пайпами, может передавать результаты работы не только в файл, но и куда угодно. Например, в иксовый буфер обмена: $ maim -s | xclip -selection clipboard -t image/png - чтобы потом из буфера ее вставить в каком-нибудь приложении. Я, кстати, в описанном ниже решении специально отказался от использования xclip, хотя мог бы сделать "и в файл и в буфер обмена тоже", но не люблю я такое, привык оперировать файлами.

Или вот еще один бесполезный обычно для меня режим "сделать скриншот активного окна" (бесполезный потому, что я пользуюсь тайловым менеджером окон i3, и у меня обычно "весь экран" это либо одно активное окно, либо пара-тройка однородных, но тоже занимающих всю площадь экрана), но зацените, как оно изящно достигается: $ maim -i $(xdotool getactivewindow) ~/mypicture.jpg! Красота же? И вот так накрутить можно что угодно - хоть постобработка изображений автоматизированная каким-нибудь там imagemagick, хоть загрузка картинки на какой-нибудь сервис с получением ссылки на загруженное, хоть что угодно еще, покуда фантазии хватит.

Но мои потребности скромны, и реализовал я их забиндив в конфиге i3 пару новых хоткеев: один запускает выбор области для скриншота (тем самым slop), второй скриншотит весь экран, и оба кладут результат в каталог ~/Pictures с названием, соответствующим дате-времени скриншота. Вот этот кусочек ~/.config/i3/config:

bindcode --release $mod+111 exec --no-startup-id "maim -s ~/Pictures/Screenshot_$(date +%Y-%m-%d_%H-%M-%S).png"

bindcode --release $mod+Shift+111 exec --no-startup-id "maim ~/Pictures/Screenshot_$(date +%Y-%m-%d_%H-%M-%S).png"

А, чуть не забыл, оба этих замечательных приложения наличествуют в пакетной базе OpenBSD и устанавливаются незамысловатым:

$ doas pkg_add slop maim

Пользуюсь с удовольствием. А scrot удалил.

P.S. А если вдруг кому нужно еще и видео-скринкасты записывать в хорошем качестве, то под OpenBSD существует аналогичная по смыслу и простоте утилитка mavid (от пенд. "make video"): https://github.com/morgant/mavid.