j'ai du mal à passer les arguments de la fonction dans un format de dictionnaire (chaîne, variante); J'essaie de lancer un screencast dans gnome et de lancer la fonction dont j'ai besoin pour passer ces paramètres:
-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-
c'est mon appel:
~$ 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"}
c'est la sortie d'erreur suivante: "a {sv}": 0-33: impossible d'analyser comme valeur de type 'a {sv}'. l'erreur est dans la syntaxe? Merci
un {sv} devrait être représenté comme:
"{'String': <'variant_value'>, 'String2': <'variant_value'>}"
Pour comprendre cela, j'ai appelé org.freedesktop.DBus.Properties.GetAll sur une interface d'objet car cela renvoie un {sv}.
Par exemple, la méthode CreateInterface dans wpa_supplicant prend un {sv}:
gdbus call -y -d fi.w1.wpa_supplicant1 -o /fi/w1/wpa_supplicant1 -m fi.w1.wpa_supplicant1.CreateInterface "{'Ifname': <'wlan0'>}"
ou pour ajouter plusieurs interfaces (un vrai tableau de chaîne: variante):
"{'Ifname': <'wlan0'>, 'Ifname': <'wlan1'>}"