O exec
embutido substitui o shell pelo programa especificado. Depois desse ponto, o shell não está mais por perto para carregar .*logout
.
Em qualquer caso, o shell que executa .xinitrc
não é um shell de login, portanto, não executaria nenhum arquivo .*logout
- mas esse shell não é onde você executaria startx
, é um arquivo que é carregado de xinit
que é executado por startx
.
Se você deseja executar algo depois de sair da sessão gráfica, é necessário manter o shell em execução e especificar algo para executar após startx
. Supondo que a linha exec startx
esteja em .profile
ou um arquivo semelhante executado pelo seu shell de login, você precisa manter o shell em execução enquanto a sessão X estiver ativa, então exit
(para não seguir a sessão GUI um shell interativo).
if [[ -z $DISPLAY && $XDG_VTNR -le 4 ]]; then
if startx; then
# We just exited an X session.
exit
# If your login shell is bash, it runs ~/.logout at this point.
else
echo >&2 "The X session aborted with an error, dropping to a text shell"
fi
fi