ConsoleKit is a framework for managing user sessions and permissions. Some of the most common usages of ConsoleKit are allowing non-root users to mount removable media and suspending/shutting down the computer through common desktop applications (e.g. Thunar, Nautilus, the GNOME shutdown menu, etc.).
If you mind using an unmaintained application and you only want a convenient way to mount disks as user, have a look at udev, udiskie and PolicyKit. You need to strongly consider switching to systemd.
Replacing ConsoleKit with systemd-logind
An easy method to be able to remove ConsoleKit is to automatically log in to a virtual console and start X from there. It is important that, as mentioned in the latter article, the X server is started on the same virtual console that you log in to, otherwise logind can not keep track of the user session. You can then simply remove
ck-launch-session from your
In order to check the status of your user session, you can use
loginctl. To see if your user session is properly set up, check if the following command contains
Active=yes. All PolicyKit actions like suspending the system or mounting external drives with Udisks should then work automatically.
$ loginctl show-session $XDG_SESSION_ID
Display manager usage
To launch an X session with ConsoleKit, append the following to the
exec statement in
exec ck-launch-session openbox-session
This starts Openbox with proper environment variables so it and its children are able to use ConsoleKit.
Running several applications from ~/.xinitrc
If several applications are to be executed from
~/.xinitrc, not all of these will have ConsoleKit environment variables set. In the following example, only children of Compiz will be able to properly use ConsoleKit, but children of xterm will not.
xterm & exec ck-launch-session compiz ccp
Typically, this can be an issue when for example using Compiz standalone and some other application launchers, (gnome-do, kupfer, gmrun, xbindkeys, etc.) since children of the application launcher will not be able to use ConsoleKit. A dirty workaround is to have the entire session started by a second script, e.g.
~/.xstart. Do not forget dbus-launch, it is likely that you will need it too:
exec ck-launch-session dbus-launch ~/.xstart
xterm & thunar & compiz ccp
Do not forget to make
$ chmod +x ~/.xstart
To see whether everything is started correctly:
It should show at least one session like this one:
Session18: unix-user = '1000' realname = 'Your Name' seat = 'Seat1' session-type = active = TRUE x11-display = ':0' x11-display-device = '/dev/tty2' display-device = '/dev/tty1' remote-host-name = is-local = TRUE on-since = '2011-11-16T12:01:50.104764Z' login-session-id = '7'
No display manager
If you are not using a display manager, but starting your window manager via the
startx command, or from inittab.
If ConsoleKit is not working (
ck-list-sessions command showing active = FALSE), you should start your window manager using the bash_profile method: Start_X_at_Login#bash_profile.
Use D-Bus for power operations
- shut down:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
- hibernate (suspend to disk):
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
This method assumes that you are given permission to shut the system down via PolicyKit. The default group for this is
wheel. To change this, edit
/etc/polkit-1/localauthority.conf.d/50-localauthority.conf as root.