xinitrc (日本語)
~/.xinitrc ファイルは xinit や startx によって読み込まれるシェルスクリプトです。主として、X サーバーが起動した時にデスクトップ環境やウィンドウマネージャなどのプログラムを起動するのに使われます (デーモンの起動や環境変数のセットなど)。xinit と startx プログラムは X Window System を起動させ、X を直接 /etc/init から起動できないシステムや複数のウィンドウシステムを使っている環境で、一番最初のクライアントプログラムとして動作します。
~/.xinitrc の主要な仕事の一つは、/usr/bin/startx や /usr/bin/xinit プログラムが実行されたときに X Window System のためにどのクライアントを呼び出すか指定することです。様々な追加の記述やコマンドが存在しており、それらを ~/.xinitrc に追加して、その後のシステムのカスタマイズも行えます。
Contents
初めに
新しくユーザーを作ったときのデフォルトと同じファイル・ディレクトリが /etc/skel/ に入っています (skel という名前は skeleton (スケルトン) からきています。これらのファイルはユーザーの home ディレクトリのための基本骨格となるからです)。xorg-xinit パッケージは骨組みの .xinitrc ファイルで /etc/skel を初期設定します。
サンプルファイル /etc/skel/.xinitrc をあなたの home ディレクトリにコピーします:
$ cp /etc/skel/.xinitrc ~
そして ~/.xinitrc を編集し、あなたが使っている DE/WM に合わせて行をアンコメントします。例えば、基本的な X の設定(マウス、キーボード、解像度)をテストするために xterm を使いたい場合:
#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "$f" ] && . "$f"
done
unset f
fi
# exec gnome-session
# exec startkde
# exec startxfce4
# exec wmaker
# exec icewm
# exec blackbox
# exec fluxbox
# exec openbox-session
# ...or the Window Manager of your choice
exec xterm
~/.xinitrc を正しく設定したら、X を起動してください。X を起動するには:
$ startx
あなたが選んだ DE/WM が起動するはずです。自由にキーボードやマウスやレイアウトをテストしてください。
セッションの維持
logind セッションを維持するために、X はいつでもログインしたのと同じ tty で実行される必要があります。これはデフォルトの /etc/X11/xinit/xserverrc によって管理されています。関連する問題については General troubleshooting#Session permissions も見て下さい。
ファイル例
以下はスタートアッププログラムをいくつか含んだ ~/.xinitrc の例です:
~/.xinitrc
#!/bin/sh
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "$f" ] && . "$f"
done
unset f
fi
xrdb -merge ~/.Xresources # update x resources db
xscreensaver -no-splash & # starts screensaver daemon
xsetroot -cursor_name left_ptr & # sets the cursor icon
sh ~/.fehbg & # sets the background image
exec openbox-session # starts the window manager
exec の前に書かれていることは現在のプロセスを置き換えるものとして推奨されます、スクリプトの実行が停止したりプロセスがバックグラウンドにフォークされても X が終了しなくなります。
ファイル設定
ディスプレイマネージャを使わない場合、X セッションの生殺与奪は ~/.xinitrc 次第であることを心に留めて下さい。これはスクリプトが一度終了すればあなたが(ウィンドウマネージャを含む)プログラムをまだ実行していようと X が終了することを意味しています。従ってウィンドウマネージャの終了と X の終了が同時に起こる必要があるということが重要です。そのために、スクリプトの最後のプログラムとしてウィンドウマネージャを起動しましょう。
上の例では cairo-compmgr, xscreensaver, xsetroot, sh などのプログラムがバックグラウンドで実行されている (& が後ろに付けられている) ことに注意してください。そうしないと、openbox-session を実行する前に、スクリプトがそれぞれのプログラムやデーモンを待つことになります。また、openbox-session はバックグラウンドにしていないことも注意してください。これで openbox が動いている間はスクリプトが終了しないようになっています。
以下のセクションでは複数の WM や DE を使う場合の ~/.xinitrc の設定方法を説明しています。
コマンドライン
既に ~/.xinitrc が動作しているが、他の WM/DE を試してみたい場合、ウィンドウマネージャへのパスを指定した xinit を実行することで WM/DE を起動できます:
xinit /full/path/to/window-manager
フルパスが必要です。任意で、X サーバーに -- の後でオプションを渡すこともできます - 例:
xinit /usr/bin/enlightenment -- -br +bs -dpi 96
以下の ~/.xinitrc の例では引数によって特定のウィンドウマネージャを起動する方法を示しています:
~/.xinitrc
#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "$f" ] && . "$f"
done
unset f
fi
if [[ $1 == "fluxbox" ]]
then
exec startfluxbox
elif [[ $1 == "spectrwm" ]]
then
exec spectrwm
else
echo "Choose a window manager"
fi
このサンプルを使えば xinit fluxbox や xinit spectrwm というコマンドで fluxbox や spectrwm が起動できます。
スタートアップ
Start X at Login (日本語) を見て下さい。