「Xinit」の版間の差分
(→使用方法: 同期) |
細 (→ログイン時に X を自動起動: 修正) |
||
(同じ利用者による、間の8版が非表示) | |||
95行目: | 95行目: | ||
== ヒントとテクニック == |
== ヒントとテクニック == |
||
− | === |
+ | === xinitrc をオーバーライドする === |
− | {{ic|~/.xinitrc}} |
+ | すでに {{ic|~/.xinitrc}} があるが、他のウィンドウマネージャやデスクトップ環境を試してみたい場合、ウィンドウマネージャへのパスを付け加えて ''startx'' を実行することで、ウィンドウマネージャを起動させることができます。例えば: |
− | $ startx / |
+ | $ startx /usr/bin/i3 |
+ | ウィンドウマネージャのバイナリが引数を取る場合、引数全体が ''startx'' の第1パラメータとして認識されるようにするために引数を引用符で囲む必要があります: |
||
− | フルパスが必要なので注意してください。 |
||
+ | $ startx "/usr/bin/''application'' --''key value''" |
||
− | ウィンドウマネージャに引数を指定する場合、''startx'' のパラメータとしてクォートで囲う必要があります: |
||
− | $ startx "/full/path/to/window-manager --key value" |
||
− | また、 |
+ | 完全なパスが '''必要である''' ことに注意してください。また、[[#xserverrc]] スクリプトのカスタムオプションは、{{ic|--}} 記号のあとに付け加えることで指定できます: |
− | $ startx /usr/bin/enlightenment -- |
+ | $ startx /usr/bin/enlightenment -- -br +bs -dpi 96 |
+ | {{man|1|startx}} も参照してください。 |
||
− | または: |
||
+ | {{Note|1={{ic|/etc/X11/xinit/xinitrc.d/}} にあるスクリプトはスキップされるので、環境変数 {{ic|DISPLAY}} を設定する必要があるかもしれません。次のように実行することで、''i3'' を好きなディスプレイに表示させてみることができます: {{ic|1=DISPLAY=:''display_number'' startx /usr/bin/i3}}。}} |
||
− | $ xinit /usr/bin/enlightenment -- -nolisten tcp -br +bs -dpi 96 vt$XDG_VTNR |
||
+ | {{Tip|これにより通常の GUI プログラムを開始できますが、基本的なウィンドウマネージャの機能はありません。[[#ウィンドウマネージャを使わずにアプリケーションを起動する]] と [[ゲーム#別の X サーバーでゲームを起動する]] を参照してください。}} |
||
− | {{ic|man startx}} を参照してください。 |
||
− | |||
− | {{Tip|通常の GUI プログラムを起動するのに使うこともできます。[[#ウィンドウマネージャを使わずにアプリケーションを起動]] や [[ゲーム#別の X サーバーでゲームを起動する]] を参照。}} |
||
=== ログイン時に X を自動起動 === |
=== ログイン時に X を自動起動 === |
||
− | ''startx'' が |
+ | ''startx'' が適切に[[#設定|設定されている]]ことを確認してください。 |
− | [[ |
+ | 以下を[[ログインシェル]]の初期化ファイル (例: [[Bash]] の場合は {{ic|~/.bash_profile}}、[[Zsh]] の場合は {{ic|~/.zprofile}}) に記述してください: |
{{bc|1=<nowiki> |
{{bc|1=<nowiki> |
||
130行目: | 127行目: | ||
</nowiki>}} |
</nowiki>}} |
||
− | 複数の仮想コンソールでグラフィカルログインを使用したい場合は、{{ic|-eq}} |
+ | 複数の仮想コンソールでグラフィカルログインを使用したい場合は、{{ic|-eq}} 比較演算子を {{ic|-le 3}} (vt1 から vt3 まで) のようなものに置き換えることで可能です。 |
− | 仮想コンソールを検出 |
+ | 仮想コンソールを検出できる条件式として {{ic|<nowiki>"$(tty)" = "/dev/tty1"</nowiki>}} もありますが、これは {{ic|-le}} を使って比較することができません。また、{{ic|<nowiki>"$(fgconsole 2>/dev/null || echo -1)" -eq 1</nowiki>}} という書き方もありますが、こっちは[[シリアルコンソール]]では動きません。 |
− | X セッションが終了し |
+ | {{ic|exec}} コマンドは、X サーバが終了、クラッシュ、または攻撃者によって kill されたときに、ユーザがログアウトすることを保証します。リスクを犯して、X セッションが終了したときにログイン状態を維持したい場合は、{{ic|exec}} を取り除いてください。 |
+ | [[Fish#ログイン時に X を起動]] と [[systemd/ユーザー#ディスプレイマネージャを使わずに Xorg に自動ログイン]] も参照してください。 |
||
− | {{Warning|{{ic|exec}} がなければ、X を Kill することができます、これであなたのホームディレクトリのシェルとファイルへのアクセスを取得することができます。このことがあなたにとって重要かどうか、上記のことを実行する前に判断してください}} |
||
− | [[ |
+ | {{Tip|この方法は [[getty#仮想コンソールに自動ログイン|仮想コンソールに自動ログイン]] と組み合わせることができます。}} |
+ | === デスクトップ環境/ウィンドウマネージャを切り替える === |
||
− | {{Tip|この方法は [[getty#仮想コンソールに自動ログイン|仮想コンソールに自動ログイン]] と組み合わせることができます}} |
||
+ | 様々なデスクトップ環境やウィンドウマネージャを頻繁に切り替える場合、[[ディスプレイマネージャ]]を使うか、{{ic|~/.xinitrc}} を拡張して切り替えを可能にすると便利です。 |
||
− | === DE/WM の選択 === |
||
− | + | 以下の例では、特定のデスクトップ環境やウィンドウマネージャを引数付きで起動する方法を示しています: |
|
{{hc|~/.xinitrc|<nowiki> |
{{hc|~/.xinitrc|<nowiki> |
||
... |
... |
||
+ | # ここで Xfce をデフォルトとしています |
||
− | # Here Xfce is kept as default |
||
session=${1:-xfce} |
session=${1:-xfce} |
||
case $session in |
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;; |
i3|i3wm ) exec i3;; |
||
− | + | kde ) exec startplasma-x11;; |
|
− | 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;; |
xfce|xfce4 ) exec startxfce4;; |
||
+ | # 既知のセッションではないので、引数をコマンドとして実行してみる |
||
− | xmonad ) exec xmonad;; |
||
− | + | * ) exec $1;; |
|
− | *) exec $1;; |
||
esac |
esac |
||
</nowiki>}} |
</nowiki>}} |
||
+ | ''session'' 引数を渡すには: |
||
− | {{ic|/etc/X11/xinit/xserverrc}} ファイルをホームディレクトリにコピーしてください: |
||
− | $ |
+ | $ xinit ''session'' |
+ | あるいは |
||
− | その後、引数を指定して特定の DE/WM を起動することができます: |
||
+ | $ startx ~/.xinitrc ''session'' |
||
− | $ xinit |
||
− | $ xinit gnome |
||
− | $ xinit kde |
||
− | $ xinit wmaker |
||
− | |||
− | または: |
||
− | |||
− | $ startx |
||
− | $ startx ~/.xinitrc gnome |
||
− | $ startx ~/.xinitrc kde |
||
− | $ startx ~/.xinitrc wmaker |
||
=== ウィンドウマネージャを使わずにアプリケーションを起動 === |
=== ウィンドウマネージャを使わずにアプリケーションを起動 === |
||
207行目: | 176行目: | ||
}} |
}} |
||
+ | あるいは、[[#xinitrc をオーバーライドする]] で説明されているように、コマンドプロンプトからバイナリを直接実行することもできます。 |
||
− | この方法を使うときはアプリケーションのウィンドウの配置を、アプリケーションの設定ファイルで設定しておく必要があります。 |
||
+ | |||
+ | この方法を使うときはアプリケーションのウィンドウの配置を、アプリケーションの設定ファイルで設定しておく必要があります (可能な限り)。 |
||
+ | |||
+ | {{Tip|コンポジタのオーバーヘッドを取り除くことでゲームのパフォーマンスが向上するのであれば、この方法でグラフィカルなゲームを起動すると便利かもしれません。}} |
||
+ | [[ディスプレイマネージャ#ウィンドウマネージャを使わずにアプリケーションを起動]] も見て下さい。 |
||
− | {{Tip|この方法を使ってグラフィカルなゲームを起動することも可能です。特に、ウィンドウマネージャやデスクトップ環境、またはデスクトップアクセサリといったアプリケーションによるメモリと CPU の消費を抑えて、ゲームの実行パフォーマンスを底上げすることができます。}} |
||
+ | === startx を使って出力をリダイレクトする === |
||
− | [[ディスプレイマネージャ#ウィンドウマネージャを使わずにアプリケーションを起動]]も見て下さい。 |
||
− | + | 詳細は [[Xorg#セッションログのリダイレクト]] を見てください。 |
|
+ | {{TranslationStatus|xinit|2023-06-20|771773}} |
||
− | 詳細は、[[Xorg#Session log redirection]] を参照してください。 |
2023年6月20日 (火) 07:22時点における最新版
Wikipedia から:
通常、xinit はウィンドウマネージャやデスクトップ環境を起動するために使用されます。xinit を使うことでウィンドウマネージャ無しで GUI アプリケーションを実行することができますが、多くのグラフィカルアプリケーションは EWMH に準拠したウィンドウマネージャを期待します。ディスプレイマネージャは Xorg を起動し、一般的に xprofile を読み込みます。
目次
インストール
xorg-xinit をインストールしてください。
設定
xinit と startx は任意でクライアントプログラムの引数を受け取ります。#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
があるが、他のウィンドウマネージャやデスクトップ環境を試してみたい場合、ウィンドウマネージャへのパスを付け加えて startx を実行することで、ウィンドウマネージャを起動させることができます。例えば:
$ startx /usr/bin/i3
ウィンドウマネージャのバイナリが引数を取る場合、引数全体が startx の第1パラメータとして認識されるようにするために引数を引用符で囲む必要があります:
$ startx "/usr/bin/application --key value"
完全なパスが 必要である ことに注意してください。また、#xserverrc スクリプトのカスタムオプションは、--
記号のあとに付け加えることで指定できます:
$ startx /usr/bin/enlightenment -- -br +bs -dpi 96
startx(1) も参照してください。
ログイン時に 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
という書き方もありますが、こっちはシリアルコンソールでは動きません。
exec
コマンドは、X サーバが終了、クラッシュ、または攻撃者によって kill されたときに、ユーザがログアウトすることを保証します。リスクを犯して、X セッションが終了したときにログイン状態を維持したい場合は、exec
を取り除いてください。
Fish#ログイン時に X を起動 と systemd/ユーザー#ディスプレイマネージャを使わずに Xorg に自動ログイン も参照してください。
デスクトップ環境/ウィンドウマネージャを切り替える
様々なデスクトップ環境やウィンドウマネージャを頻繁に切り替える場合、ディスプレイマネージャを使うか、~/.xinitrc
を拡張して切り替えを可能にすると便利です。
以下の例では、特定のデスクトップ環境やウィンドウマネージャを引数付きで起動する方法を示しています:
~/.xinitrc
... # ここで Xfce をデフォルトとしています session=${1:-xfce} case $session in i3|i3wm ) exec i3;; kde ) exec startplasma-x11;; xfce|xfce4 ) exec startxfce4;; # 既知のセッションではないので、引数をコマンドとして実行してみる * ) exec $1;; esac
session 引数を渡すには:
$ xinit session
あるいは
$ startx ~/.xinitrc session
ウィンドウマネージャを使わずにアプリケーションを起動
ウィンドウマネージャを使わずに特定のアプリケーションだけを起動することも可能です。フルスクリーンモードで何か一つのアプリケーションを表示したいときに有用です。例:
~/.xinitrc
... exec chromium
あるいは、#xinitrc をオーバーライドする で説明されているように、コマンドプロンプトからバイナリを直接実行することもできます。
この方法を使うときはアプリケーションのウィンドウの配置を、アプリケーションの設定ファイルで設定しておく必要があります (可能な限り)。
ディスプレイマネージャ#ウィンドウマネージャを使わずにアプリケーションを起動 も見て下さい。
startx を使って出力をリダイレクトする
詳細は Xorg#セッションログのリダイレクト を見てください。