# Start X at Login (日本語)

関連記事

- systemd/ユーザー
- 仮想コンソールに自動ログイン
- ディスプレイマネージャ
- サイレントブート
- xinitrc

この記事では仮想端末にログインした後、自動的に X サーバーを起動させる方法を説明しています。startx コマンドを実行することでこれを行い、startx の挙動は xinitrc の記事に書かれているようにしてカスタマイズできます。例えば、起動するウィンドウマネージャを選ぶことができます。また、ディスプレイマネージャを使って自動的に X を起動し、グラフィカルなログイン画面を表示することも可能です。

## シェルプロファイル

Note: ログインセッションを管理するために、ここでは X を login に使われるのと同じ tty で実行します。

- Bash では、以下を `~/.bash_profile` の最後に加えます。ファイルが存在しない場合、`/etc/skel/.bash_profile` から空の設定をコピーしてください。
- Zsh では、以下を `~/.zprofile` に加えます。

    [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx

Note:

- 複数の仮想端末からグラフィカルログインをしたい場合は `-eq 1` を `-le 3` (for vt1 to vt3) などに置き換えることができます。
- X はログインと同じ tty 上で実行しなくてはなりません、logind セッションを維持するためです。これはデフォルトの `/etc/X11/xinit/xserverrc` の挙動です。

- Fish では、以下を `~/.config/fish/config.fish` の最後に加えます。

    # start X at login
    if status --is-login
        if test -z "$DISPLAY" -a $XDG_VTNR = 1
            exec startx
        end
    end

## Tips and tricks

- このメソッドは仮想コンソールの自動ログインと一緒に使うことができます。その時は、`~/.xinitrc` が読み込まれて pulseaudio が実行される前に dbus が起動するように自動ログインの systemd サービスに適切な依存を設定する必要があります (参照: BBS#155416)。
- X セッションが終了してもログイン状態を維持したい場合、`exec` を削除してください。
- X セッションの出力をファイルに書き込むには alias を使って下さい:

      alias startx='startx &> ~/.xlog'

Categories:

- X Server (日本語)
- Boot process (日本語)