ディスプレイマネージャ
ディスプレイマネージャ、もしくはログインマネージャは、起動の最後に標準のシェルにかわって表示されるグラフィカルインターフェースです。ウィンドウマネージャとデスクトップ環境の数が多くあるように、様々な種類のディスプレイマネージャがあります。さらに、それぞれのマネージャをカスタマイズしたりテーマを選択したりすることが可能です。
目次
ディスプレイマネージャ一覧
コンソール
- CDM — 非常に小さい、しかし機能がととのったログインマネージャ、bash によって実装
- Console TDM — bash だけで書かれた xorg-xinit の拡張。
- nodm — 自動ログイン用の無駄のないディスプレイマネージャ。
グラフィカル
- Entrance — EFL ベースのディスプレイマネージャ、実験段階。
- LightDM — クロスデスクトップのディスプレイマネージャ、様々なツールキットを使って書かれたフロントエンドを使用できます。
- MDM — GDM 2 のフォーク。
- SDDM — QML ベースのディスプレイマネージャ (KDM の後継)。Plasma 5 や LXQt の推奨ディスプレイマネージャ。
- SLiM — 軽量でエレガントなグラフィカルログインを提供 (開発終了)。
- XDM — XDMCP をサポートした X ディスプレイマネージャ、ホストが選べる。
ディスプレイマネージャをロードする
グラフィカルログインを有効にするには、好きなディスプレイマネージャのデーモンを使って下さい (例: SDDM)。
# systemctl enable sddm
これだけで動くはずですが、動かない場合、手動で default.target
を設定するか、古いインストールを使います:
$ ls -l /etc/systemd/system/default.target
[...] /etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target
シンボリックリンクを削除すれば systemd は標準の default.target
(つまり graphical.target
) を使うようになります。
# rm /etc/systemd/system/default.target
SDDM を有効にした後、シンボリックリンク "display-manager.service" が /etc/systemd/system/
に設定されるはずです:
$ ls -l /etc/systemd/system/display-manager.service
[...] /etc/systemd/system/display-manager.service -> /usr/lib/systemd/system/sddm.service
systemd-logind を使う
ユーザーセッションの状態を確認するには loginctl
を使います。サスペンドや外部デバイスのマウントなどの全ての polkit アクションはそのまま動きます。
$ loginctl show-session $XDG_SESSION_ID
セッション設定
多くのディスプレイマネージャは /usr/share/xsessions/
ディレクトリから利用できるセッションを読み込みます。このディレクトリには DM/WM のための標準の デスクトップエントリファイル が入っています。
ディスプレイマネージャのセッションリストにエントリを追加・削除するには、/usr/share/xsessions/
にある .desktop ファイルを必要に応じて作成・削除してください。典型的な .desktop ファイルは以下のようになります:
[Desktop Entry] Encoding=UTF-8 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=XSession
セッションとして ~/.xinitrc を実行
xinit-xsessionAUR をインストールすることで .xinitrc
をセッションとして実行することができるようになります。
ウィンドウマネージャを使わずにアプリケーションを起動
ウィンドウ装飾やデスクトップ、ウィンドウ管理を省いて、アプリケーションを起動することもできます。例えば google-chromeAUR を起動するには、以下のように /usr/share/xsessions/
に web-browser.desktop
ファイルを作成します:
[Desktop Entry] Encoding=UTF-8 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
この場合、ログイン時に、Exec
で設定したアプリケーションがすぐに起動します。アプリケーションを閉じると、ログインマネージャに復帰します (DE/WM からログアウトしたときと同じ)。
この方法で起動することを、ほとんどのグラフィカルアプリケーションは想定していないため、上手く行くように設定が必要になるかもしれません (ウィンドウマネージャが存在しないため、ウィンドウの移動やサイズ変更はできず、ダイアログも使えません。アプリケーションの設定ファイルでウィンドウの配置を設定しておかなくてはならないでしょう)。
xinitrc#ウィンドウマネージャを使わずにアプリケーションを起動も参照。
Tips and tricks
自動起動
ほとんどのディスプレイマネージャは /etc/xprofile
, ~/.xprofile
, /etc/X11/xinit/xinitrc.d/
を実行します。詳しくは xprofile を見て下さい。
言語の設定
AccountsService を使用するディスプレイマネージャの場合、/var/lib/AccountsService/users/$USER
を編集することでディスプレイマネージャのロケールを設定できます:
[User] Language=your_locale
your_locale を ja_JP.UTF-8
といった値に置き換えて下さい。
ディスプレイマネージャを再起動することで変更が適用されます。
既知の問題
systemd との非互換性
影響がある DM: Entrance, MDM
いくつかのディスプレイマネージャは PAM セッションのプロセスを再利用するため systemd と完全な互換性がありません。そのため二回目のログアウトで様々な問題が発生します:
- NetworkManager アプレットが動かない。
- PulseAudio のボリュームが調整できない。
- 他のユーザーで GNOME にログインできない。