Как запустить 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