Screen capture (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Screen capture. Дата последней синхронизации: 10 января 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

В данной статье описаны программы для создания скриншотов и скринкастов.

Программы для создания скриншотов

Самостоятельные программы

  • CoreShot — Простая лёгкая утилита захвата экрана для X11. Входит в состав C-Suite.
https://cubocore.gitlab.io/ || coreshotAUR
  • 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.
https://github.com/Roger/escrotum || escrotum-gitAUR
  • Flameshot — Программа на Qt5 для интерактивного создания скриншотов. Выберите нужную область, рисуйте с помощью различных инструментов и наслаждайтесь возможностями настройки.
https://github.com/lupoDharkael/flameshot || flameshot
  • GNOME Screenshot — Инструмент создания скриншотов для рабочего стола GNOME.
https://gitlab.gnome.org/GNOME/gnome-screenshot/ || gnome-screenshot
  • grim — Захват изображений из композитора Wayland.
https://github.com/emersion/grim || grim
  • gscreenshot — Простая утилита GTK для создания скриншотов с функциями задержки, выбора и копирования в буфер обмена.
https://github.com/thenaterhood/gscreenshot || gscreenshotAUR
  • HotShots — Приложение для захвата экранов и сохранения их в различных форматах изображений, а также добавления аннотаций и графических данных (стрелки, линии, тексты, ...).
https://github.com/obiwankennedy/HotShots || hotshots-gitAUR
  • imgur-screenshot — Делает скриншоты, загружает их на imgur + больше классных вещей
https://github.com/jomo/imgur-screenshot || imgur-screenshotAUR
  • ksnip — Кроссплатформенный инструмент для создания скриншотов на базе Qt, предоставляющий множество функций аннотирования для ваших скриншотов.
https://github.com/ksnip/ksnip || ksnip
  • Lightscreen — Простой инструмент для автоматизации утомительного процесса сохранения и каталогизации скриншотов. Он работает как скрытый фоновый процесс, который вызывается одной (или несколькими) горячими клавишами, а затем сохраняет файл скриншота на диск в соответствии с предпочтениями пользователя.
https://lightscreen.com.ar || lightscreenAUR
  • LXQt Screenshot — Инструмент создания скриншотов для LXQt. Запускается через lximage-qt --screenshot.
https://github.com/lxde/lximage-qt || lximage-qt
  • maim — Простая утилита командной строки для создания скриншотов. Она призвана заменить scrot и по многим параметрам работает лучше, чем scrot.
https://github.com/naelstrof/maim || maim
  • MATE Screenshot — Инструмент создания скриншотов для рабочего стола MATE.
https://mate-desktop.org || mate-utils
  • menyoki — Инструмент командной строки для создания скриншотов и скринкастов, который также может выполнять некоторые операции над изображениями.
https://github.com/orhun/menyoki || menyoki
  • mss — Python-модуль для захвата экрана с простым интерфейсом командной строки, использующий xrandr.
https://pypi.org/project/mss/ || python-mss
  • Pantheon Screenshot — Инструмент создания скриншотов для elementary OS.
https://github.com/elementary/screenshot || pantheon-screenshot
  • ScreenCloud — Позволяет сделать скриншот всего экрана или выделить область, а затем загрузить скриншот на imgur+auth. Есть плагины и значок в трее.
https://screencloud.net/ || screencloudAUR
  • ScreenGrab — Кроссплатформенное приложение для быстрого создания скриншотов (Qt).
https://github.com/DOOMer/screengrab || screengrab
  • Scrot — Простая утилита для создания скриншотов из командной строки для X.
https://github.com/resurrecting-open-source-projects/scrot || scrot
  • Shotgun — Минималистичная утилита для создания скриншотов X, написанная на Rust. По словам автора, она в два раза быстрее, чем maim.
https://github.com/neXromancers/shotgun || shotgun
  • Shutter — Многофункциональная программа для создания скриншотов и редактирования. Поддерживает задержку.
https://shutter-project.org/ || shutter
  • Spectacle — Приложение создания скриншотов для KDE. Оно может создавать снимки всего рабочего стола, отдельного окна, части окна, выделенной прямоугольной области или области со свободным контуром. Является частью kde-graphics.
https://github.com/KDE/spectacle/ || spectacle
  • Xfce4 Screenshooter — Приложение и плагин панели Xfce4 для создания скриншотов всего экрана, активного окна или выбранной области. Является частью xfce4-goodies.
https://goodies.xfce.org/projects/applications/xfce4-screenshooter || xfce4-screenshooter
  • xwd — Утилита для создания дампа изображения X Window System
https://www.x.org/ || xorg-xwd

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) для более подробной информации.

Примечание: В некоторых оконных менеджерах (dwmAUR, xmonad и, возможно, других) 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.
https://www.deepin.org/en/original/deepin-screen-recorder/ || deepin-screen-recorder
  • FFcast — Инструмент для скринкастинга на основе FFmpeg, написанный на Bash.
https://github.com/lolilolicon/FFcast || ffcastAUR
  • Gpu Screen Recorder — Экранный рекордер, который использует только GPU для захвата, что значительно повышает производительность и делает её сравнимой с Nvidia ShadowPlay. Поддерживает потоковую передачу и буфер воспроизведения. В настоящее время ограничен NVIDIA.
https://git.dec05eba.com/gpu-screen-recorder-gtk/about/ || gpu-screen-recorder-gtk-gitAUR
  • Green Recorder — Простой, но функциональный инструмент записи экрана.
https://github.com/dvershinin/green-recorder || green-recorderAUR
  • Kazam — Программа для скринкастинга с учётом дизайна. Работает с многоэкранными установками.
https://launchpad.net/kazam || kazamAUR
  • Kooha — Простая программа записи экрана с минимальным интерфейсом GTK.
https://github.com/SeaDve/Kooha || kooha
  • menyoki — Инструмент командной строки для создания скриншотов и скринкастов, который также может выполнять некоторые операции над изображениями.
https://github.com/orhun/menyoki || menyoki
https://obsproject.com/ || obs-studio
  • obs-gnome-screencastAUR – плагин для функции GNOME screencast, поддерживает Wayland
  • Peek — Простой инструмент, который создаёт анимацию в форматах GIF, APNG, WebM или MP4.
https://github.com/phw/peek || peek
  • RecApp — Дружественный скринкастер, написанный на GTK. Использует свободные модули GStreamer и не зависит от FFmpeg. Больше не разрабатывается.
https://github.com/amikha1lov/RecApp || recapp-gitAUR
  • 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, с поддержкой автономной записи и стриминга.
https://github.com/dbermond/screencast/ || screencastAUR
  • Screencast — Простой рекордер скринкастов, разработанный для elementary OS.
https://github.com/artemanufrij/screencast || pantheon-screencastAUR
  • SimpleScreenRecorder — Многофункциональный экранный рекордер, написанный на C++/Qt5, поддерживающий X11 и OpenGL.
https://www.maartenbaert.be/simplescreenrecorder/ || simplescreenrecorderAUR
  • VokoScreen — Простой графический инструмент для записи скринкастов с использованием GStreamer.
https://linuxecke.volkoh.de/vokoscreen/vokoscreen.html || vokoscreen
  • 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)"
Совет:
  • slurpshot — интерактивный инструмент для создания скриншотов, использующий bemenu.
  • Можно совместить создание скриншота с каким-нибудь инструментом для постобработки, например swappy: grim -g "$(slurp)" - | swappy -f -

Кроме того, некоторые программы из перечисленных выше могут работать в 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

Примечание: Этот метод позволяет захватить только экран целиком, а не отдельные приложения. [3].

Смотрите 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.