как передать аргументы {sv} в gdbus?

У меня проблема с передачей аргументов функции в формате словаря (строка, вариант); я пытаюсь запустить скринкаст в gnome и запустить функцию, мне нужно передать следующие аргументы:

-method name="Screencast"-
  -arg type="s" direction="in" name="file_template"/-
  -arg type="a{sv}" direction="in" name="options"/-
  -arg type="b" direction="in" name="flash"/-
  -arg type="b" direction="out" name="success"/-
  -arg type="s" direction="out" name="filename_used"/-
-/method-

это мой вызов:

~$ gdbus call --session --dest org.gnome.Shell.Screencast --object-path /org/gnome/Shell/Screencast --method org.gnome.Shell.Screencast.Screencast "test_ %d_ %t.webm" {dict:string:variant:"draw-cursor",true,"framerate",35,pipeline,"vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux"}

это вывод rror: a {sv} ": 0-33: невозможно проанализировать как значение типа 'a {sv}'. ошибка в синтаксисе? ТНХ

5
задан 16 October 2013 в 01:27

1 ответ

{sv} должен быть представлен как:

"{'String': <'variant_value'>, 'String2': <'variant_value'>}"

Для понимания этого, я назвал org.freedesktop. DBus. Свойства. GetAll на некотором интерфейсе объекта, потому что это возвращается {sv}.

Например, метод CreateInterface в wpa_supplicant берет {sv}:

gdbus call -y -d fi.w1.wpa_supplicant1 -o /fi/w1/wpa_supplicant1 -m fi.w1.wpa_supplicant1.CreateInterface "{'Ifname': <'wlan0'>}"

или добавить несколько интерфейсов (истинный массив string:variant):

"{'Ifname': <'wlan0'>, 'Ifname': <'wlan1'>}"
5
ответ дан 16 October 2013 в 01:27

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

Похожие вопросы: