私は一線を画した:
[[ -z $DISPLAY && $XDG_VTNR -le 4 ]] && exec startx
(Arch Wikiのすぐ外).xinitrc
の最後で、コンソールにログインした直後にXserverを起動します。
セッションを終了するときはいつでも、bash
またはzsh
の使用に関係なく、.xinitrc
で開始されたデーモンはログアウト時に強制終了されません。
.bash_logout/.zlogout
が解析されていないようで、基本的には次のように保持します。
kill -15 -1 &&
その問題とおそらく解決策を持っている他の誰か?
exec
ビルトインは、指定されたプログラムによってシェルを置き換えます。その時点以降、シェルは.*logout
をロードするために存在しなくなります。
いずれにせよ、.xinitrc
を実行するシェルはログインシェルではないため、.*logout
ファイルは実行されませんが、そのシェルはstartx
を実行する場所ではありません。これは、xinit
によって実行されるstartx
からロードされるファイルです。
グラフィカルセッションからログアウトした後に何かを実行したい場合は、シェルを実行し続け、startx
の後に実行するものを指定する必要があります。 exec startx
行が.profile
またはログインシェルによって実行される同様のファイルにあると仮定すると、Xセッションがアクティブである間、シェルを実行し続ける必要があり、次にexit
(インタラクティブシェルによるGUIセッションに従わないでください)。
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