今さらだけど、.xinitrc, .xsession, .xprofileの役割を整理しておこう。
自分の環境ではなんとなく問題なさそうに動いていたから、今まであまり気にしていなかったけど、たまにハマるのでこの機会によく理解しておこうかと。
xprofile vs xsession vs xinitrc(上のリンク先の回答の受け売りとDebian Manualから)
どのプログラムが使うのか | 説明 | |
---|---|---|
.xinitrc | xinit (と startx)。 ルートのXプログラム(Gnome, KDEなど) | startxなどで、ユーザーが手動でXをスタートさせる時に読み込む。 |
.xsession | display manager | イマドキのdisplay managerは起動するwindow managerを選べるので、.xsessionを参照したり、しなかったりする。 |
.xprofile | (display mangerを介して) | X セッションにログインした時の設定。 .profileと同様だけど、Xセッション特有のものだけ。 |
.xsessionrc | Xセッションの起動プロセスで読まれる。 どのデスクトップでも共通。 |
( ArchWikiの環境変数のページ にはGNOME Waylandはxprofileを読み込まないとある。)
目次
Debian的な Xセッションの設定は
Debianのマニュアル( 7.5.3. Customizing the X session (new method) )を読む限りでは、.xsessionrcに書くほうが良さそう。 というのも、どのdesktopでも読まれるのは.xsessionrcだから。(ちなみに.xprofileはdisplay managerの起動プロセスで読まれるとある。)
.xprofileでも良さそうだけど、この辺りの違いがよく分からない。
またDebian Wiki Xsession に.xsessionrcに環境変数などを設定するように書いてある。
7.5.3. Customizing the X session (new method) によれば、設定ファイルにはexec
やexit
を書いてはいけない。
DebianのXセッションの起動の流れ
現在のDebianの場合、Xセッションは以下の流れで動くらしい:
- ユーザーが.xsessionrcファイルを持っている場合は、それを読む
- 特定のdisplay mangerが選ばれている場合は、それを起動する
- そうでない場合、もしもユーザーが.xsessionか.Xsessionファイルを持っている場合、それを起動する
- そうでない場合、
/usr/bin/x-session-manger
があれば、それを起動する - そうでない場合、
/usr/bin/x-window-manger
があれば、それを起動する - そうでない場合、
/usr/bin/x-terminal-emulator
があれば、それを起動する