#!/usr/bin/env python import os import gobject import dbus import sys bus = dbus.SystemBus () manager_obj = bus.get_object ('org.freedesktop.ConsoleKit', '/org/freedesktop/ConsoleKit/Manager') manager = dbus.Interface (manager_obj, 'org.freedesktop.ConsoleKit.Manager') params = dbus.Array ([], signature = "(sv)") params.append (("unix-user", dbus.Int32 (os.getuid(), variant_level=1))) params.append (("session-type", dbus.String ("nx", variant_level=1))) params.append (("x11-display", dbus.String (os.environ['DISPLAY'], variant_level=1))) params.append (("is-local", dbus.Boolean (True, variant_level=1))) cookie = manager.OpenSessionWithParameters (params) os.environ['XDG_SESSION_COOKIE'] = cookie current_session = manager.GetSessionForCookie (cookie) session_obj = bus.get_object ('org.freedesktop.ConsoleKit', current_session) session = dbus.Interface (session_obj, 'org.freedesktop.ConsoleKit.Session') properties = dbus.Interface (session_obj, 'org.freedesktop.DBus.Properties') properties.Set ("org.freedesktop.DBus.Properties", "active", dbus.Boolean (True, variant_level=1)) os.setreuid(os.getuid(), os.getuid()) os.spawnvp(os.P_WAIT, sys.argv[1], [])