Mate o processo mestre da sessão X. O processo mestre é aquele que começou na vida como o filho de xinit , ou seja, ~/.xinitrc (que normalmente é um script de shell). Geralmente, a última coisa que o .xinitrc faz é chamar um gerenciador de janelas ou um gerenciador de sessão (por exemplo, twm , fvwm , gnome-session ,…).
Para lembrar o ID do processo, você pode colocá-lo em uma variável de ambiente. Por exemplo, eu tenho isso no meu .xinitrc :
export XSESSION_PID="$$"
…
exec my-favorite-window-manager
Dessa forma, posso sair usando o comando "exit" do my-favorite-window-manager ou executando kill $XSESSION_PID de qualquer shell nesta sessão X.
Alternativamente, se você é moderno o suficiente para rodar D-Bus e um gerenciador de janelas / sessão ciente do D-Bus, você pode deixá-lo saber que você quer sair enviando um comando através do D-Bus. Veja Forma universal de sair do terminal via dbus