SDDM

提供: ArchWiki
2023年7月29日 (土) 23:44時点におけるAshMyzk (トーク | 投稿記録)による版 (同期)
ナビゲーションに移動 検索に移動

関連記事

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 のアップデートと共にリリースされる可能性があります。

ノート: SDDM バージョン 0.20 の時点で、Wayland セッションは一覧に表示され、SDDM から起動することは可能ですが、SDDM greeter 自体はデフォルトでは依然として X11 モードで動作します。しかし、実験的な Wayland greeter を有効化することが可能です

目次

インストール

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]

回避策として、KDE のスクリーンセーバをアクティブ化するスクリプトを自動起動に追加することができます:

#!/bin/sh
/usr/bin/dbus-send --session --type=method_call --dest=org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.Lock &

パスワードレスログイン

パスワード無しで一部のアカウントにログインできるように SDDM を設定することができます。ログインするアカウントを選ぶ必要があるという点で自動ログインとは異なり、また、(SSH 経由でログインしてきたリモートユーザなどを除く) インタラクティブユーザのみにログインを許可するという点で、アカウントのパスワードを空白に設定するのとも異なります。

パスワードレスログインをセットアップするために、LightDM の場合の手順に従うことができます。ただし、/etc/pam.d/lightdm ではなく /etc/pam.d/sddm を変更する必要があります。

ログイン時に 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 --test-mode --theme /usr/share/sddm/themes/breeze

接続されているモニタすべてに新しいウィンドウが開き、テーマのプレビューが表示されます。

ノート: これはプレビューだけです。このモードでは、シャットダウンやサスペンド、ログインなどの一部のアクションは効果がありません。

マウスカーソル

マウスカーソルのテーマを設定したい場合は、CursorTheme を使用したいカーソルテーマに設定してください。

Plasma で使用できるマウスカーソルのテーマの名前は、breeze_cursorsBreeze_Snow、そして breeze-dark です。

ユーザアイコン (アバター)

この記事またはセクションは情報が古くなっています。
理由: 設定をせずとも SDDM は /var/lib/AccountsService/icons/ 内のアイコンを検出します。そして、Plasma はもはや $HOME/ 内にファイル (以下で述べているアイコンファイルや、そのファイルへのシンボリックリンク) を作成しません。 (Discuss)

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 イメージファイルを読むことができるようにしておく必要があります。

ノート: 多くの KDE バージョンで、ユーザのアイコンイメージファイルは ~/.face であり、~/.face.icon はそのファイルへのシンボリックリンクとなっています。ユーザのアイコンイメージがシンボリックリンクである場合、シンボリックリンク先のファイルに適切なファイルパーミッションを設定する必要があります。

適切なパーミッションを設定するには、以下を実行してください:

$ 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 と設定してください。

ディスプレイの回転

Xrandr#設定 を見てください。

DPI の設定

ディスプレイマネージャのレベルでディスプレイの PPI 設定を適切に設定できると便利です。[2] ServerArguments の末尾にパラメータ -dpi your_dpi を追加する必要があります。例:

/etc/sddm.conf.d/dpi.conf
[X11]
ServerArguments=-nolisten tcp -dpi 94

HiDPI の有効化

ノート: SDDM バージョン 0.20.0 から、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 を解除することが保証されます。

ヒント: 以下を /etc/pam.d/kde の先頭に追加することで、これを KDE のロックスクリーンでも動作させることができます:
/etc/pam.d/kde
auth 			sufficient  	pam_unix.so try_first_pass likeauth nullok
auth 			sufficient  	pam_fprintd.so

1行目が先の /etc/pam.d/sddm の対応する設定と異なることがわかります。KDE のロックスクリーンは KWallet の pam モジュールを実行する必要がないからです。

パスワード欄を空にして Enter キーを押すと、指紋認証が開始されます。

Rootless Xorg

sddm 0.20.0 から、SDDM は X11 で rootless に動作させることができます。

/etc/sddm.conf.d/ ディレクトリに新しい設定ファイルを作成し、/etc/sddm.conf.d/rootless-x11.conf のような名前を付けてください。

以下をそのファイルに追加してください:

/etc/sddm.conf.d/rootless-x11.conf
[General]
DisplayServer=x11-user

Wayland で動かす

sddm 0.20.0 から、SDDM は Wayland で rootless に動作させることができます。

新しい設定ファイルを /etc/sddm.conf.d/ ディレクトリに作成し、名前は /etc/sddm.conf.d/10-wayland.conf のようなものにしてください。

そして、その新しいファイルに以下の内容を追加してください:

/etc/sddm.conf.d/10-wayland.conf
[General]
DisplayServer=wayland

デフォルトでは、weston が Wayland コンポジタとして使用されます。weston を使用する場合はインストールする必要があります。他の Wayland コンポジタ (KDE の KWin コンポジタなど) を使用するには、プログラムとその引数を ([Wayland] セクション内の) CompositorCommand へのパラメータとして追加してください。

詳細は sddm.conf(5) を参照してください。

KDE / KWin

警告: SDDM は KWin によって個別のウインドウとして扱われるので、ログインすることによりそのウインドウを閉じることになります。ゆえに、ログアウトユーザの切り替えは望ましくない動作を引き起こします。
ヒント: KDE Wayland のディスプレイの設定 (例:モニターレイアウト、解像度など) に対する如何なる変更も SDDM に対しては適用されません。設定を適用させるには、KDE の KDE システム設定 を開き、起動と終了 > ログイン画面 (SDDM) へ行き、"Plasma 設定を適用..." をクリックしてください。この操作を行うためには許可が必要です。

上で追加した設定ファイル (例: /etc/sddm.conf.d/10-wayland.conf) の General セクションに以下を追加してください:

/etc/sddm.conf.d/10-wayland.conf
GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell

以下を CompositorCommand へのパラメータとして、先に作成した SDDM の設定ファイル (例: /etc/sddm.conf.d/10-wayland.conf) に追加してください:

/etc/sddm.conf.d/10-wayland.conf
[Wayland]
CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts

仮想キーボードのサポートを有効化するためには (例えば、qt5-virtualkeyboardmaliit-keyboard を使う場合)、以下のように --inputmethod フラグに適切なキーボードを指定して、kwin_wayland コマンドに追加してください (必要に応じて、maliit-keyboardqtvirtualkeyboard に置き換えてください):

/etc/sddm.conf.d/10-wayland.conf
[Wayland]
CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --inputmethod maliit-keyboard
警告: デフォルトでは、KWin はグローバルなショートカットキーを有効化した状態で起動します。デフォルトのキーバインディングを使用してログインプロンプトをバイパスできるようになるため、この挙動はログインスクリーンにおいては危険です。--no-global-shortcuts フラグを使用することにより、これを防止しているのです。[4]

トラブルシューティング

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 に表示されない

警告: 一般に、1000 未満あるいは 60513 より大きい UID に設定されているユーザはディスプレイマネージャに公開すべきではありません。

デフォルトでは、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 キーボードとして表示することもありますが、パスワードを打ち始めると即座に正しいレイアウトに変わります [5]。これは SDDM のバグではなく、X のバグのようです。[6]

画面解像度が低すぎる

EDID の情報が壊れているディスプレイで HiDPI を使用した場合に発生する可能性のある問題です [7]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) ファイル

[8] で詳細が言及されているように、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

KDE Plasma Wayland がシャットダウンと再起動の時にハングする

この記事またはセクションは情報が古くなっています。
理由: Wayland サポートのある sddm 0.20 が公式リポジトリにリリースされたため、これはもはや関連する問題ではありません。 (Discuss)

KDE Plasma Wayland セッションにおいて、シャットダウンや再起動のコマンドが発行されても SDDM (リリース 0.19.0-9) が停止しないケースがあります。その結果、systemd が SDDM の停止を待つ間、シャットダウンのプロセスが止まってしまいます。このバグはすでに修正されていますが、新しい SDDM のバージョンがリリースされるまで、いくつかの回避策を試すことができます:

  • sddm-gitAUR をインストールする。問題を修正するコミットが含まれています。
  • シャットダウンのプロセスが止まっているときに Ctrl+Alt+F1 を押して SDDM の tty に切り替えることで SDDM を適切に停止させることができます。
  • Plasma からログアウトして、SDDM から適切にシャットダウンや再起動をすることができます。
  • デフォルトでは、systemd は SDDM を SIGKILL で強制終了するまで90秒待機します。しかし、sddm.service サービスをドロップインファイル編集することで、この時間をより短くすることができます。
/etc/systemd/system/sddm.service.d/override.conf
[Service]
TimeoutStopSec=5s

このバグに関する詳細は [9][10] を参照してください。

NVIDIA グラフィックカードでログアウト後に黒画面

ユーザからログアウトした後に、完全な黒画面や、カーソル/ディスプレイデバイスのロゴだけの黒画面が発生する場合があります。これは、sddm.service が NVIDIA ドライバよりも早く起動してしまうため、発生します。KMS の早期ロード を検討してください。

翻訳ステータス: このページは en:SDDM の翻訳バージョンです。最後の翻訳日は 2023-07-29 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。