Il s'agit de la commande gdbus qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
gdbus - Outil pour travailler avec des objets D-Bus
SYNOPSIS
gdbus introspection [--système | --session | --adresse propos] --dest nom_bus
--chemin-objet /chemin/vers/objet [--xml] [--recurse] [--only-properties]
gdbus surveiller [--système | --session | --adresse propos] --dest nom_bus
[--chemin-objet /chemin/vers/objet]
gdbus appeler [--système | --session | --adresse propos] --dest nom_bus
--chemin-objet /chemin/vers/objet --méthode org.project.InterfaceName.MethodName
[--temps libre secondes] ARG1 ARG2...
gdbus émettre [--système | --session | --adresse propos] --chemin-objet /chemin/vers/objet
--signal org.project.InterfaceName.SignalName [--dest nom_bus_unique] ARG1 ARG2...
gdbus vous aider
DESCRIPTION
gdbus est un outil simple pour travailler avec des objets D-Bus.
COMMANDES
introspecter
Imprime les interfaces et les valeurs de propriété d'un objet distant. Pour que cela fonctionne, le
le propriétaire de l'objet doit implémenter org.freedesktop.DBus.Introspectable
interface. Si la --xml est utilisée, le XML d'introspection renvoyé est imprimé,
sinon, une jolie représentation analysée est imprimée. Les --récurseur l'option peut être utilisée
pour introspecter les enfants (et leurs enfants et ainsi de suite) et le --seulement-propriétés option
peut être utilisé pour imprimer uniquement les interfaces avec des propriétés.
moniteur
Surveille un ou tous les objets appartenant au propriétaire de nom_bus.
Appelez-nous
Appelle une méthode sur un objet distant. Chaque argument à passer à la méthode doit être
spécifié comme sérialisé GVariante sauf que les chaînes n'ont pas besoin de guillemets explicites.
Les valeurs de retour sont imprimées comme sérialisées GVariante valeurs.
émettre
Émet un signal. Chaque argument à inclure dans le signal doit être spécifié comme un
sérialisé GVariante sauf que les chaînes n'ont pas besoin de guillemets explicites.
vous aider
Imprime l'aide et quitte.
FRAPPER ACHÈVEMENT
gdbus est livré avec un script d'achèvement bash pour compléter les commandes, les destinations, les noms de bus,
chemins d'objets et noms d'interface/méthode.
EXEMPLES
Cela montre comment introspecter un objet - notez que la valeur de chaque
la propriété s'affiche :
$ introspection gdbus --system \
--dest org.freedesktop.NetworkManager \
--object-path /org/freedesktop/NetworkManager/Devices/0
nœud /org/freedesktop/NetworkManager/Devices/0 {
interface org.freedesktop.DBus.Introspectable {
méthodes:
Introspection (données de sortie) ;
};
interface org.freedesktop.DBus.Properties {
méthodes:
Obtenir (dans l'interface s,
dans s propname,
out v valeur);
Définir (dans l'interface s,
dans s propname,
en valeur v);
GetAll (dans l'interface s,
out a{sv} props );
};
interface org.freedesktop.NetworkManager.Device.Wired {
signaux :
PropertiesChanged(a{sv} arg_0) ;
Propriétés:
en lecture seule b Carrier = false ;
lecture seule u Vitesse = 0;
readonly s HwAddress = '00:1D:72:88:BE:97';
};
interface org.freedesktop.NetworkManager.Device {
méthodes:
Déconnecter();
signaux :
ÉtatModifié(u arg_0,
tu arg_1,
u argument_2) ;
Propriétés:
lecture seule u DeviceType = 1 ;
lecture seule b Géré = vrai ;
readwrite o Ip6Config = '/';
readwrite o Dhcp4Config = '/';
readwrite o Ip4Config = '/';
lecture seule u État = 2 ;
lireécrire u Ip4Address = 0;
lecture seule u Capacités = 3 ;
readonly s Driver = 'e1000e';
readwrite s Interface = 'eth0';
readonly s Udi = '/sys/devices/pci0000:00/0000:00:19.0/net/eth0';
};
};
Votre --récurseur et --seulement-propriétés les options peuvent être utiles lorsque vous souhaitez inspecter tous
objets appartenant à un processus particulier :
$ gdbus introspect --system --dest org.freedesktop.UPower --object-path / --recurse --only-properties
nœud / {
nœud /org {
nœud /org/freedesktop {
nœud /org/freedesktop/UPower {
interface org.freedesktop.UPower {
Propriétés:
en lecture seule b IsDocked = true ;
en lecture seule b LidForceSleep = false ;
en lecture seule b LidIsPresent = false ;
en lecture seule b LidIsClosed = false ;
lecture seule b OnLowBattery = false ;
en lecture seule b OnBattery = false ;
lecture seule b CanHibernate = true;
en lecture seule b CanSuspend = true ;
readonly s DaemonVersion = '0.9.10';
};
nœud /org/freedesktop/UPower/Policy {
};
nœud /org/freedesktop/UPower/Wakeups {
interface org.freedesktop.UPower.Wakeups {
Propriétés:
lecture seule b HasCapability = true ;
};
};
};
};
};
};
De la même manière, le introspecter La commande peut être utilisée pour en savoir plus sur la notification
méthode:
[...]
interface org.freedesktop.Notifications {
méthodes:
GetServerInformation(out s return_name,
out s return_vendor,
out s return_version,
out s return_spec_version);
GetCapabilities(out comme return_caps);
CloseNotification (dans u id);
Notifier (dans s app_name,
dans votre identifiant,
dans l'icône s,
en résumé,
dans son corps,
en tant qu'actions,
dans a{sv} astuces,
dans mon délai d'attente,
out tu return_id);
};
[...]
Avec ces informations, il est facile d'utiliser le Appelez-nous commande pour afficher une notification
$ appel gdbus --session \
--dest org.freedesktop.Notifications\
--object-path /org/freedesktop/Notifications\
--method org.freedesktop.Notifications.Notify \
mon_nom_app \
42
gtk-dialog-info \
"Le résumé" \
"Voici le corps de la notification" \
[] \
{} \
5000
(uint32 12,)
Surveillance de tous les objets sur un service :
$ moniteur gdbus --system --dest org.freedesktop.ConsoleKit
Surveillance des signaux de tous les objets appartenant à org.freedesktop.ConsoleKit
Le nom org.freedesktop.ConsoleKit appartient à : 1.15
/org/freedesktop/ConsoleKit/Session2 : org.freedesktop.ConsoleKit.Session.ActiveChanged (faux)
/org/freedesktop/ConsoleKit/Seat1 : org.freedesktop.ConsoleKit.Seat.ActiveSessionChanged ('',)
/org/freedesktop/ConsoleKit/Session2 : org.freedesktop.ConsoleKit.Session.ActiveChanged (vrai,)
/org/freedesktop/ConsoleKit/Seat1 : org.freedesktop.ConsoleKit.Seat.ActiveSessionChanged ('/org/freedesktop/ConsoleKit/Session2',)
Surveillance d'un seul objet sur un service :
$ moniteur gdbus --system --dest org.freedesktop.NetworkManager --object-path /org/freedesktop/NetworkManager/AccessPoint/4141
Surveillance des signaux sur l'objet /org/freedesktop/NetworkManager/AccessPoint/4141 appartenant à org.freedesktop.NetworkManager
Le nom org.freedesktop.NetworkManager appartient à :1.5
/org/freedesktop/NetworkManager/AccessPoint/4141 : org.freedesktop.NetworkManager.AccessPoint.PropertiesChanged ({'Force' : },)
/org/freedesktop/NetworkManager/AccessPoint/4141 : org.freedesktop.NetworkManager.AccessPoint.PropertiesChanged ({'Force' : },)
/org/freedesktop/NetworkManager/AccessPoint/4141 : org.freedesktop.NetworkManager.AccessPoint.PropertiesChanged ({'Force' : },)
/org/freedesktop/NetworkManager/AccessPoint/4141 : org.freedesktop.NetworkManager.AccessPoint.PropertiesChanged ({'Force' : },)
Émission d'un signal :
$ gdbus émet --session --object-path /foo --signal org.bar.Foo "['foo', 'bar', 'baz']"
Émission d'un signal à un processus spécifique :
$ gdbus émet --session --object-path /bar --signal org.bar.Bar someString --dest :1.42
Utiliser gdbus en ligne en utilisant les services onworks.net