「Xinit」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
 
66行目: 66行目:
 
===セッションの維持===
 
===セッションの維持===
   
logind セッションを維持するために、X はいつでもログインしたのと同じ tty で実行される必要があります。これはデフォルトの {{ic|/etc/X11/xinit/xserverrc}} によって管理されています。関連する問題については [[General troubleshooting#Session permissions]] も見て下さい。
+
logind セッションを維持するために、X はいつでもログインしたのと同じ tty で実行される必要があります。これはデフォルトの {{ic|/etc/X11/xinit/xserverrc}} によって管理されています。関連する問題については[[一般的なトラブルシューティング#セッションのパーミッション]]も見て下さい。
   
 
{{Note|過去、古いセッションを壊す代わりに'''新しい'''セッションをスタートするために {{ic|ck-launch-session}} が使われていました。{{ic|logind}} にはこのようなことをするものがないので、任意の tty で X を実行するためにディスプレイマネージャが必要です。}}
 
{{Note|過去、古いセッションを壊す代わりに'''新しい'''セッションをスタートするために {{ic|ck-launch-session}} が使われていました。{{ic|logind}} にはこのようなことをするものがないので、任意の tty で X を実行するためにディスプレイマネージャが必要です。}}

2015年1月7日 (水) 12:21時点における版

関連記事

~/.xinitrc ファイルは xinitstartx によって読み込まれるシェルスクリプトです。主として、X サーバーが起動した時にデスクトップ環境ウィンドウマネージャなどのプログラムを起動するのに使われます (デーモンの起動や環境変数のセットなど)。xinitstartx プログラムは X Window System を起動させ、X を直接 /etc/init から起動できないシステムや複数のウィンドウシステムを使っている環境で、一番最初のクライアントプログラムとして動作します。

~/.xinitrc の主要な仕事の一つは、/usr/bin/startx/usr/bin/xinit プログラムが実行されたときに X Window System のためにどのクライアントを呼び出すか指定することです。様々な追加の記述やコマンドが存在しており、それらを ~/.xinitrc に追加して、その後のシステムのカスタマイズも行えます。

初めに

新しくユーザーを作ったときのデフォルトと同じファイル・ディレクトリが /etc/skel/ に入っています (skel という名前は skeleton (スケルトン) からきています。これらのファイルはユーザーの home ディレクトリのための基本骨格となるからです)。xorg-xinit パッケージは骨組みの .xinitrc ファイルで /etc/skel を初期設定します。

ノート: ~/.xinitrc はいわゆる'ドット' (.) ファイルと呼ばれるものです。*nix ファイルシステムでは名前の最初にドット (.) が付けられたファイルは'隠匿されて'普通の ls コマンドでは表示されません。ls -A を実行することでドットファイルを見ることができます。'rc' は Run Commands を示していて、単純に設定ファイルだということを表しています。プログラムの動作 (run) の方法をコントロールしているので、"Run Control" の意味だと言われることもあります(歴史的には間違っています)。

サンプルファイル /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
ノート: アンコメントされた exec 行が複数ある場合、アンコメントされた行の中で最初の行だけが実行されます。

~/.xinitrc を正しく設定したら、X を起動してください。X を起動するには:

$ startx

あなたが選んだ DE/WM が起動するはずです。自由にキーボードやマウスやレイアウトをテストしてください。

セッションの維持

logind セッションを維持するために、X はいつでもログインしたのと同じ tty で実行される必要があります。これはデフォルトの /etc/X11/xinit/xserverrc によって管理されています。関連する問題については一般的なトラブルシューティング#セッションのパーミッションも見て下さい。

ノート: 過去、古いセッションを壊す代わりに新しいセッションをスタートするために ck-launch-session が使われていました。logind にはこのようなことをするものがないので、任意の tty で X を実行するためにディスプレイマネージャが必要です。

ファイル例

以下はスタートアッププログラムをいくつか含んだ ~/.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 fluxboxxinit spectrwm というコマンドで fluxbox や spectrwm が起動できます。

スタートアップ

ログイン時に X を起動を見て下さい。