Em geral, os diálogos para logout, reinicialização e desligamento podem ser iniciados via dbus
. Em particular, o que você quer é
qdbus com.canonical.Unity /com/canonical/Unity/Session com.canonical.Unity.Session.RequestShutdown
Você pode listar outros métodos através deste comando:
$ qdbus com.canonical.Unity /com/canonical/Unity/Session | grep '\.Request.*'
method void com.canonical.Unity.Session.RequestLogout()
method void com.canonical.Unity.Session.RequestReboot()
method void com.canonical.Unity.Session.RequestShutdown()
Eu usei essa mesma abordagem para várias outras respostas, por exemplo
Como obter um aviso para "Suspender"
Caso alguém sinta que o comando é um pouco longo, lembre-se do Linux 101: você pode criar aliases para comandos ou funções.
alias quit_session='qdbus com.canonical.Unity /com/canonical/Unity/Session com.canonical.Unity.Session.RequestShutdown'
quit_session()
{
qdbus com.canonical.Unity \
/com/canonical/Unity/Session \
com.canonical.Unity.Session.RequestShutdown
}
Na linha de comando, isso será chamado como quit_session
. Fácil, certo? Você pode colocar isso em ~/.bashrc
. Se ainda for longo, use um nome ainda mais curto.
Apesar do tamanho, faz exatamente o que é perguntado na pergunta.