「Xinit」の版間の差分
| 29行目: | 29行目: | ||
== 設定 == |
== 設定 == |
||
| − | {{ic|.xinitrc}} がユーザーのホームディレクトリに配置されている場合、''startx'' や ''xinit'' で実行されます。存在しない場合、''startx'' は {{ic|/etc/X11/xinit/xinitrc}} を実行します。このファイルではデフォルトで [[Twm]] と [[Xterm]] を起動するようになっています (''xinit'' にはファイルの実行以外のデフォルトの挙動があります、詳しくは {{ic|man 1 xinit}} を見て下さい)。したがって、他のウィンドウマネージャやデスクトップ環境を使う場合、まずコピーを作成してください: |
+ | {{ic|.xinitrc}} がユーザーのホームディレクトリに配置されている場合、''startx'' や ''xinit'' で実行されます。存在しない場合、''startx'' は {{ic|/etc/X11/xinit/xinitrc}} を実行します。このファイルではデフォルトで [[Twm]] と [[Xterm]]、{{Pkg|xorg-xclock}} を起動するようになっています (''xinit'' にはファイルの実行以外のデフォルトの挙動があります、詳しくは {{ic|man 1 xinit}} を見て下さい)。したがって、他のウィンドウマネージャやデスクトップ環境を使う場合、まずデフォルトの {{ic|xinitrc}} のコピーを作成してください: |
$ cp /etc/X11/xinit/xinitrc ~/.xinitrc |
$ cp /etc/X11/xinit/xinitrc ~/.xinitrc |
||
| 71行目: | 71行目: | ||
これで選択したウィンドウマネージャが起動します。 |
これで選択したウィンドウマネージャが起動します。 |
||
| + | |||
| + | X を終了するには、ウィンドウマネージャの終了機能を実行してください。ウィンドウマネージャに終了機能がない場合、以下を実行: |
||
| + | |||
| + | $ pkill -15 Xorg |
||
| + | |||
| + | {{Note|''pkill'' は全ての X インスタンスを終了します。現在の VT のウィンドウマネージャを指定して終了させるには、以下を使用: |
||
| + | |||
| + | {{bc|<nowiki> |
||
| + | WM_PID=$(xprop -id $(xprop -root _NET_SUPPORTING_WM_CHECK \ |
||
| + | | awk -F'#' '{ print $2 }') _NET_WM_PID \ |
||
| + | | awk -F' = ' '{ print $2 }') |
||
| + | |||
| + | kill -15 $WM_PID</nowiki>}} |
||
| + | |||
| + | {{ic|xprop}} プログラムは[[公式リポジトリ]]の {{Pkg|xorg-xprop}} パッケージに入っています。 |
||
| + | }} |
||
{{Note| |
{{Note| |
||
| 85行目: | 101行目: | ||
$ startx /full/path/to/window-manager |
$ startx /full/path/to/window-manager |
||
| − | フルパスが必要なので注意してください。 |
+ | フルパスが必要なので注意してください。 |
| + | |||
| + | ウィンドウマネージャに引数を指定する場合、''startx'' のパラメータとしてクォートで囲う必要があります: |
||
| + | $ startx "/full/path/to/window-manager --key value" |
||
| + | |||
| + | また、{{ic|--}} の後にカスタムオプションを指定して (デフォルトの X サーバーオプションが入っている) {{ic|/etc/X11/xinit/xserverrc}} を上書きすることもできます。例: |
||
$ startx /usr/bin/enlightenment -- -nolisten tcp -br +bs -dpi 96 vt$XDG_VTNR |
$ startx /usr/bin/enlightenment -- -nolisten tcp -br +bs -dpi 96 vt$XDG_VTNR |
||
| 94行目: | 115行目: | ||
{{ic|man startx}} を参照してください。 |
{{ic|man startx}} を参照してください。 |
||
| + | |||
| + | {{Tip|通常の GUI プログラムを起動するのに使うこともできます。[[#ウィンドウマネージャを使わずにアプリケーションを起動]] や [[ゲーム#別の X サーバーでゲームを起動する]] を参照。}} |
||
=== DE/WM の選択 === |
=== DE/WM の選択 === |
||
2015年8月24日 (月) 00:33時点における版
~/.xinitrc ファイルは xinit や startx によって読み込まれるシェルスクリプトです。主として、X サーバーが起動した時にデスクトップ環境やウィンドウマネージャなどのプログラムを起動するのに使われます (デーモンの起動や環境変数のセットなど)。xinit と startx プログラムは X Window System を起動させ、X を直接 /etc/init から起動できないシステムや複数のウィンドウシステムを使っている環境で、一番最初のクライアントプログラムとして動作します。
~/.xinitrc の主要な仕事の一つは、/usr/bin/startx や /usr/bin/xinit プログラムが実行されたときに X Window System のためにどのクライアントを呼び出すか指定することです。様々な追加の記述やコマンドが存在しており、それらを ~/.xinitrc に追加して、その後のシステムのカスタマイズも行えます。
ほとんどの DM は xinit の前に同じようなファイルである xprofile も読み込みます。
目次
インストール
xorg-xinit をインストールしてください。
設定
.xinitrc がユーザーのホームディレクトリに配置されている場合、startx や xinit で実行されます。存在しない場合、startx は /etc/X11/xinit/xinitrc を実行します。このファイルではデフォルトで Twm と Xterm、xorg-xclock を起動するようになっています (xinit にはファイルの実行以外のデフォルトの挙動があります、詳しくは man 1 xinit を見て下さい)。したがって、他のウィンドウマネージャやデスクトップ環境を使う場合、まずデフォルトの xinitrc のコピーを作成してください:
$ cp /etc/X11/xinit/xinitrc ~/.xinitrc
スクラッチでファイルを作成するのではなく、コピーを作成することで、/etc/X11/xinit/xinitrc.d のシェルスクリプトの読み込みなど、オリジナルファイルに書かれているデフォルトの挙動を維持することができます。ただしこのディレクトリに含まれていても .sh 拡張子が付いていないスクリプトは読み込まれません: FS#41471。そのため、/etc/X11/xinit/xinitrc.d/?*.sh は /etc/X11/xinit/xinitrc.d/?* で置き換えて下さい [1]。
必要なコマンドを追加して、そのコマンドと衝突するような行を削除/コメントアウトしてください。exec 以降の行は無視されるので注意しましょう。例:
~/.xinitrc
...
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for f in /etc/X11/xinit/xinitrc.d/?* ; do
[ -x "$f" ] && . "$f"
done
unset f
fi
# twm &
# xclock -geometry 50x50-1+1 &
# xterm -geometry 80x50+494+51 &
# xterm -geometry 80x20+494-0 &
# exec xterm -geometry 80x66+0+0 -name login
xscreensaver &
xsetroot -cursor_name left_ptr &
exec openbox-session
スクリーンセーバーや壁紙アプリケーションといった、実行時間が長いプログラムをウィンドウマネージャよりも前に起動する場合、& 記号を付けてバックグラウンドで実行するべきです。ウィンドウマネージャが起動するまで、それぞれのプログラムが終了するまでスクリプトが停止してしまいます。xrdb など、競合状態が発生するためにフォークしてはならないプログラムもあるので注意しましょう。コマンドの前に exec をつけているとスクリプトのプロセスがウィンドウマネージャのプロセスで置き換わり、プロセスがバックグラウンドにフォークされても X が終了しなくなります。
Xorg を通常ユーザーで実行するには、次を実行:
$ startx
または:
$ xinit -- :1 -nolisten tcp vt$XDG_VTNR
これで選択したウィンドウマネージャが起動します。
X を終了するには、ウィンドウマネージャの終了機能を実行してください。ウィンドウマネージャに終了機能がない場合、以下を実行:
$ pkill -15 Xorg
Tips and tricks
コマンドラインから xinitrc を上書きする
~/.xinitrc は既に記述しているが、他の WM/DE を試してみたい場合、ウィンドウマネージャのパスを加えて startx を実行することができます:
$ startx /full/path/to/window-manager
フルパスが必要なので注意してください。
ウィンドウマネージャに引数を指定する場合、startx のパラメータとしてクォートで囲う必要があります:
$ startx "/full/path/to/window-manager --key value"
また、-- の後にカスタムオプションを指定して (デフォルトの X サーバーオプションが入っている) /etc/X11/xinit/xserverrc を上書きすることもできます。例:
$ startx /usr/bin/enlightenment -- -nolisten tcp -br +bs -dpi 96 vt$XDG_VTNR
または:
$ xinit /usr/bin/enlightenment -- -nolisten tcp -br +bs -dpi 96 vt$XDG_VTNR
man startx を参照してください。
DE/WM の選択
様々な DE/WM を頻繁に切り替えて使っている場合、ディスプレイマネージャを使うか、以下のコードを .xinitrc に追加することを推奨します。引数を使って起動したいデスクトップ環境やウィンドウマネージャをロードします:
~/.xinitrc
...
# Here Xfce is kept as default
session=${1:-xfce}
case $session in
awesome ) exec awesome;;
bspwm ) exec bspwm;;
catwm ) exec catwm;;
cinnamon ) exec cinnamon-session;;
dwm ) exec dwm;;
enlightenment ) exec enlightenment_start;;
ede ) exec startede;;
fluxbox ) exec startfluxbox;;
gnome ) exec gnome-session;;
gnome-classic ) exec gnome-session --session=gnome-classic;;
i3|i3wm ) exec i3;;
icewm ) exec icewm-session;;
jwm ) exec jwm;;
kde ) exec startkde;;
mate ) exec mate-session;;
monster|monsterwm ) exec monsterwm;;
notion ) exec notion;;
openbox ) exec openbox-session;;
unity ) exec unity;;
xfce|xfce4 ) exec startxfce4;;
xmonad ) exec xmonad;;
# No known session, try to run it as command
*) exec $1;;
esac
/etc/X11/xinit/xserverrc ファイルをホームディレクトリにコピーしてください:
$ cp /etc/X11/xinit/xserverrc ~/.xserverrc
その後、引数を指定して特定の DE/WM を起動することができます:
$ xinit $ xinit gnome $ xinit kde $ xinit wmaker
または:
$ startx $ startx ~/.xinitrc gnome $ startx ~/.xinitrc kde $ startx ~/.xinitrc wmaker
ウィンドウマネージャを使わずにアプリケーションを起動
ウィンドウマネージャを使わずに特定のアプリケーションだけを起動することも可能です。フルスクリーンモードで何か一つのアプリケーションを表示したいときに有用です。例:
~/.xinitrc
... exec chromium
この方法を使うときはアプリケーションのウィンドウの配置を、アプリケーションの設定ファイルで設定しておく必要があります。