Você pode enviar um comando de logout via dbus para o KDE, que deve (se puder) terminar a sessão.
qdbus org.kde.ksmserver /KSMServer logout 0 0 0
O dbus é um sistema de mensagens que permite que os aplicativos se comuniquem, e o qdbus
comando é um utilitário para o envio de mensagens dbus para os aplicativos.
Os aplicativos são registrados no dbus, e a ksmserver
parte do KDE é o gerenciador de sessões - ele cuida de quem está conectado.
Então, estamos enviando uma mensagem ksmserver
para a /KSMServer
interface e solicitando o logout. A mensagem que estamos enviando é exatamente a mesma que é enviada ao KSM quando você clica no ícone de logout na área de trabalho.
Os três zeros são parâmetros e podem alterar o tipo de logout que estamos fazendo:
Primeiro parâmetro:
- 0 = Não espere pela confirmação
- 1 = Aguardar confirmação (com um tempo limite de 30 segundos)
Segundo parâmetro:
- -1 = Solicitar ação, padronizando o desligamento (faz sentido apenas quando se aguarda a confirmação.)
- 0 = Logout
- 1 = Reiniciar
- 2 = Desligamento
O terceiro parâmetro é o "quando", mas não está claro qual é o seu impacto.