xinit
Wikipedia から:
通常、xinit はウィンドウマネージャやデスクトップ環境を起動するために使用されます。xinit を使うことでウィンドウマネージャ無しで GUI アプリケーションを実行することができますが、多くのグラフィカルアプリケーションは EWMH に準拠したウィンドウマネージャを期待します。ディスプレイマネージャは Xorg を起動し、一般的に xprofile を読み込みます。
目次
インストール
xorg-xinit をインストールしてください。
設定
xinit と startx はオプションでクライアントプログラムの引数を取ります。#Override xinitrc を参照してください。もし、引数を与えなければ、クライアントプロラムを起動するシェルスクリプトとして、~/.xinitrc
を探します。
xinitrc
~/.xinitrc
は X に応じてプログラムを実行し、X サーバーの起動時に環境変数を設定するのに便利です。ユーザーのホームディレクトリに存在する場合は、startx と xinit が実行します。それ以外の場合、startx はデフォルトの /etc/X11/xinit/xinitrc
を実行します。
デフォルトの xinitrc は Twm と, xorg-xclock, Xterm とで基本的な環境をスタートします(必要なパッケージはインストールされているとして。)そのため、別のウィンドウマネージャやデスクトップ環境を始めるには、まずデフォルトの xinitrc
のコピーをホームディレクトリに作成します。
$ cp /etc/X11/xinit/xinitrc ~/.xinitrc
それからそのファイルを編集して、デフォルトのプログラムを必要なコマンドに置き換えます。 exec
で実行するコマンドに続く行は無視されることを覚えておいてください。たとえば、xscreensaver
をバックグラウンドで開始してから openbox を開始するには、以下のように記述します:
~/.xinitrc
... xscreensaver & exec openbox-session
スクリーンセーバーや壁紙アプリケーションといった、長く実行されるプログラムがウィンドウマネージャの前に開始される場合、それらをフォークするか &
記号をつけてバックグラウンドで実行しなければなりません。そうしないと、スクリプトはウィンドウマネージャやデスクトップ環境を実行する前に停止し、それらのプログラムが終了するのを待ちます。いくつかのプログラムは、 xrdb のように、レースバグを回避するためフォークしないでください。exec
を前につけることで、スクリプトプロセスをウィンドウマネージャプロセスへ入れ替えることができます。これにより、たとえこのプロセスがバックグランドへフォークされても X が終了しないようにできます。
xserverrc
xserverrc
ファイルは、X サーバーの起動を担当するシェルスクリプトです。startx と xinit はどちらも ~/.xserverrc
が存在すればそれを実行し、 startx はそうでなければ /etc/X11/xinit/xserverrc
を使用します。
logind
で セッションのパーミッション を維持し、端末を切り替えてスクリーンロッカーを回避するのを防ぐために、ログインしたのと同じ仮想コンソールで Xorg を起動しなければなりません [1]。そのため、~/.xserverrc
ファイルで vt$XDG_VTNR
を指定することが推奨されます。
~/.xserverrc
#!/bin/sh exec /usr/bin/Xorg -nolisten tcp "$@" vt$XDG_VTNR
全てのコマンドラインオプションの一覧は Xserver(1) を参照してください。
また、サーバを起動するコンソールとは別のコンソールで X を表示させたい場合は、 /usr/lib/systemd/systemd-multi-seat-x
が提供する X サーバラッパーを使って表示させることも可能です。便利なように、 xinit と startx は ~/.xserverrc
を修正することでこのラッパーを使うようにセットアップすることができます。
使用方法
Xorg を通常のユーザーとして実行するには、次のように実行します。
$ startx
または、#xserverrc が設定されている場合は:
$ xinit -- :1
これでお好みのウィンドウマネージャー(またはデスクトップ環境)が正しく起動するはずです。
X を終了するには、ウィンドウマネージャーの exit 関数を実行してください(exit 関数があれば)。そのような機能がない場合は次のように実行します。
$ pkill -15 Xorg
signal(7) も参照してください。
ヒントとテクニック
コマンドラインから 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
を参照してください。
ログイン時に X を自動起動
startx が正しく 設定 されていることを確認します。
ログインシェル の初期化ファイル (例: Bash の場合は ~/.bash_profile
, Zsh の場合は ~/.zprofile
) に以下の内容を記述してください。
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then exec startx fi
複数の仮想コンソールでグラフィカルログインを使用したい場合は、-eq
の比較を -le 3
(vt1 から vt3 まで) のようなものに置き換えることが可能です。
仮想コンソールを検出する別の条件として、"$(tty)" = "/dev/tty1"
は -le
との比較が出来ません、 "$(fgconsole 2>/dev/null || echo -1)" -eq 1
は シリアルコンソール では機能しないことが挙げられます。
X セッションが終了してもログインしたままにしたい場合は、exec
を削除してください。
ログイン時に X を起動 と systemd/ユーザー#ディスプレイマネージャを使わずに Xorg に自動ログイン も参照してください。
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
この方法を使うときはアプリケーションのウィンドウの配置を、アプリケーションの設定ファイルで設定しておく必要があります。
ディスプレイマネージャ#ウィンドウマネージャを使わずにアプリケーションを起動も見て下さい。
startx 使用時の出力のリダイレクト
詳細は、Xorg#Session log redirection を参照してください。