SDDM
関連記事
The Simple Desktop Display Manager (SDDM) はディスプレイマネージャです。KDE Plasma と LXQt デスクトップ環境の推奨ディスプレイマネージャです。
Wikipedia:ja:Simple Desktop Display Manager より:
- Simple Desktop Display Manager (SDDM) は、X Window SystemとWayland向けのディスプレイマネージャである。SDDMはC++11で書かれており、QMLによるテーマをサポートしている。
KDE の開発チームは、SDDM プロジェクトを Plasma Desktop プロジェクトに組み込むという提案を受け入れました。SDDM は Plasma の正式な一部となり、SDDM のアップデートは Plasma Desktop のアップデートと共にリリースされる可能性があります。
目次
- 1 インストール
- 2 設定
- 3 トラブルシューティング
- 3.1 greeter が表示されず、カーソルのみの黒画面
- 3.2 SDDM が greeter を表示するのに時間がかかる
- 3.3 ログイン後にフリーズする
- 3.4 SDDM が tty7 ではなく tty1 で起動する
- 3.5 1つ以上のユーザが greeter に表示されない
- 3.6 ユーザのアバターが greeter に表示されない
- 3.7 SDDM が US キーボードのレイアウトしかロードしない
- 3.8 画面解像度が低すぎる
- 3.9 ホームディレクトリが autofs の場合にロード時間が長い
- 3.10 X authority (別名 MIT-MAGIC-COOKIE) ファイル
- 3.11 マルチモニタの環境で greeter が重複する
- 3.12 予期しないディスプレイにログイン画面が表示される
- 3.13 NVIDIA グラフィックカードでログアウト後に黒画面
- 3.14 パスワードの最初の試行に失敗すると、その後の試行で数回キーを押すと文字列が勝手に消されてしまう
- 3.15 ハイブリッドグラフィックスで Wayland を使用すると画面の同期がずれる
インストール
sddm パッケージをインストールしてください。任意で KConfig Module のための sddm-kcm もインストールしてください。
ディスプレイマネージャ#ディスプレイマネージャをロードするに従って、ブート時に SDDM を起動させてください。
設定
SDDM のデフォルト設定ファイルは /usr/lib/sddm/sddm.conf.d/default.conf
に存在します。設定を変更するときは /etc/sddm.conf.d/
に設定ファイルを作成してください。利用可能なオプションは sddm.conf(5) を見て下さい。
(plasma グループに含まれている) sddm-kcm パッケージをインストールすることで Plasma のシステム設定から GUI で SDDM を設定できます。Qt ベースの設定エディタ sddm-conf-gitAUR も存在します。
Arch Linux は systemd を使用していて、さらに SDDM はデフォルトで systemd-logind
をセッション管理に使用するので、特に設定せずに機能するはずです。
自動ログイン
SDDM は設定ファイルによって自動ログインをサポートしています、例:
/etc/sddm.conf.d/autologin.conf
[Autologin] User=john Session=plasma
上の設定だと、システムが起動した時に john
ユーザーで KDE Plasma セッションが起動します。利用できるセッションのタイプについては、X 用は /usr/share/xsessions/
で、Wayland 用は /usr/share/wayland-sessions/
でわかります。
KDE Plasma に自動ログインすると同時にセッションをロックするオプションは利用できません。[1]
回避策として、Plasma のスクリーンセーバをアクティブ化するスクリプトを自動起動に追加することができます:
#!/bin/sh /usr/bin/dbus-send --session --type=method_call --dest=org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.Lock &
パスワードレスログイン
パスワード無しで一部のアカウントにログインできるように SDDM を設定することができます。ログインするアカウントを選ぶ必要があるという点で自動ログインとは異なり、また、(SSH 経由でログインしてきたリモートユーザなどを除く) インタラクティブユーザのみにログインを許可するという点で、アカウントのパスワードを空白に設定するのとも異なります。
SDDM は PAM 経由で動作するので、PAM で SDDM に関連する設定を行う必要があります:
/etc/pam.d/sddm
#%PAM-1.0 auth sufficient pam_succeed_if.so user ingroup nopasswdlogin auth include system-login ...
パスワード無しで KDE Plasma のロック画面を解除できるようにするために、/etc/pam.d/kde
の先頭にも先と同じ行を追加してください:
/etc/pam.d/kde
#%PAM-1.0 auth sufficient pam_succeed_if.so user ingroup nopasswdlogin auth include system-login ...
次に、パスワードを入力せずにインタラクティブにログインできるようにするために、あなたのユーザーを nopasswdlogin
グループに追加する必要があります:
# groupadd -r nopasswdlogin # gpasswd -a username nopasswdlogin
ログイン時に KDE Wallet のロックを解除
KDE Wallet#ログイン時に KDE ウォレットを自動的にアンロック を見てください。
テーマ設定
[Theme]
セクションでテーマの設定を変更できます。Plasma の KDE システム設定を使っている場合、テーマのプレビューを表示できます。
デフォルトの Plasma テーマを使うには breeze
に設定してください。
archlinux-themes-sddmAUR など、AUR から入手できるテーマもあります。
現在のテーマ
現在のテーマは Current
で設定します。例: Current=archlinux-simplyblack
。
テーマの編集
SDDM のデフォルトのテーマディレクトリは /usr/share/sddm/themes/
です。作成したカスタムテーマはこのディレクトリのサブディレクトリに追加することができます。サブディレクトリの名前はテーマの名前と同じである必要があります。インストールされているファイルを参考に自分自身のテーマを作成してみてください。
テーマをカスタマイズ
設定ファイル theme.conf
の設定をオーバーライドするには、カスタムの theme.conf.user
ファイルを同じディレクトリに作成してください。例えば、テーマの背景を変更するには:
/usr/share/sddm/themes/name/theme.conf.user
[General] background=/path/to/background.png
テーマのテスト (プレビュー)
必要であれば SDDM のテーマをプレビューすることができます。これは、テーマを編集した際などにテーマがどのような見た目になるか分からない場合や、ログアウトせずにテーマを確認したい場合などに便利です。以下のようにコマンドを実行してください:
$ sddm-greeter-qt6 --test-mode --theme /usr/share/sddm/themes/breeze
接続されているモニタすべてに新しいウィンドウが開き、テーマのプレビューが表示されます。
マウスカーソル
マウスカーソルのテーマを設定したい場合は、CursorTheme
を使用したいカーソルテーマに設定してください。
Plasma で使用できるマウスカーソルのテーマの名前は、breeze_cursors
、Breeze_Snow
、そして breeze-dark
です。
ユーザアイコン (アバター)
SDDM は、各ユーザの ~/.face.icon
か、あるいは SDDM 設定ファイル内の FacesDir
で指定された全ユーザに共通の場所から PNG イメージのユーザアイコン (別名: "アバター") を読み込みます。設定は /etc/sddm.conf
に直接、あるいは /etc/sddm.conf.d/avatar.conf
のように /etc/sddm.conf.d/
下のファイルとして保存することができます (後者が推奨されます)。
FacesDir
のオプションを使用するには、設定ファイルの FacesDir
キーで指定された場所に各ユーザに対して ユーザ名.face.icon
という名前で PNG イメージファイルを配置してください。デフォルトの FacesDir
は /usr/share/sddm/faces/
です。ニーズに応じてデフォルトの FacesDir
を変更することができます。例えば以下のように:
/etc/sddm.conf.d/avatar.conf
[Theme] FacesDir=/var/lib/AccountsService/icons/
もう一つの方法は、ホームディレクトリのルートに .face.icon
という名前の PNG ファイルを置くことです。この場合、SDDM の設定ファイルを変更する必要はありません。ただし、sddm
ユーザがユーザアイコンの PNG イメージファイルを読むことができるようにしておく必要があります。
適切なパーミッションを設定するには、以下を実行してください:
$ setfacl -m u:sddm:x ~/ $ setfacl -m u:sddm:r ~/.face.icon
以下を実行することで、パーミッションを確認することができます:
$ getfacl ~/ $ getfacl ~/.face.icon
SDDM README: No User Icon を参照してください。
Numlock
Numlock を強制的に有効にしたい場合、[General]
セクションに Numlock=on
と設定してください。
SDDM が Wayland で動作している場合、numlock の設定は現在反映されません。Numlock を有効化するには KWin の設定を変更する必要があるかもしれません。この issue を参照してください。
ディスプレイの回転
Xrandr#設定 を見てください。
DPI の設定
ディスプレイマネージャのレベルでディスプレイの PPI 設定を適切に設定できると便利です。[2] ServerArguments
の末尾にパラメータ -dpi your_dpi
を追加する必要があります。例:
/etc/sddm.conf.d/dpi.conf
[X11] ServerArguments=-nolisten tcp -dpi 94
HiDPI の有効化
以下のファイルを作成してください:
/etc/sddm.conf.d/hidpi.conf
[Wayland] EnableHiDPI=true [X11] EnableHiDPI=true
Wayland を使用する場合、HiDPI スケーリングは、使用する greeter に依存します。[3] 例えば、Breeze などの Qt ベースの greeter を使用する場合、以下の設定を追加してください:
[General] GreeterEnvironment=QT_SCREEN_SCALE_FACTORS=2,QT_FONT_DPI=192
仮想キーボードを有効化する
qt5-virtualkeyboard をインストールしてください。
以下のファイルを作成してください:
/etc/sddm.conf.d/virtualkbd.conf
[General] InputMethod=qtvirtualkeyboard
これで、SDDM は仮想キーボードを開くボタンをログインスクリーンの左下の角に表示するようになります。
指紋リーダーを使う
SDDM では fprint を利用した指紋認証が可能です。fprint をインストールして指紋署名を登録したのち、/etc/pam.d/sddm
の先頭に以下の行を加えてください:
/etc/pam.d/sddm
auth sufficient pam_fprintd.so
パスワードか指紋認証のいずれか片方を使うには、代わりに以下の行を /etc/pam.d/sddm
の先頭に加えてください:
/etc/pam.d/sddm
auth [success=1 new_authtok_reqd=1 default=ignore] pam_unix.so try_first_pass likeauth nullok auth sufficient pam_fprintd.so
KWallet は指紋リーダーを使ってロックを解除できないことに注意してください (KDE Wallet#ログイン時に KDE ウォレットを自動的にアンロック をご覧ください)。しかし、1行目の記述によりパスワードログインが自動的に KWallet を解除することが保証されます。
パスワード欄を空にして Enter
キーを押すと、指紋認証が開始されます。
Rootless
従来、X11 ディスプレイサーバーはデフォルトで root 権限で実行されてきました。この rootful モードでは、X11 はシステムリソースに無制限にアクセスできます (ハードウェアへの直接的なアクセスと管理が一般的であった環境では rootful モードが動作に不可欠だったのです)。しかし、最近のコンピューティング環境ではセキュリティが重要視されるようになり、rootless モードへ移行する作業が行われてきました。また、これは Wayland がデフォルトで rootless モードで動作する理由でもあります。
非特権 X11 (及び Wayland) セッションは sddm 0.20.0 からサポートされています。[4]
Rootless モードを有効化するには、/etc/sddm.conf.d/
に新しいファイルを適当な名前で作成し、以下を追加してください (必要に応じて x11-user
は wayland
に置き換えてください):
/etc/sddm.conf.d/rootless-x11.conf
[General] DisplayServer=x11-user
Rootless モードで動作しているかどうかを確認するには、コンポジタのプロセス (kwin_wayland
) など) がどのユーザーによって所有されているかを調べてください。
Wayland
KDE Plasma / KWin
以下の記述を設定ファイルに追加すれば、KWin が Wayland コンポジタとして使用されるようになり、wlr_layer_shell Wayland プロトコル拡張も有効化されます。この layer shell は layer-shell-qt と layer-shell-qt5 に含まれています。後者のパッケージは、SDDM で Qt5 が使用されなくなるまで必要であり、これがないと黒画面になります。[6]
/etc/sddm.conf.d/10-wayland.conf
[General] DisplayServer=wayland GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell [Wayland] CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1
仮想キーボード
仮想キーボードのサポートを有効化するには (例えば、qt5-virtualkeyboard や maliit-keyboard を使う場合)、以下のように --inputmethod
フラグに適切なキーボードを指定して、kwin_wayland
コマンドに追加してください。InputMethod
オプションは General
セクションで指定しないでください。仮想キーボードが表示されなくなってしまいます。
/etc/sddm.conf.d/10-wayland.conf
[Wayland] CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1 --inputmethod maliit-keyboard
Plasma のディスプレイ設定に合わせる
Plasma Wayland セッションのディスプレイの設定 (例:モニターレイアウト、解像度など) に対する如何なる変更も SDDM に対しては適用されません。設定を適用させるには、Plasma の KDE システム設定 を開き、起動と終了 > ログイン画面 (SDDM) へ行き、"Plasma 設定を適用..." をクリックしてください。この操作を行うためには許可が必要です。
同じことは、以下のようにして手動で行うこともできます:
SDDM でディスプレイを適切に管理するには (スケーリング、モニタの解像度、リフレッシュレートなど)、ホームディレクトリから適切な設定ファイルを SDDM の設定ディレクトリにコピー (かつ必要であれば変更) することができます:
# cp ~/.config/kwinoutputconfig.json /var/lib/sddm/.config/ # chown sddm:sddm /var/lib/sddm/.config/kwinoutputconfig.json
SDDM で適切な入力処理 (タップでクリックやタッチスクリーンのマッピングなど) を可能にするには、適切な設定ファイルをホームディレクトリから SDDM の設定ディレクトリにコピーしてください:
# cp ~/.config/kcminputrc /var/lib/sddm/.config/ # chown sddm:sddm /var/lib/sddm/.config/kcminputrc
トラブルシューティング
greeter が表示されず、カーソルのみの黒画面
利用可能なディスクの空き領域が存在しない場合、greeter はクラッシュします。df -h
でディスクの空き領域を確認してください。
ディスクの空き領域の問題でないとしたら、バグのせいかもしれません。他の TTY に切り替えて、loginctl unlock-session session_id
を実行するか、SDDM を再起動してみてください。
SDDM が greeter を表示するのに時間がかかる
エントロピープールが小さいと SDDM のロードに長い時間がかかる可能性があります (バグレポート)。乱数生成 の記事にエントロピープールを大きくする方法があります。
ログイン後にフリーズする
~/.Xauthority
を削除し、再起動せずに再ログインしてみてください。ログインせずに再起動すると、このファイルが再び作成されてしまい、問題が解決されません。
SDDM が tty7 ではなく tty1 で起動する
SDDM は systemd の慣習に従って tty1 に最初のグラフィカルセッションを起動します。
設定ファイルには MinimumVT
オプションがまだ存在しますが、SDDM 0.20 からこのオプションは無視されるようになったことに注意してください: sddm.conf(5) § MinimumVT=。
1つ以上のユーザが greeter に表示されない
デフォルトでは、SDDM は 1000 から 60513 の範囲内の UID を持つユーザのみを表示するように設定されています。表示したいユーザの UID がこの範囲の外である場合、この範囲を変更しなければなりません。
例えば、501 の UID を持つユーザの場合、MinimumUid
を設定し、システムユーザによって使用されるシェルを持つユーザは隠してください:
/etc/sddm.conf.d/uid.conf
[Users] HideShells=/usr/bin/nologin,/sbin/nologin,/bin/false,/usr/bin/git-shell MinimumUid=500
高い UID を持つユーザの場合は MaximumUid
を適切な値に変更してください。
ユーザのアバターが greeter に表示されない
ユーザの数が DisableAvatarsThreshold
を超過した場合や、アバターが EnableAvatars
パラメータによって有効化されていない場合、ユーザのアバターは表示されません。これを回避するには、以下の記述を sddm の設定に追加してください:
/etc/sddm.conf.d/avatars.conf
[Theme] EnableAvatars=true # enable avatars DisableAvatarsThreshold=7 # set the threshold for the number of users. Avatars are not shown if this threshold is exceeded.
SDDM が US キーボードのレイアウトしかロードしない
SDDM は /etc/X11/xorg.conf.d/00-keyboard.conf
で指定されたキーボードレイアウトをロードします。localectl set-x11-keymap
コマンドを使うことでこの設定ファイルを生成することが可能です。詳しくは Xorg でのキーボード設定 を見て下さい。
SDDM でのみ効果を持ち、後続のセッションには適用されないキーボードレイアウトを設定するもう一つの方法は、SDDM のスタートアップスクリプト (/usr/share/sddm/scripts/Xsetup
にあり) で setxkbmap コマンドを実行することです。例は Xorg でのキーボード設定#setxkbmap を使う を参照してください。
また、SDDM は間違ってレイアウトを US キーボードとして表示することもありますが、パスワードを打ち始めると即座に正しいレイアウトに変わります [7]。これは SDDM のバグではなく、X のバグのようです。[8]
画面解像度が低すぎる
EDID の情報が壊れているディスプレイで HiDPI を使用した場合に発生する可能性のある問題です [9]。HiDPI を有効化している場合、HiDPI を無効にしてみてください。
無効にしても問題が解決しない場合、Xorg の設定ファイルでスクリーンのサイズを設定してみることができます:
/etc/X11/xorg.conf.d/90-monitor.conf
Section "Monitor" Identifier "<default monitor>" DisplaySize 345 194 # in millimeters EndSection
ホームディレクトリが autofs の場合にロード時間が長い
SDDM はデフォルトでユーザーのアバターとして ~/.face.icon
ファイルを使います。ホームディレクトリが autofs の場合 (例えば dm-crypt を使っている場合)、autofs がディレクトリをマウントできないと報告するまで SDDM は60秒間待機します。
以下の設定ファイルを作成することでアバターを無効化することができます:
/etc/sddm.conf.d/avatar.conf
[Theme] EnableAvatars=false
X authority (別名 MIT-MAGIC-COOKIE) ファイル
[10] で詳細が言及されているように、SDDM は 認証ファイルのためにランダムな新しい UUID を使います。そのため、そのファイルを見つけるためにスクリプトを使うことができます:
# find /var/run/sddm/ -type f
ログイン中のユーザーがいない時に x11vnc を開始する必要がある場合、このスクリプトが必要である場合があります。例えば:
# x11vnc -display :0 -auth "$( find /var/run/sddm/ -type f )"
マルチモニタの環境で greeter が重複する
複数スクリーンの環境で X モニターのレイアウトが正しく設定されずに greeter が重複することがあります。この問題を解決するためには、以下のスクリプトを追加して、sddm greeter のレイアウトを左から右に並べてください:
/usr/share/sddm/scripts/Xsetup
for next in $(xrandr --listmonitors | grep -E " *[0-9]+:.*" | cut -d" " -f6); do [ -z "$current" ] && current=$next && continue xrandr --output $current --auto --output $next --auto --right-of $current current=$next done
予期しないディスプレイにログイン画面が表示される
複数のディスプレイが接続されている場合に、SDDM のログインセッションがプライマリディスプレイではないディスプレイに表示されることがあります。サブディスプレイが回転されているがプライマリディスプレイはそうなっていない場合、この問題は腹立たしいでしょう。この問題に対するシンプルな修正法は、xrandr を使って、ログインセッションが Xsetup スクリプトを使用する前にディスプレイを設定することです。例えば、以下では、xrandr は、2つのディスプレイが接続されており、2つ目のディスプレイ (DP-2) はプライマリディスプレイ (DP-4) の左にあると報告しています。
# xrandr | grep -w connected DP-2 connected 2160x3840+0+0 left (normal left inverted right x axis y axis) 597mm x 336mm DP-4 connected primary 3840x2160+2160+0 (normal left inverted right x axis y axis) 697mm x 392mm
以下の Xsetup は、上記のセットアップをログインウィンドウのために再作成します:
/usr/share/sddm/scripts/Xsetup
#!/bin/sh # Xsetup - run as root before the login dialog appears xrandr --output DP-4 --auto --primary xrandr --output DP-2 --left-of DP-4 --rotate left --noprimary
NVIDIA グラフィックカードでログアウト後に黒画面
ユーザからログアウトした後に、完全な黒画面や、カーソル/ディスプレイデバイスのロゴだけの黒画面が発生する場合があります。これは、sddm.service
が NVIDIA ドライバよりも早く起動してしまうため、発生します。KMS の早期ロードを検討してください。
パスワードの最初の試行に失敗すると、その後の試行で数回キーを押すと文字列が勝手に消されてしまう
デフォルト以外の別のテーマを使用してください。
ハイブリッドグラフィックスで Wayland を使用すると画面の同期がずれる
SDDM で kwin_wayland
コンポジタを使用すると、ブート時に画面の同期がずれる場合があります。mesa-amber
ドライバを使用していて、X11 に戻すと正しく動作する場合、mesa-amber
ドライバを mesa
に置き換えると Wayland が正しく動作する可能性があります。この問題に関する詳細は KDE Bug 483804 で見られます。