toggle vlc fullscreen с использованием dbus и mpris

Я программирую свои быстрые клавиши в awesome wm. В настоящий момент я использую qdbus для управления медиаплеерами, и все они работают, за исключением полного экрана vlc. Команда, которую я использую:

qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Fullscreen

Это работает, чтобы получить логическое значение статуса полного экрана, но также должно быть в состоянии установить его, что я уже сделал, это вышеприведенная команда, за которой следуют true/false (и несколько вариантов), но она всегда интерпретируется как false ,

CanSetFullscreen имеет значение true

У Awesome есть способ отправить фальшивые ключевые события, это можно использовать для перезаписывания стандартных ключей, используемых vlc, для соответствия ключам, настроенным в awesome wm. Внутри ~ / .config / awesome / rc.lua измените полноэкранный ключ следующим образом:

 enter code hereawful.key({ modkey, }, "f", function (c) if awful.rules.match(c, {class = 'Vlc'}) then root.fake_input('key_release','f') root.fake_input('key_press','f') root.fake_input('key_release','f') else c.fullscreen = not c.fullscreen end end), 

Чтобы сделать это с другими программами, вам сначала нужно познакомиться с его классом, это можно получить с помощью команды xprop | grep WM_CLASS xprop | grep WM_CLASS .

  WM_CLASS(STRING) = "vlc", "Vlc" | | | |--- class | |--- instance 

CanSetFullscreen – параметр только для чтения, перейдите на полноэкранный режим, который является записью чтения / записи. для исследования D-Bus D-Feet на Ubuntu неплохо.