現在、GDBusを使用してConsoleKitと対話しています。私はConsoleKit2 XMLファイルとgdbus-codegen
を使用してコードを生成しました。すべてがうまくいきます。しかし、オブジェクトが存在するかどうかをどのように確認できますか?たとえば、/org/freedesktop/ConsoleKit/Session2
があるかどうかを確認したいとします(例として、Seatオブジェクトのすべてのセッションを列挙できることはわかります)。D-Busオブジェクトが存在するか確認してください。
私はorg.freedesktop.DBus.Peer.Ping
機能を使用してみましたが、それは
dbus-send --system --print-reply --reply-timeout=2000 --type=method_call --dest=org.freedesktop.DBus /org/freedesktop/ConsoleKit/Seat1 org.freedesktop.DBus.Peer.Ping
Error org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 1 matched rules; type="method_call", sender=":1.168" (uid=1000 pid=18279 comm="dbus-send --system --print-reply --reply-timeout=2") interface="org.freedesktop.DBus.Peer" member="Ping" error name="(unset)" requested_reply="0" destination="org.freedesktop.DBus" (bus)
ありがとうございました。アイデアナンバー2も私の心の中に来ましたが、私はそれが醜いと思った。次に、それは1になります。私はその決定的ではないことを知っています、私は例としてハードコードされたパスを使用しました。私はlogindがこれを行うための新しい方法であることも知っています。アプリケーションの次のステップはlogindサポートになりますが、一部のディストリビューションではまだconsolekitを使用しています(例えばGentoo LinuxでもConsolekitを使用できます)。ありがとうございました。 – Nidhoegger