.xsessionファイルは,各ユーザのホームディレクトリに置かれ,ログイン時に実行されるシェルスクリプト であり,ログイン時にX Window Systemを利用したアプリケーションを起動する(図1.1).これによって,ログイン直後にktermや,xclockなどを起動することができる.また,fvwm2などのウィンドウマネージャも.xsessionファイルから起動されるので,自分の好きなウィンドウマネージャを使うように設定することもできる.
.xsessionファイルは自分で設定を行っていない状態では存在しないので,最初に環境設定を行うときはホームディレクトリ上に .xsessionファイルを作成し,設定内容を記述する.
.xsessionはシェルスクリプトで書かれたプログラムである.ログイン時に.xsessionの内容にしたがってX Window Systemを利用したktermやxclockなどのアプリケーションが実行される. .xsessionファイルには,基本的なルールにしたがってシェルから実行することができるコマンドを書く.次にまずそのルールについて説明する.
&
''をつけるとログアウトすることができなくなるので注意してほしい.execコマンドで起動したウィンドウを終了するとログアウトする.次にexecの記述の例を示す.
exec kterm -geometry 80x20+0+0 -T "CONSOLE" -sb -ls -C
ここでは,図2.1に例を示して.xsession ファイルの記述の方法を説明する.ただし,説明の都合上,図2.1の例では行の先頭に行番号を挿入してある.また1行目を除き``#''ではじまる行はコメントアウトであり,動作に影響を与えない.また-geometryオプションについては第X部 4.1(図4.1)を参照してほしい.
1 #!/bin/sh 2 3 if [ -f "$
HOME"/.Xdefaults ];then 4 xrdb -load "$
HOME"/.Xdefaults 5 fi 6 7 xmodmap -e "keysym Delete = BackSpace" \ 8 -e "keysym BackSpace = Delete" 9 10 case `hostname` in 11 12 {zz,u}???) 13 14 fvwm2 & 15 16 xbiff -geometry 64x64-130+0 & 17 xclock -geometry 120x120-0+0 & 18 19 kterm -geometry 80x35-80-80 -T$
USER -sb -fl '-*-*-*-*-*-*-24-*' & 20 kterm -geometry 80x20+0+305 -T "SUB" -sb & 21 xv -root$
HOME/Pictures/matte & 22 exec kterm -geometry 80x20+0+0 -T "CONSOLE" -sb -ls -C 23 ;; 24 25 z???) 26 fvwm2 & 27 28 /usr/local/X11R6/bin/xclock -geometry 120x120-0+0 & 29 /usr/openwin/bin/xbiff -geometry 64x64-130+0 & 30 /usr/local/X11R6/bin/xv -root$
HOME/Pictures/matte & 31
32 kterm -geometry 80x35+180+180 -T |
次にこのファイルの内容を説明する.
1 #!/bin/sh
1行目では,このファイルがシェルスクリプトであることを表している.
3 if [ -f "$
HOME"/.Xdefaults ];then 4 nxrdb -load "$
HOME"/.Xdefaults 5 fi
3行目から5行目では,もしホームディレクトリ上に,.Xdefaults という名前のファイルがあればX Window アプリケーションの設定用データベースファイルとして読み込む..Xdefaultsファイルに関しては第X部 2.2.1で述べる.
7 xmodmap -e "keysym Delete = BackSpace" \ 8 -e "keysym BackSpace = Delete"
xmodmapコマンドによって,7行目と8行目で<DEL>と<BS>の機能を入れ替えている.この設定を行うと<DEL>を押すとカーソルの直前の1文字が,<BS>を押すとカーソルがある場所の1文字が消去される.
10 case `hostname` in
case文を利用して,10行目からはhostnameコマンドの結果によってログインするホストにおける設定内容を区別している.その際各ホストの設定の最後には``;;''を忘れないこと.case文では条件による分岐を行うことができる.この例ではhostnameコマンドを実行した結果によって分岐を行っている.また``ホスト名)''から``;;''の間に,そのホストにログインした場合に起動するアプリケーション名を記述する.case文による分岐をすべて記述したら``esac''でcase文を終了する.
case 'hostname' in ホスト名) 起動したいアプリケーション ;; esac
12 z???)
13
14 fvwm2 & #好みのウィンドウマネージャの起動.ここではfvwm2.
15
16 xclock -geometry 120x120-0+0 &
17 xbiff -geometry 64x64-130+0 &
18
19 kterm -geometry 80x35-80-80 -T $
USER -sb -fl '-*-*-*-*-*-*-24-*' &
20 kterm -geometry 80x20+0+305 -T SUB -sb &
21 xv -root Pictures/matte &
22 exec kterm -geometry 80x20+0+0 -T CONSOLE -sb -ls -C
23 ;;
図2.1の例では12行目から23行目でccn??にログインした場合の設定を行っている.ktermの-lsオプションはログインシェルの指定であり,-Cオプションはコンソールにするための指定である.ログインシェルにすることで,このktermから起動したシェルで.loginが実行される.最後のktermは必ずexecをつけて起動し,&
はつけないこと.
48 *)
49 twm &
50
51 xclock -geometry 120x120-0+0 &
52 xbiff -geometry 64x64-130+0 &
53
54 kterm -geometry 80x30-80-80 -T $
USER &
55 exec kterm -geometry 80x20+0+0 -T "CONSOLE" -ls -C
56 ;;
48行目の*)からはじまる記述は,それ以前の記述にもれたすべてのホストに適用される.例えば,図2.1に示した .xsessionファイルの場合にはccn??,z???,indy??以外のホストにログインしたときはこの記述にしたがう.
57 esac
57行目の``esac''はcase文による場合分けの終了を意味する.
これらが図2.1に示した.xsessionファイルの説明であるが,これを参考に自分に最適な環境設定を行ってほしい.
% rlogin localhost -l s00000hf <RET>
% mv .xsession .xsession.bak<RET>
% _