SDDM

提供: ArchWiki
2022年3月29日 (火) 17:01時点におけるAshMyzk (トーク | 投稿記録)による版 (→‎設定: 「Running under Wayland」を追加)
ナビゲーションに移動 検索に移動

関連記事

Simple Desktop Display Manager (SDDM) は KDE 5 の Plasma デスクトップで推奨されているディスプレイマネージャです。

Wikipedia より:

Simple Desktop Display Manager (SDDM) は X11 と Wayland ウィンドウシステム向けのディスプレイマネージャ (グラフィカルログインプログラム) である。SDDM は C++11 によってスクラッチで書かれており QML によるテーマ機能をサポートしている。KDE ディスプレイマネージャの後継で KDE Frameworks 5, KDE Plasma 5, KDE Applications 5 と合わせて使われる。
ノート: Wayland のサポートは完全ではありません [1]。Wayland のセッションは認識されますが、SDDM 自体は X11 で動作します。SDDM 0.20 では完全な Wayland サポートが導入されます。[2]

インストール

sddm パッケージをインストールしてください。

そしてディスプレイマネージャ#ディスプレイマネージャをロードするにしたがってブート時に 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-config-editor-gitAUR) も存在します。

systemd によって制御されている環境では、SDDM がデフォルトで systemd-logind を使ってセッションを管理するため、何も設定しなくても問題なく動作します。そのため、パッケージをインストールした時に設定ファイルは作成されません。SDDM にはデフォルト設定のサンプル設定ファイルを生成するコマンドがあるので、必要であれば使って下さい:

# sddm --example-config > /etc/sddm.conf.d/sddm.conf

自動ログイン

KDM と同じように、SDDM は設定ファイルによって自動ログインをサポートしています、例:

/etc/sddm.conf.d/autologin.conf
[Autologin]
User=john
Session=plasma.desktop

上の設定だと、システムが起動した時に john ユーザーで KDE Plasma セッションが起動します。利用できるセッションのタイプは ls /usr/share/xsessions/ でわかります。

警告: 設定を誤ると、あなたのノートパソコンへの物理的なアクセスを手に入れた攻撃者が自動ログインを使って、たやすくデスクトップを破壊してしまう可能性があります。自動ログインは他の認証プロンプトによってシステムが保護されているときにだけ有効にしてください。例: パスフレーズによる root ファイルシステムの暗号化

KDE Plasma の自動ログインを使用した場合、セッションのロックは利用できなくなります [3]

以下のスクリプトを追加することで KDE のスクリーンセーバーを自動的に有効化することが可能です:

#!/bin/bash
/usr/bin/qdbus-qt4 org.kde.screensaver /ScreenSaver SetActive true &
exit 0

ログイン時に KDE Wallet のロックを解除

KDE Wallet#ログイン時に KDE ウォレットを自動的にアンロックを見てください。

テーマ設定

テーマの設定は [Theme] セクションで変更できます。

デフォルトの Plasma テーマを使いたい場合 breeze に設定してください。

archlinux-themes-sddmAUR など、AUR から入手できるテーマもあります。

メインテーマ

メインテーマは Current で設定します。例: Current=archlinux-simplyblack

テーマの編集

SDDM のデフォルトのテーマディレクトリは /usr/share/sddm/themes/ です。作成したカスタムテーマはこのディレクトリのサブディレクトリに追加することができます。サブディレクトリの名前はテーマの名前と合わせる必要があります。インストールされているファイルを参考に自分自身のテーマを作成してみてください。

テーマのテスト (プレビュー)

必要であれば SDDM のテーマをプレビューすることができます。以下のようにコマンドを実行してください:

$ sddm-greeter --theme /usr/share/sddm/themes/breeze

新しいウィンドウが開いてテーマのプレビューが表示されます。

ノート: プレビューモードでは、シャットダウンやサスペンド、ログインなどは出来ません。

マウスカーソル

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

Plasma で使用できるマウスカーソルのテーマの名前は: breeze_cursors, Breeze_Snow, breeze-dark

アバターの変更

username.face.icon という名前の png 画像をデフォルトディレクトリ /usr/share/sddm/faces/ に配置してください。もしくはデフォルトディレクトリを別のディレクトリに変更することもできます。例:

/etc/sddm.conf.d/avatar.conf
[Theme]
FacesDir=/var/lib/AccountsService/icons/

ホームディレクトリのルートに .face.icon という名前の PNG 画像を置く方法もあります。ただし、sddm ユーザーからファイルが読み込めるようにする必要があります。

ノート: アバター画像がシンボリックリンクの場合、リンク先のファイルに適切なファイル権限を設定してください。#ユーザーアイコンが表示されないを参照。

Numlock

Numlock を強制的に有効にしたい場合、[General] セクションに Numlock=on と設定してください。

ディスプレイの回転

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

DPI の設定

ディスプレイマネージャからディスプレイの PPI 設定を適切に設定できると便利です。設定ファイルで "ServerArguments" パラメータの末尾に -dpi your_dpi を追加してください。例:

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

HiDPI の有効化

ノート: HiDPI のサポートはバージョン 0.15 から問題が発生しています [4]

以下のファイルを作成してください:

/etc/sddm.conf.d/hidpi.conf
[General]
EnableHiDPI=true

指紋認証の利用

ノート: 作業前に指紋登録がなされていることを確認してください。指紋リーダーへの対応は不完全であり、この方法ではパスワードのみでのログインは不可能なようです。

SDDM では fprint を利用した指紋認証が可能です。fprint をインストールし指紋署名を登録したのち、 /etc/pam.d/sddm の先頭に auth sufficient pam_fprintd.so を加えてください。

ヒント: KDE のロックスクリーンで動作させるには、この行を /etc/pam.d_kde の先頭に加えてください。

また、ロックスクリーンではパスワード認証と指紋認証のいずれか片方を使うこともできます。auth セクションの先頭に以下を加えてください:

/etc/pam.d/kde/
auth 			sufficient  	pam_unix.so try_first_pass likeauth nullok
auth 			sufficient  	pam_fprintd.so
SDDM (/etc/pam.d/sddm) でも動作しますが、ログイン後に別途 KWallet のロックを解除する必要があります。

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

Running under Wayland

SDDM can run rootless under Wayland, but currently only when using the sddm-gitAUR package.

Create a new config file in the /etc/sddm.conf.d/ directory, name it something like /etc/sddm.conf.d/10-wayland.conf.

Add the following to the new file:

/etc/sddm.conf.d/10-wayland.conf
[General]
DisplayServer=wayland
GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell

[Wayland]
CompositorCommand=

Next, you will need a Wayland compositor (such as KDE's KWin compositor) to render SDDM, and enter the program and relevant arguments as a parameter to CompositorCommand.

KDE / KWin

警告: As SDDM will be treated as a separate window by KWin, logging in will close the window. Therefore logging out or switching user will present undesirable behaviour.
ヒント: Any changes to your display configuration in KDE Wayland (e.g. monitor layout, resolution, etc) will not persist to SDDM. To make them persist, open KDE's System Settings and navigate to Startup and Shutdown> Login Screen (SDDM) and click "Apply Plasma Settings...". You will need to have permission to perform this action.

Add the following as a parameter to CompositorCommand into the SDDM config file created above (e.g /etc/sddm.conf.d/10-wayland.conf):

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

To enable virtual keyboard support (e.g. using qt5-virtualkeyboard or maliit-keyboard), append the --inputmethod flag with the appropriate keyboard to the kwin_wayland command, like so (replacing maliit-keyboard with qtvirtualkeyboard as necessary):

/etc/sddm.conf.d/10-wayland.conf
[Wayland]
CompositorCommand=kwin_wayland --no-lockscreen --inputmethod maliit-keyboard

トラブルシューティング

greeterが表示されず、カーソルのみの黒画面

利用可能なディスクの空き領域が存在しない場合、greeter はクラッシュします。df -h でディスクの空き領域を確認してください。

ディスクの空き領域の問題でないとしたら、バグのせいかもしれません。他の TTY に切り替えてloginctl unlock-session session_id を実行するか、SDDM を再起動してみてください。

SDDM が greeter を表示するのに時間がかかる

エントロピープールが小さいと SDDM のロードに長い時間がかかる可能性があります(バグレポート)。乱数生成にエントロピープールを大きくする方法があります。

ログイン後にフリーズする

~/.Xauthority を削除してみてください。

SDDM が tty7 ではなく tty1 で起動する

SDDM は systemd の慣習 にしたがって tty1 に一番目のグラフィカルセッションを起動します。tty1 から tty6 まではテキストコンソール用にするという、昔のやり方が良い場合は、設定ファイルで [X11] セクションの MinimumVT 変数を変更してください:

/etc/sddm.conf.d/tty.conf
[X11]
MinimumVT=7

ユーザーが greeter に表示されない

警告: UID が高すぎたり低すぎるユーザーは基本的にディスプレイマネージャから認識されないようになっています [5]

SDDM はデフォルトで UID が 1000 から 60000 の間のユーザーしか表示しません (ちなみに、この値はコンパイル時に /etc/login.defs を参照して決まります)。使用したいユーザーの UID がこの値を下回っていたり上回っている場合、範囲を修正する必要があります。

例えば、UID が 501 の場合、設定ファイルで以下のように変更して最小の UID を下げて、またシステムユーザが使用するシェルを隠してください:

/etc/sddm.conf.d/uid.conf
[Users]
HideShells=/usr/bin/nologin,/sbin/nologin,/bin/false,/usr/bin/git-shell
MinimumUid=500

systemd-homed で使われるような高い UID の場合は、最大の UID を上げてください:

/etc/sddm.conf.d/uid.conf
[Users]
MaximumUid=60513

SDDM が US キーボードのレイアウトしかロードしない

SDDM は /etc/X11/xorg.conf.d/00-keyboard.conf で指定されたキーボードレイアウトをロードします。localectl set-x11-keymap コマンドを使うことでこの設定ファイルを生成することが可能です。詳しくは Xorg でのキーボード設定を見て下さい。

最初キーボードレイアウトが US に表示され、パスワードを入力し始めるとすぐに適当なレイアウトに切り替わる場合もあります [6]。これは SDDM のバグではなく libxcb (バージョン 1.13-1) が原因です [7]

ユーザーアイコンが表示されない

SDDM はユーザーアイコンを ~/.face.icon から読み込みます。

SDDM ユーザーからファイルが読み込めるように権限を設定してください:

$ setfacl -m u:sddm:x ~/
$ setfacl -m u:sddm:r ~/.face.icon

詳しくは SDDM README: No User Icon を参照。

画面解像度が低すぎる

EDID の情報が壊れているディスプレイで HiDPI を使用した場合に発生する問題です [8]

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 を編集することでアバターを無効化することができます:

/etc/sddm.conf
[Theme]
EnableAvatars=false

X authority (aka MIT-MAGIC-COOKIE) file

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