Screen capture (Русский)
В данной статье описаны программы для создания скриншотов и скринкастов.
Программы для создания скриншотов
Самостоятельные программы
- CoreShot — Простая лёгкая утилита захвата экрана для X11. Входит в состав C-Suite.
- Deepin Screenshot — Довольно простой в использовании инструмент для создания скриншотов. Объявлен устаревшим и был объединён с Deepin Screen Recorder. Известная проблема с функциональностью буфера обмена исправлена с помощью патча deepin-screenshot-copy-patchAUR.
- https://www.deepin.org/en/original/deepin-screenshot/ || deepin-screenshot[ссылка недействительна: package not found]
- Escrotum — Программа для захвата экрана, использующая python и gtk3, вдохновлена scrot.
- Flameshot — Программа на Qt5 для интерактивного создания скриншотов. Выберите нужную область, рисуйте с помощью различных инструментов и наслаждайтесь возможностями настройки.
- GNOME Screenshot — Инструмент создания скриншотов для рабочего стола GNOME.
- grim — Захват изображений из композитора Wayland.
- gscreenshot — Простая утилита GTK для создания скриншотов с функциями задержки, выбора и копирования в буфер обмена.
- HotShots — Приложение для захвата экранов и сохранения их в различных форматах изображений, а также добавления аннотаций и графических данных (стрелки, линии, тексты, ...).
- imgur-screenshot — Делает скриншоты, загружает их на imgur + больше классных вещей
- ksnip — Кроссплатформенный инструмент для создания скриншотов на базе Qt, предоставляющий множество функций аннотирования для ваших скриншотов.
- Lightscreen — Простой инструмент для автоматизации утомительного процесса сохранения и каталогизации скриншотов. Он работает как скрытый фоновый процесс, который вызывается одной (или несколькими) горячими клавишами, а затем сохраняет файл скриншота на диск в соответствии с предпочтениями пользователя.
- LXQt Screenshot — Инструмент создания скриншотов для LXQt. Запускается через
lximage-qt --screenshot
.
- maim — Простая утилита командной строки для создания скриншотов. Она призвана заменить scrot и по многим параметрам работает лучше, чем scrot.
- MATE Screenshot — Инструмент создания скриншотов для рабочего стола MATE.
- menyoki — Инструмент командной строки для создания скриншотов и скринкастов, который также может выполнять некоторые операции над изображениями.
- mss — Python-модуль для захвата экрана с простым интерфейсом командной строки, использующий xrandr.
- Pantheon Screenshot — Инструмент создания скриншотов для elementary OS.
- ScreenCloud — Позволяет сделать скриншот всего экрана или выделить область, а затем загрузить скриншот на imgur+auth. Есть плагины и значок в трее.
- ScreenGrab — Кроссплатформенное приложение для быстрого создания скриншотов (Qt).
- Scrot — Простая утилита для создания скриншотов из командной строки для X.
- Shotgun — Минималистичная утилита для создания скриншотов X, написанная на Rust. По словам автора, она в два раза быстрее, чем maim.
- Shutter — Многофункциональная программа для создания скриншотов и редактирования. Поддерживает задержку.
- Spectacle — Приложение создания скриншотов для KDE. Оно может создавать снимки всего рабочего стола, отдельного окна, части окна, выделенной прямоугольной области или области со свободным контуром. Является частью kde-graphics.
- Xfce4 Screenshooter — Приложение и плагин панели Xfce4 для создания скриншотов всего экрана, активного окна или выбранной области. Является частью xfce4-goodies.
- xwd — Утилита для создания дампа изображения X Window System
xwd
xwd(1) предоставляется пакетом xorg-xwd.
Скриншот корневого окна:
$ xwd -root -out screenshot.xwd
sleep
. Например: sleep 5; xwd ...
.scrot
scrot позволяет делать скриншоты из командной строки с заданной задержкой. Если не указано иное, файл будет создан в текущем рабочем каталоге.
$ scrot -t 20 -d 5
Эта команда создаст файл .png с датой в имени и с миниатюрой (20% от оригинала) для размещения в Интернете. Также будет 5-секундная задержка перед захватом.
Вы также можете использовать стандартное форматирование даты и времени при сохранении в файл. Например, команда
$ scrot ~/screenshots/%Y-%m-%d-%T-screenshot.png
сохраняет скриншот в файле с именем, содержащим текущий год, месяц, число, часы, минуты и секунды, в подкаталог «screenshots», находящийся в домашнем каталоге.
Смотрите scrot(1) для более подробной информации.
scrot -s
не работает должным образом при запуске через сочетание клавиш оконного менеджера. Это можно обойти, добавив перед вызовом scrot небольшую паузу: sleep 0.2; scrot -s
.escrotum
escrotum-gitAUR — это инструмент захвата экрана с использованием PyGTK, вдохновлённый scrot.
Он был создан потому, что scrot имеет глюки, когда режим выбора используется с обновляющимися окнами.
Поскольку интерфейс командной строки почти такой же, как у scrot, escrotum может быть использован в качестве его прозрачной замены.
maim
maim нацелен на то, чтобы стать улучшенным scrot.
Сохранение всего экрана в файл:
$ maim файл
Выбор окна или области для захвата и сохранение в файл:
$ maim --select файл
Захват активного экрана (требуется xdotool):
$ maim --window $(xdotool getactivewindow) файл
Выбор, сохранение без курсора мыши и сохранение в буфер обмена (требуется xclip):
$ maim -s | xclip -selection clipboard -t image/png -i
Программы сред рабочего стола
Spectacle
В среде KDE можно использовать Spectacle
.
Он предоставляется пакетом spectacle.
Xfce Screenshooter
В среде Xfce можно установить xfce4-screenshooter и назначить горячие клавиши:
Меню > Настройки > Клавиатура > Комбинации клавиш
Команда xfce4-screenshooter -h
выведет список доступных опций.
GNOME
Пользователи GNOME могут нажать PrintScreen
или нажать на значок камеры в системном меню. Также можно установить gnome-screenshot и запустить его через меню Приложения > Утилиты > Снимок экрана.
С помощью сочетания клавиш Ctrl+Shift+Alt+r
можно запустить встроенную в GNOME запись экрана. Во время записи будет отображаться уведомление в верхней панели рядом с системным меню. После завершения записи в каталоге Видео
будет сохранён файл Запись экрана от дата.webm
. Для работы этой функции должны быть установлены пакеты gst-plugin-pipewire и gst-plugins-good.
Cinnamon
В стандартной установке Cinnamon нет программы для создания скриншотов, но можно установить gnome-screenshot и запустить его через меню или нажатием клавиши PrintScreen
.
Другие среды рабочего стола или оконные менеджеры
Для других сред рабочего стола вроде LXDE или оконных менеджеров вроде Openbox или Compiz можно добавить сочетание клавиш для какой-нибудь команды создания скриншота, например:
$ import -window root ~/Изображения/$(date '+%Y%m%d-%H%M%S').png
Команда import
входит в состав пакета imagemagick. Назначение этой команды на клавишу PrintScreen
в Compiz позволяет сделать снимок экрана в папку Изображения с датой и временем в имени файла. Обратите внимание, что файл rc.xml
в Openbox не понимает запятых; поэтому, чтобы привязать эту команду к клавише PrintScreen
в Openbox, вам нужно добавить следующее в раздел keyboard файла rc.xml
file:
rc.xml
<!-- Screenshot --> <keybind key="Print"> <action name="Execute"> <command>sh -c "import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png"</command> </action> </keybind>
Если keybind Print
не работает, прочтите статью Keyboard input (Русский) и попробуйте другие коды или символы клавиш.
Пакеты с инструментами для создания скриншотов
ImageMagick/GraphicsMagick
Смотрите ImageMagick#Screenshot taking.
GIMP
Можно создавать скриншоты в GIMP (Файл > Создать > Снимок экрана...).
imlib2
imlib2 предоставляет программу imlib2_grab
для создания скриншотов:
$ imlib2_grab screenshot.png
FFmpeg
Смотрите FFmpeg#Screen capture.
Программы для записи скринкастов
Смотрите также FFmpeg#Screen capture и Wikipedia:Comparison of screencasting software.
Эти программы позволяют записать видео происходящего на рабочем столе или в отдельных окнах.
- Byzanz — Простой инструмент, создающий GIF-анимацию.
- https://gitlab.gnome.org/Archive/byzanz || byzanz[ссылка недействительна: package not found]
- Deepin Screen Recorder — Приложение для записи экрана для рабочего стола Deepin.
- FFcast — Инструмент для скринкастинга на основе FFmpeg, написанный на Bash.
- Gpu Screen Recorder — Экранный рекордер, который использует только GPU для захвата, что значительно повышает производительность и делает её сравнимой с Nvidia ShadowPlay. Поддерживает потоковую передачу и буфер воспроизведения. В настоящее время ограничен NVIDIA.
- https://git.dec05eba.com/gpu-screen-recorder-gtk/about/ || gpu-screen-recorder-gtk-gitAUR[ссылка недействительна: package not found]
- Green Recorder — Простой, но функциональный инструмент записи экрана.
- Kazam — Программа для скринкастинга с учётом дизайна. Работает с многоэкранными установками.
- Kooha — Простая программа записи экрана с минимальным интерфейсом GTK.
- menyoki — Инструмент командной строки для создания скриншотов и скринкастов, который также может выполнять некоторые операции над изображениями.
- Open Broadcaster Software — Приложение для записи видео и стриминга.
- https://obsproject.com/ || obs-studio
- obs-gnome-screencastAUR – плагин для функции GNOME screencast, поддерживает Wayland
- Peek — Простой инструмент, который создаёт анимацию в форматах GIF, APNG, WebM или MP4.
- RecApp — Дружественный скринкастер, написанный на GTK. Использует свободные модули GStreamer и не зависит от FFmpeg. Больше не разрабатывается.
- RecordItNow — Рекордер рабочего стола на основе плагинов для KDE 4.
- https://recorditnow.sourceforge.net/ || recorditnowAUR[ссылка недействительна: package not found]
- RecordMyDesktop — Простая в использовании утилита для записи рабочего стола в формат ogg с интерфейсом CLI, GTK или Qt. (разработка неактивна)
- https://recordmydesktop.sourceforge.net/ || CLI: recordmydesktop, GTK: gtk-recordmydesktopAUR, Qt: qt-recordmydesktopAUR[ссылка недействительна: package not found]
- screencast — Интерфейс командной строки для записи рабочего стола X11 с помощью FFmpeg, с поддержкой автономной записи и стриминга.
- Screencast — Простой рекордер скринкастов, разработанный для elementary OS.
- SimpleScreenRecorder — Многофункциональный экранный рекордер, написанный на C++/Qt5, поддерживающий X11 и OpenGL.
- VokoScreen — Простой графический инструмент для записи скринкастов с использованием GStreamer.
- XVidCap — Приложение для записи скринкаста или цифровой записи экранного вывода X Window System со звуковым сопровождением.
- https://xvidcap.sourceforge.net/ || xvidcapAUR[ссылка недействительна: package not found]
Wayland
Если вы используете композитор, основанный на Wlroots, то сделать скриншот можно с помощью grim или grimshotAUR[ссылка недействительна: package not found] (пакет sway также предоставляет grimshot в каталоге /usr/share/sway/scripts/
); записать скринкаст можно с помощью wf-recorder (или wf-recorder-gitAUR); wlrobs-hgAUR — плагин obs-studio, который позволяет делать захват экрана в композиторах на базе wlroots. Опционально можно использовать slurp для выделения части экрана, которую нужно захватить.
Сделать снимок всего экрана:
$ grim screenshot.png
Сделать скриншот текущего окна:
$ grim -g "$(swaymsg -t get_tree | jq -r '.. | select(.focused?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"')" screenshot.png
Сделать скриншот выделенной части экрана:
$ grim -g "$(slurp)" screenshot.png
Сделать скриншот выделенной части экрана и поместить его в буфер обмена с помощью wl-clipboard:
$ grim -g "$(slurp)" - | wl-copy
Записать видео с экрана:
$ wf-recorder -f recording.mp4
Записать видео выделенной части экрана:
$ wf-recorder -g "$(slurp)"
Кроме того, некоторые программы из перечисленных выше могут работать в Wayland (например, ksnip, green-recorderAUR). Для корректной работы spectacle из KDE, возможно, понадобится удалить ~/.local/share/applications/org.kde.spectacle.desktop
; в любом случае, Spectacle должен работать с режимом съёмки Окно под курсором мыши (Meta+Ctrl+Print).
Запись скринкастов
С помощью GNOME screencast
green-recorderAUR, obs-gnome-screencastAUR и obs-studio поддерживают запись Wayland-экрана через GNOME screencast.
С помощью виртуальной камеры
- Этот метод был протестирован с zoomAUR (desktop-клиент работает через xorg-xwayland) и BigBlueButton под chromium (под firefox разрешение очень низкое); skypeforlinux-binAUR обнаруживает виртуальную камеру, но выводит пустоту.
- В примере используется
wf-recorder
, но вы можете использовать любую программу, просто подайте вывод на виртуальное устройство.
Установите wf-recorder (или wf-recorder-gitAUR) и v4l2loopback-dkms. Загрузите модуль ядра v4l2loopback
со следующими параметрами:
# modprobe v4l2loopback exclusive_caps=1 card_label=VirtualVideoDevice
После этого должна появиться виртуальная камера VirtualVideoDevice
:
$ v4l2-ctl --list-devices
... VirtualVideoDevice (platform:v4l2loopback-000): /dev/video2 ...
Теперь запустите захват экрана с помощью wf-recorder
и направьте его вывод в эту виртуальную камеру:
$ wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video2 -x yuv420p
Использование yuv420p
необходимо для совместимости с Zoom [1].
Unknown V4L2 pixel format equivalent for rgb0
, запустите wf-recorder
с опцией --force-yuv
/-t
для принудительного преобразования данных в yuv. [2]Теперь в нужном вам приложении вы сможете выбрать эту виртуальную камеру, и она будет отображать ваш экран. Для проверки работоспособности можно использовать ffplay
(из пакета ffmpeg), mpv или gst-launch
(из пакета gstreamer):
$ ffplay /dev/video2
$ mpv av://v4l2:/dev/video2
$ gst-launch-1.0 -v v4l2src device=/dev/video2 ! glimagesink
Если Firefox не может захватить видео и пишет ошибку вроде «AbortError: Starting video failed», попробуйте подгрузить библиотеку v4l2compat.so
:
$ LD_PRELOAD=/usr/lib/v4l1compat.so firefox
Захват отдельных приложений
Как описывалось ранее, wf-recorder
также позволяет записать часть экрана, которую можно выделить с помощью slurp. Поэтому можно использовать такую команду, чтобы в виртуальной камере отображалось только одно окно:
$ wf-recorder -g "$(slurp)" --muxer=v4l2 --codec=rawvideo --file=/dev/video2 -x yuv420p
После выделения нужной части экрана виртуальная камера /dev/video2
станет отображать её.
WebRTC
Смотрите PipeWire (Русский)#Демонстрация экрана WebRTC.
После установки нужных пакетов захват экрана в Chromium и Firefox должен заработать. Это можно проверить на тестовой странице getUserMedia / getDisplayMedia от Mozilla.
Терминал
Захват с кодами ANSI
Можно использовать команду script(1) из пакета util-linux.
Просто выполните команду script
, и она запустит новую командную оболочку, внутри которой весь вывод вместе с управляющими последовательностями ANSI будет записан в файл с именем typescript
.
Для завершения записи выйдите из этой командной оболочки. Получившийся файл можно сконвертировать в HTML с помощью ansi2htmlAUR (не путайте с другим пакетом python-ansi2html).
Например, чтобы преобразовать typescript
в typescript.html
, выполните следующую команду:
$ ansi2html --bg=dark < typescript > typescript.html
Вывод некоторых команд можно перенаправить сразу в ansi2html:
$ ls --color|ansi2html --bg=dark >output.html
Но это сработает не всегда и может понадобиться всё равно использовать script
.
Кадровый буфер
Установите кадровый буфер (framebuffer) и используйте fbgrab или fbdumpAUR, чтобы из его содержимого сделать скриншот.
Виртуальная консоль
Если вам нужен текст из консоли, а не изображение, можно использовать setterm
из пакета util-linux. Следующая команда запишет текстовое содержимое виртуальной консоли 1 в файл screen.dump
в текущем каталоге:
# setterm -dump 1 -file screen.dump
Требуются root-права для чтения /dev/vcs1
.