ディスプレイマネージャ
関連記事
ディスプレイマネージャ、もしくはログインマネージャは、起動の最後に標準のシェルにかわって表示されるグラフィカルインターフェースです。ウィンドウマネージャとデスクトップ環境の数が多くあるように、様々な種類のディスプレイマネージャがあります。さらに、それぞれのマネージャをカスタマイズしたりテーマを選択したりすることが可能です。
目次
ディスプレイマネージャ一覧
コンソール
- Console TDM — Bash だけで書かれた xorg-xinit の拡張。
- nodm — 自動ログイン用のディスプレイマネージャ(2017年以降はメンテナンスされていません)。
- Ly — Linux および BSD 用の TUI(ncurse みたいな)ディスプレイマネージャー。
- tbsm — Bash セッションまたはアプリケーションランチャー。X および Wayland セッションをサポートします。
- emptty — X と Wayland をサポートする TTY上のシンプルな CLI ディスプレイマネージャー。
グラフィカル
- Entrance — EFL ベースのディスプレイマネージャ、実験段階。
- LightDM — クロスデスクトップのディスプレイマネージャ、様々なツールキットを使って書かれたフロントエンドを使用できます。
- SDDM — QML ベースのディスプレイマネージャ (KDM の後継)。Plasma 5 や LXQt の推奨ディスプレイマネージャ。
- XDM — XDMCP をサポートした X ディスプレイマネージャ、ホストが選べる。
ログインデーモン
- Greetd — コンソールとグラフィカルグリーターの両方をサポートする最小限の柔軟で不可知論的なログインデーモン。
ディスプレイマネージャをロードする
グラフィカルログインを有効にするには、適切なシステムサービスを有効にしてください。例えば、SDDMの場合、sddm.service
を有効にします。
これだけで動くはずですが、動かない場合、カスタム default.target
シンボリックリンクをリセットして、デフォルトの graphical.target
を指すようにする必要があるかもいれません。systemd#Change default target to boot into を参照してください。
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 のための標準の デスクトップエントリファイル が入っています。
ディスプレイマネージャのセッションリストにエントリを追加・削除するには、/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#ウィンドウマネージャを使わずにアプリケーションを起動も参照。
ヒントとテクニック
自動起動
ほとんどのディスプレイマネージャは /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
といった値に置き換えて下さい。
または、D-Bus を使用してこれを実現できます。
busctl call org.freedesktop.Accounts /org/freedesktop/Accounts/User$UID org.freedesktop.Accounts.User SetLanguage s your_locale
ディスプレイマネージャを再起動することで変更が適用されます。