Как запустить Gnome Screen Recorder из командной строки

Я хочу использовать встроенный в Gnome Screen Recorder. Я знаю, что могу запустить его с помощью сочетания клавиш Ctrl+Shift+Alt+R. Я ищу варианты запуска программы записи экрана gnome с помощью какой-либо команды, чтобы я мог автоматизировать ее в сценарии. Пожалуйста помоги.

2 ответа

Экран записи доступен через D-Bus по названию шины org.gnome.Shell.Screencastи предоставляет объект управления /org/gnome/Shell/Screencast, Глядя на это через d-футы, это доступные методы:

  • Screencast(Str file_template, Dict{Str,Var} options) → (Bool success, Str filename_used)
  • StopScreencast() → (Bool success)

Параметр file_template представляет собой либо полный путь, либо просто базовое имя файла видеофайла (который должен иметь .webm расширение в любом случае). Опции dict могут оставаться пустыми.

К сожалению, сеансы экранного вещания привязаны к определенному клиенту D-Bus - поэтому вы не можете использовать их с помощью обычных инструментов шеллскрипта (busctl, gdbus, dbus-send), так как запись остановится, как только инструмент запустит ее и завершит работу. Таким образом, вам придется написать оболочку на другом языке, который имеет привязки клиента D-Bus.

      import time
import dbus
session_bus = dbus.SessionBus()
session_bus.call_blocking(
    'org.gnome.Shell.Screencast',
    '/org/gnome/Shell/Screencast',
    'org.gnome.Shell.Screencast',
    'Screencast',
    signature='sa{sv}',
    args=["Screencast_%d_%t.webm", {'draw-cursor':True, 'framerate': 35}],
)

time.sleep(5)

result2 = session_bus.call_blocking(
    'org.gnome.Shell.Screencast',
    '/org/gnome/Shell/Screencast',
    'org.gnome.Shell.Screencast',
    'StopScreencast',
    signature='',
    args=[],
)

      $ gdbus call --session --dest org.gnome.Shell.Screencast --object-path /org/gnome/Shell/Screencast --method org.gnome.Shell.Screencast.Screencast "Screencast_%d_%t.webm" "{'draw-cursor':<'true'>,'framerate': <35>}"
$ # "The screencast is stopped here, the command below is meaningless.'
$ gdbus call --session --dest org.gnome.Shell.Screencast --object-path /org/gnome/Shell/Screencast --method org.gnome.Shell.Screencast.StopScreencast

Другие вопросы по тегам