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