ConsoleKit (Italiano)
- ConsoleKit non è più sviluppato attivamente. L'attenzione si è spostata sulla funzione integrata seat/user/session del software/systemd chiamato systemd-loginctl.
ConsoleKit è un framework per gestire i permessi e le sessioni degli utenti. I compiti che più comunemente vengono affidati a ConsoleKit sono: abilitare gli utenti non-root a montare dispositivi usb e permettere loro sospensione e spegnimento del pc (ad esempio Thunar, Nautilus e il menu di spegnimento di GNOME fanno uso di ConsoleKit).
Considerando che Consolekit non è più sviluppato, potrebbe essere una buona idea prendere in considerazione le varie alternative: udev, udiskie e polkit. Altrimenti si prenda in considerazione di switchare completamente su Systemd.
Installazione
Consolekit non è più nei repository di Arch in quanto non più attivamente sviluppato. Usare consolekit è quindi fortemenente sconsigliato.
Rimpiazzare ConsoleKit con systemd-logind
systemd-logind
, quindi perchè il proprio sistema funzioni correttamente è consigliato usare systemd.Un buon metodo per rimuovere Consolekit è effettuare un Login Automatico in una console virtuale e avviare X da qui. È molto importante che il server grafico sia avviato sulla stessa console nella quale viene effettuato l'accesso, in caso contrario infatti, logind non sarà in grado di tenere traccia della sessione utente. Rimuovere quindi ck-launch-session
da ~/.xinitrc
(vedere Xinitrc per ulteriori informazioni).
Per verificare lo stato della propria sessione è possibile usare il comando loginctl
. Tale comando mostrerà se la sessione di logind
è attiva, mostrando in questo caso un Active=yes
. Tutte le operazioni di Policykit (spegnimento/ibernazione ecc) e di Udisks (mount dei dispositivi) ora dovrebbero funzionare in automatico
$ loginctl show-session $XDG_SESSION_ID
ConsoleKit e i Display Manager
ck-launch-session
Per lanciare la sessione di Xorg con consolekit aggiungere alla riga exec
di ~/.xinitrc
ad esempio:
exec ck-launch-session openbox-session
Questo lancerà una sessione di Openbox con le variabili d'ambiente appropriate in modo tale da abilitare ConsoleKit a tutti i processi conseguenti.
Display managers come GDM, SLiM e LXDM lanciano ConsoleKit automaticamente con ogni sessione di X.
- Se il proprio DM fornisce già una sessione di consolekit non provare ad avviarne un'altra, il risultato sarebbe un crash dello stesso consolekit.
- In particolare, è fondamentale, NON inserire
ck-launch-session
nel file~/.xinitrc
se si usa SLiM.
Lanciare applicazioni direttamente da ~/.xinitrc
Se si usa il file Xinitrc per lanciare delle applicazioni nella propria sessione di X, non è detto che tutte queste vengano eseguite con le variabili d'ambiente appropriate per abilitare correttamente la sessione di ConsoleKit. Nel seguente esempio solo i processi "figli" di Compiz saranno correttamente abilitati all'uso di ConsoleKit, mentre i figli di Xterm non lo saranno.
~/.xinitrc
xterm & exec ck-launch-session compiz ccp
Tipicamente, questo problema riguarda Compiz standalone e alcune altre applicazioni cone i launchers, (gnome-do, kupfer, gmrun, xbindkeys, ecc.) che non saranno quindi abilitati all'uso di ConsoleKit. Il metodo per aggirare questo problema è avviare tutta la sessione in un secondo script, ad esempio ~/.xstart
. Non dimenticare dbus-launch
se necessario. Esempio:
~/.xinitrc
exec ck-launch-session dbus-launch $HOME/.xstart
~/.xstart
compiz ccp & Thunar & Terminal
È importante non dimenticare di rendere ~/.xstart
eseguibile, dando da root:
$ chmod +x ~/.xstart
Per vedere se la sessione è partita correttamente usare il seguente comando:
$ ck-list-sessions
L'output dovrebbe essere qualcosa tipo:
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
Se non si usa un Display Manager, ma si avvia X con startx
, o da /etc/inittab
e si nota che consolekit non è avviato (il comando ck-list-sessions
mostrerà active = FALSE
), sarà necessario usare il metodo: "Bash_profile".
Vedere xinitrc per ulteriori informazioni.
Usare dbus per operazioni di sospensione/spegnimento/riavvio ecc
- spegnimento:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
- riavvio:
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
- sospensione:
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
- ibernazione (sospensione su disco):
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
Questo metodo da per scontato che l'utente abbia i permessi di policy kit. Il gruppo di default per questa funzionalità è "wheel". Per cambiare ciò, editare /etc/polkit-1/localauthority.conf.d/50-localauthority.conf