「Xinit」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→設定: 飜訳) |
(→ログイン時に X を自動起動: 情報を更新) |
||
173行目: | 173行目: | ||
=== ログイン時に X を自動起動 === |
=== ログイン時に X を自動起動 === |
||
+ | ''startx'' が正しく [[xinit#設定|設定]] されていることを確認します。 |
||
− | {{Note|ログインセッションを維持するために、X はログインしたのと同じ tty で実行させる必要があります。}} |
||
− | [[ |
+ | [[コマンドラインシェル#ログインシェル|ログインシェル]] の初期化ファイル (例: [[Bash]] の場合は {{ic|~/.bash_profile}}, [[Zsh]] の場合は {{ic|~/.zprofile}}) に以下の内容を記述してください。 |
{{bc|1=<nowiki> |
{{bc|1=<nowiki> |
||
− | + | if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then |
|
+ | exec startx |
||
+ | fi |
||
</nowiki>}} |
</nowiki>}} |
||
+ | 複数の仮想端末でグラフィカルログインを使用したい場合は、{{ic|-eq}} の比較を {{ic|-le 3}} (vt1 から vt3 まで) のようなものに置き換えることが可能です。 |
||
− | {{Note| |
||
− | * 複数の VT でグラフィカルログインを使いたい場合、{{ic|-eq 1}} を {{ic|-le 3}} (vt1 から vt3) などで置き換えられます。 |
||
− | * logind セッションを維持するために、X はログインしたのと同じ tty で実行させる必要があります。これはデフォルトの {{ic|/etc/X11/xinit/xserverrc}} で管理されています。 |
||
− | * {{ic|xinit}} は {{ic|startx}} よりも高速ですが、{{ic|-nolisten tcp}} などの追加のパラメータを指定する必要があります。 |
||
− | * X セッションが終了してもログインしたままにしたい場合、{{ic|exec}} を削除してください。 |
||
− | }} |
||
+ | 仮想端末を検出する別の条件として、{{ic|<nowiki>"$(tty)" = "/dev/tty1"</nowiki>}} は {{ic|-le}} との比較が出来ません、 {{ic|<nowiki>"$(fgconsole 2>/dev/null || echo -1)" -eq 1</nowiki>}} は [[シリアルコンソール]] では機能しないことが挙げられます。 |
||
− | [[Fish#ログイン時に X を起動]]や [[Systemd/ユーザー#ディスプレイマネージャを使わずに Xorg に自動ログイン]]も参照。 |
||
+ | X セッションが終了してもログインしたままにしたい場合は、{{ic|exec}} を削除してください。 |
||
− | ==== 仮想端末に自動ログイン ==== |
||
+ | {{Warning|{{ic|exec}} がなければ、X を Kill することができます、これであなたのホームディレクトリのシェルとファイルへのアクセスを取得することができます。このことがあなたにとって重要かどうか、上記のことを実行する前に判断してください}} |
||
− | 上記の方法は[[仮想端末に自動ログイン]]と組み合わせることができます。その場合、自動ログインする systemd サービスに適切な依存関係を設定して、{{ic|~/.xinitrc}} が読み込まれて pulseaudio が起動する前に dbus が起動するようにさせる必要があります (参照: [https://bbs.archlinux.org/viewtopic.php?id=155416 BBS#155416])。 |
||
+ | |||
+ | [[Fish# ログイン時に X を起動|ログイン時に X を起動]] と [[systemd/ユーザー#ディスプレイマネージャを使わずに Xorg に自動ログイン]] も参照してください。 |
||
+ | |||
+ | {{Tip|この方法は [[getty#仮想端末に自動ログイン|仮想端末に自動ログイン]] と組み合わせることができます}} |
||
=== DE/WM の選択 === |
=== DE/WM の選択 === |
2022年1月16日 (日) 05:31時点における版
~/.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 をインストールしてください。
設定
xinit と startx はオプションでクライアントプログラムの引数を取ります。#Override xinitrc を参照してください。もし、引数を与えなければ、クライアントプロラムを起動するシェルスクリプトとして、~/.xinitrc
を探します。
xinitrc
.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
xserverrc
The xserverrc
file is a shell script responsible for starting up the X server. Both startx and xinit execute ~/.xserverrc
if it exists, startx will use /etc/X11/xinit/xserverrc
otherwise.
In order to maintain an authenticated session with logind
and to prevent bypassing the screen locker by switching terminals, Xorg has to be started on the same virtual terminal where the login occurred [3]. Therefore it is recommended to specify vt$XDG_VTNR
in the ~/.xserverrc
file:
~/.xserverrc
#!/bin/sh exec /usr/bin/Xorg -nolisten tcp "$@" vt$XDG_VTNR
See Xserver(1) for a list of all command line options.
Alternatively, if you wish to have the X display on a separate console from the one where the server is invoked, you can do so by using the X server wrapper provided by /usr/lib/systemd/systemd-multi-seat-x
. For convenience, xinit and startx can be set up to use this wrapper by modifying your ~/.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 を参照してください。