ディスプレイマネージャ
関連記事
ディスプレイマネージャ、もしくはログインマネージャは、起動の最後に標準のシェルにかわって表示されるグラフィカルユーザーインターフェイスです。ウィンドウマネージャとデスクトップ環境の数が多くあるように、様々な種類のディスプレイマネージャがあります。さらに、それぞれのマネージャをカスタマイズしたりテーマを選択したりすることが可能です。
目次
ディスプレイマネージャ一覧
コンソール
- Console TDM — Bash だけで書かれた xinit の拡張。
- nodm — 自動ログイン用のディスプレイマネージャ。2017 以降、開発中止。
- Ly — Linux と BSD のための TUI (ncurses ライクな) ディスプレイマネージャ。X と Wayland のセッションをサポートします。
- tbsm — Bash セッションまたはアプリケーションランチャー。X と Wayland のセッションをサポートします。
- emptty — X と Wayland をサポートする TTY 上のシンプルな CLI ディスプレイマネージャー。
- loginx — getty/login/xinit の組み合わせ。ユーザフレンドリーな curses ui。
- Lemurs — Rust で書かれた、Linux 用 TUI ディスプレイマネージャ。X、Wayland、TTY シェルのセッションをサポートします。
グラフィカル
- Entrance — Enlightenment のディスプレイマネージャ。非常に実験的で、適切な systemd サポートがありません。
- LightDM — クロスデスクトップのディスプレイマネージャ、様々なツールキットを使って書かれたフロントエンドを使用できます。
- SLiM — 軽量でエレガントなグラフィカルログインのソリューション。2013 年以降、開発中止。systemd とは完全な互換性がありません。
- XDM — XDMCP をサポートした X ディスプレイマネージャ、ホストが選べる。
ログインデーモン
- greetd — コンソールの greeter とグラフィカルな greeter の両方をサポートするログインデーモン。
ディスプレイマネージャをロードする
グラフィカルログインを有効にするには、適切な systemd サービスを有効化してください。例えば、SDDMの場合、sddm.service
を有効にします。
これだけで動くはずですが、動かない場合、カスタム default.target
シンボリックリンクをリセットして、デフォルトの graphical.target
を指すようにする必要があるかもいれません。systemd#起動するデフォルトターゲットを変更 を参照してください。
SDDM を有効にすると、シンボリックリンク display-manager.service
が /etc/systemd/system/
で設定されているはずです。古いシンボリックリンクを上書きするために、--force
を使う必要があるかもしれません。
$ file /etc/systemd/system/display-manager.service
/etc/systemd/system/display-manager.service: symbolic link to /usr/lib/systemd/system/sddm.service
systemd-logind を使う
ユーザーセッションの状態を確認するには loginctl を使います。サスペンドや外部デバイスのマウントなどの全ての polkit アクションはそのまま動きます。
$ loginctl show-session $XDG_SESSION_ID
セッション設定
多くのディスプレイマネージャは /usr/share/xsessions/
ディレクトリから利用できるセッションを読み込みます。このディレクトリには DM/WM のための標準の デスクトップエントリファイル が入っています。一部のディスプレイマネージャは、Wayland 固有のセッションをリストアップするために、別のディレクトリ /usr/share/wayland-sessions/
を使用します。
ディスプレイマネージャのセッションリストにエントリを追加・削除するには、/usr/share/xsessions/
にある .desktop ファイルを必要に応じて作成・削除してください。典型的な .desktop ファイルは以下のようになります:
[Desktop Entry] Name=Openbox Comment=Log in using the Openbox window manager (without a session manager) Exec=/usr/bin/openbox-session TryExec=/usr/bin/openbox-session Icon=openbox.png Type=Application
セッションとして ~/.xinitrc を実行
xinit-xsessionAUR をインストールすることで xinitrc をセッションとして実行することができるようになります。ディスプレイマネージャに対して xinitrc
をセッションとして設定してください。この時、~/.xinitrc
が実行可能であることを確認してください。
ウィンドウマネージャを使わずにアプリケーションを起動
ウィンドウ装飾やデスクトップ、ウィンドウ管理を省いて、アプリケーションを起動することもできます。例えば google-chromeAUR を起動するには、以下のように /usr/share/xsessions/
に web-browser.desktop
ファイルを作成します:
[Desktop Entry] Name=Web Browser Comment=Use a web browser as your session Exec=/usr/bin/google-chrome --auto-launch-at-startup TryExec=/usr/bin/google-chrome --auto-launch-at-startup Icon=google-chrome Type=Application
この場合、ログイン時に、Exec
で設定したアプリケーションがすぐに起動します。アプリケーションを閉じると、ログインマネージャに復帰します (DE/WM からログアウトしたときと同じ)。
この方法で起動することを、ほとんどのグラフィカルアプリケーションは想定していないため、上手く行くように設定が必要になるかもしれません (ウィンドウマネージャが存在しないため、ウィンドウの移動やサイズ変更はできず、ダイアログも使えません。アプリケーションの設定ファイルでウィンドウの配置を設定しておかなくてはならないでしょう)。
xinitrc#ウィンドウマネージャを使わずにアプリケーションを起動 も参照。
ヒントとテクニック
自動起動
ほとんどのディスプレイマネージャは /etc/xprofile
, ~/.xprofile
, /etc/X11/xinit/xinitrc.d/
を実行します。詳しくは xprofile を見て下さい。
ユーザセッションで使う言語を設定する
AccountsService を使用するディスプレイマネージャの場合、/var/lib/AccountsService/users/$USER
を編集することでユーザセッションのロケールを設定できます:
/var/lib/AccountsService/users/$USER
[User] Language=your_locale
your_locale を ja_JP.UTF-8
といった値に置き換えて下さい。
または、D-Bus を使用してこれを実現できます:
busctl call org.freedesktop.Accounts /org/freedesktop/Accounts/User$UID org.freedesktop.Accounts.User SetLanguage s your_locale
ログアウトして再びログインし直せば、変更が適用されます。