この情報を取得する最も便利な方法は、ConsoleKit DBus インターフェイスを使用することです。
次の手順は、セッションを列挙し、それらがアクティブかどうかを判断する方法の概要を示しています。
1.) 以下を使用してセッションを列挙します。
Bus: org.freedesktop.ConsoleKit
Path: /org/freedesktop/ConsoleKit/Manager
Method: org.freedesktop.ConsoleKit.Manager.GetSessions
返されるのは、Session インターフェイスをエクスポートするオブジェクト パスの配列です。これらは、DBus を使用してクエリを実行し、適切なプロパティを取得できます。たとえば、dbus-send を使用して ConsoleKit と通信し、システム内のセッションを列挙しました。
dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.GetSessions
そして、返ってきたのは次のようなものでした。
method return sender=:1.15 -> dest=:1.205 reply_serial=2
array [
object path "/org/freedesktop/ConsoleKit/Session2"
]
2.) 返されたオブジェクト パスを使用して、以下を使用して、オブジェクトがアクティブかどうかなどの属性をクエリできます。
Bus: org.freedesktop.ConsoleKit
Path: /org/freedesktop/ConsoleKit/Session2
Method: org.freedesktop.ConsoleKit.Session.IsActive
メソッドによっては、セッションから必要なものを照会できます。ConsoleKit インターフェイスを使用すると、現在のセッションの識別子も取得できるので、必要なときにいつでもクエリを実行してアクティブかどうかを確認できます。おふざけとして、次のコマンドの出力を次に示します。
dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Session2 org.freedesktop.ConsoleKit.Session.IsActive
method return sender=:1.15 -> dest=:1.206 reply_serial=2 boolean true
きちんとした。