Сегодня Я Узнал: новый способ делать скриншоты
Опубликовано 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.