Screen capture (Русский) - ArchWiki

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

Ссылки по теме

- Горячие клавиши#Настройка

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

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

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

- CoreShot — Простая лёгкая утилита захвата экрана для X11. Входит в состав C-Suite.

  https://cubocore.org/[устаревшая ссылка 2023-06-17 ⓘ] || 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

- 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

- Open Broadcaster Software — Приложение для записи видео и стриминга.

  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.

  http://recorditnow.sourceforge.net/ || recorditnowAUR

- RecordMyDesktop — Простая в использовании утилита для записи рабочего стола в формат ogg с интерфейсом CLI, GTK или Qt. (разработка неактивна)

  http://recordmydesktop.sourceforge.net/ || CLI: recordmydesktop, GTK: gtk-recordmydesktopAUR, Qt: qt-recordmydesktopAUR

- 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 со звуковым сопровождением.

  http://xvidcap.sourceforge.net/ || xvidcapAUR

## Wayland

Если вы используете композитор, основанный на Wlroots, то сделать скриншот можно с помощью grim или grimshotAUR (пакет 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-stable-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`.

Categories:

- System administration (Русский)
- Multimedia (Русский)

Hidden categories:

- Pages with dead links
- Pages with broken package links