UNIX/Linuxの部屋 設定ファイル:~/.xsession

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




設定ファイル ~/.xsession xdm からログインするときに実行されるスクリプト このエントリーをはてなブックマークに追加

X Window System をインストールしたばかりのときは、~/.xsession が存在しないので、代わりに /usr/X11R6/lib/X11/xdm/Xsession が実行される。自分用のウィンドウ環境を構築したいときは
% cp /usr/X11R6/lib/X11/xdm/Xsession ~/.xsession
% chmod +wx ~/.xsession
として、~/.xsession を編集するとよい。

例えばこんな感じ。
#!/bin/sh
xmodmap $HOME/.Xmodmap
xrdb -m $HOME/.Xresources
xset -b m 3 1
xset dpms 300 300 300000
kterm -T kterm1 -km euc -fn 8x16 -fk kanji16 -g 85x60+10+10 &
kterm -T kterm2 -km euc -fn 8x16 -fk kanji16 -g 73x52-10-10 &
kterm -T kterm3 -km euc -fn 8x16 -fk kanji16 -g 90x60+1290+10 &
twm
X の起動時に自動的に起動してほしいプログラムや各種設定を書いて、最後にウィンドウマネージャを実行するのが一般的だが、最後の部分を
twm &
kterm -T kterm3 -km euc -fn 8x16 -fk kanji16 -g 90x60+1290+10
と逆にするのを好む人もいる。

前者 (ウィンドウマネージャを最後に書く) は、ウィンドウマネージャを終了すると X も終了してしまう。後者は、ウィンドウマネージャを終了しても X は終了せず、最後に実行した kterm を終了すると X が終了する。いろいろなウィンドウマネージャを試してみたいときは、後者の書き方が便利である。

各行の最後の & の有無に注意。xmodmap や xrdb は設定を終えるとプログラム自体は終了してしまうので、最後に & を付ける必要はない (バックグラウンドで動かす必要はないということ。まぁ別にバックグラウンドで動かしても構わないんだけど)。しかし kterm は X アプリケーションであり、kterm 自体が終了しない限り次のプロセスは実行されないので、& を付けてバックグラウンドプロセスとして動かさなければならない。しかし、最後の行を
twm &
と & を付けてしまうと、afterstep をバックグラウンドで起動してしまい、~/.xsession の実行が終了してしまう。そのため、ログインして何もしないうちにログアウトしてしまう (その場合の修正方法は後述)。

また、~/.xsession は
% chmod +x ~/.xsession
として、必ず実行属性を付けておく必要がある。

ちなみに、最後の行を
twm
でなく、
exec twm
と書くと、~/.xsession を実行する /bin/sh のプロセスがなくなり (そのプロセスは afterstep を実行するから)、プロセス数を1つ減らすことができる。

もし ~/.xsession に実行権限を付け忘れたり、ウィンドウマネージャを起動する行に & を付け忘れると、ログインしてもすぐにログアウトしてしまい、~/.xsession を修正することもできなくなる。そういうときは、xdm のログイン画面でパスワードを入力するとき、最後のリターンキーを押さずに、F1 キーや Ctrl-Return を押すと ~/.xsession が無視され、xterm が1つだけ実行される (システム標準の設定)。そこで ~/.xsession を修正するとよい。

~/.xsession の中でのエラー、ウィンドウマネージャの出力するエラーなどは、~/.xsession-errors に書き込まれる。