Isto é o que eu uso para sair do uso do xmonad (depois de usar wmctrl para fechar todas as janelas abertas):
session='loginctl session-status | head -n 1 | awk '{print $1}''
loginctl terminate-session $session
Não sei por que você precisa de mais privilégios para loginctl terminate-session - isso funciona para mim sem essa necessidade.
Observe também que existem maneiras diferentes de obter o ID da sessão. Neste exemplo, eu simplesmente o copio diretamente de loginctl . Há também $XDG_SESSION_ID (como você escreveu) e /proc/self/sessionid .