LightDM

提供: ArchWiki
2023年10月6日 (金) 10:26時点におけるAshMyzk (トーク | 投稿記録)による版 (→‎任意の設定と調整: 同期)
ナビゲーションに移動 検索に移動

関連記事

LightDM はクロスデスクトップのディスプレイマネージャです。主な特徴は以下の通り:

  • クロスデスクトップ - 様々なデスクトップ技術をサポート。
  • 様々なディスプレイサーバーに対応 (X、Mir、Wayland ...)。
  • 軽量 - メモリの使用量が少なくて高速に動作。
  • ゲストセッションをサポート。
  • リモートログインをサポート (着信 - XDMCPVNC、発信 - XDMCP、PAM)。
  • 充実したテストスイート。
  • 軽量なコードベース。

LightDM の設計に関する詳細は ここ から見れます。

目次

インストール

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

ヒント: 安定版は偶数 (1.8、1.10) で、開発版は奇数 (1.9、1.11) が付けられています。これらの開発版は lightdm-develAUR で入手できます。また lightdm-gitAUR も利用可能です。

Greeter

Greeter もインストールする必要があるでしょう。Greeter はユーザーにログイン情報の入力を求める GUI であり、セッションの選択なども行います。Greeter 無しで LightDM を使うことも可能ですが、自動ログインが設定されている場合に限ります。Greeter を使用する場合は、xorg-server をインストールし、さらに以下の greeter パッケージのどれかをインストールする必要があります。

公式リポジトリには以下の greeter が含まれています:

その他の greeter は AUR からインストールすることができます:

LightDM の設定ファイルの [Seat:*] セクションを変更することでデフォルトの greeter を設定することができます。例えば:

/etc/lightdm/lightdm.conf
[Seat:*]
...
greeter-session=lightdm-yourgreeter-greeter
...
ノート: lightdm-pantheon-greeter の設定ファイルは io.elementary.greeter.conf です。lightdm-pantheon-greeter.conf ではありません。

どの greeter が利用できるか確認できる方法としては、/usr/share/xgreeters ディレクトリ内のファイルをリストアップするというものがあります。それぞれの .desktop ファイルは1つの利用可能な greeter を表します。以下の例では、lightdm-gtk-greeter greeter と lightdm-webkit2-greeter greeter が利用可能です:

$ ls -1 /usr/share/xgreeters/
lightdm-gtk-greeter.desktop
lightdm-webkit2-greeter.desktop

LightDM を有効にする

LightDM をブート時に起動するには lightdm.service有効化してください。ディスプレイマネージャ#ディスプレイマネージャをロードする も参照。

コマンドラインツール

LightDM はコマンドラインツール dm-tool を提供しています。これを使うことで現在のシートのロック、セッションの切り替えなどができます。'最小主義の'ウィンドウマネージャを使っている場合やテストに便利です。利用できるコマンドを表示するには、次を実行してください:

$ dm-tool --help

ユーザーの切り替え

警告: dm-tool は、(dm-tool lockdm-tool switch-to-greeter を実行することで) 簡単にバイパスすることができ、light-locker か他の loginctl 互換のスクリーンロッカーが無いとセッションをロックしません。XScreenSaver#ロック画面からユーザーを切り替える を参照。

LightDM の dm-tool コマンドを使って別々の tty に複数のユーザーをログインさせることができます。以下のコマンドは現在のセッションをロックするシグナルを送信して LightDM の greeter への切り替えを行って、新しいユーザーがログインできるようにします:

$ dm-tool switch-to-greeter

テスト

まず、xorg-server-xephyrインストールしてください。

そして、LightDM を X アプリケーションとして実行してください:

$ lightdm --test-mode --debug

任意の設定と調整

LightDM は、設定ファイル /etc/lightdm/lightdm.conf を編集することで設定することができます。

また、一部の greeter には独自の設定ファイルが存在しています。例えば:

lightdm-gtk-greeter: /etc/lightdm/lightdm-gtk-greeter.conf (あるいは、lightdm-gtk-greeter-settings GUI を使用することもできます)。

lightdm-webkit2-greeter: /etc/lightdm/lightdm-webkit2-greeter.conf

X セッションラッパー

xinit から移行したユーザは、セッションがシェルから起動しないことに気づくでしょう。これは、シェルはセッションを起動する (そして、セッションはシェルの環境変数を継承する) のに対し、LightDM はセッションを起動するがシェルを source しないことが原因です。LightDM はラッパースクリプトを実行することでセッションを起動し、最後にグラフィカル環境を起動します。デフォルトでは、/etc/lightdm/Xsession が実行されます。

環境変数

スクリプトは /etc/profile~/.profile/etc/xprofile、そして ~/.xprofile をこの順番で読み込みます。これらのファイルを source しないシェルを使用している場合は、ファイルを読み込む ~/.xprofile を作成してもよいです。以下の例では、zsh がログインシェルです:

~/.xprofile
#!/bin/sh
[ -f ~/.config/zsh/.zshenv ] && . ~/.config/zsh/.zshenv

セッションにおいて重要であるシェル変数 (GTK や QT のテーマ、GNUPG の場所、設定のオーバーライドなど) を定義している場合は、こうすることでログインシェルから起動せずにグラフィカル環境が環境変数にアクセスすることができるようになります。

キーマップ

スクリプトは /etc/X11/Xkbmap~/.Xkbmap で定義されている引数を使って Xkbmap を実行します。これらのファイルが存在しない場合、スクリプトは /etc/X11/Xmodmap~/.Xmodmap で定義されている引数を使って xmodmap を実行します。xkbmap を使用する場合、上記のファイルは cat を使ってパースされます。例:

~/.Xmodmap
-model pc105 -layout us,us,tr -variant ,dvorak,f -option grp:caps_toggle

それら以外の場合、セッションは X11 のシステムのデフォルトのキーマップを継承します。このキーマップは、xorg の設定ファイルを手動で編集するか、localectl set-x11-keymap を使用することで定義することができます。Xorg/キーボード設定#キーボードレイアウトの設定 を参照。

lightdm-gtk-greeter で複数のキーボード配列

事前定義済みのキーボード配列の中から配列を切り替えられるようにするには、ドロップダウンメニューを有効化し、配列を設定してください。lightdm-gtk-greeter-settings GUI を使用するか、設定ファイルを直接編集してください:

/etc/lightdm/lightdm-gtk-greeter.conf
[greeter]
indicators = ~host;~spacer;~clock;~spacer;~layout;~language;~session;~a11y;~power

複数の配列を設定するには localectl を使用してください。例えば、de とその "バリアント" である neo を設定し、後者をプライマリとするには:

# localectl --no-convert set-x11-keymap de,de pc105 neo,

末尾のコンマは2つめの de の空白のバリアントを意味していることに注意してください。

背景画像・色を変更する

背景には16進数のカラーコードか画像を設定することができます。一部の greeter は、ログイン画面による背景選択、ランダムな背景などのよりロバストな背景オプションを提供しています。

GTK greeter

lightdm-gtk-greeter-settings GUI を使って設定することができます。

Greeter 画面の壁紙をカスタマイズしたい場合は、/etc/lightdm/lightdm-gtk-greeter.conf を編集して [greeter] セクション内で background 変数を定義する必要があります。例:

/etc/lightdm/lightdm-gtk-greeter.conf
[greeter]
background=/usr/share/pixmaps/black_and_white_photography-wallpaper-1920x1080.jpg
ノート: LightDM ユーザーが画像ファイルにアクセスできるようにするために、/usr/share/pixmaps に PNG や JPG ファイルを配置することが推奨されています。

GTK3 テーマは [greeter] セクション内の theme-name 変数で指定することができます。アイコンとカーソルのテーマも同じように設定できます。例:

/etc/lightdm/lightdm-gtk-greeter.conf
[greeter]
theme-name = Tela
icon-theme-name = Tela
cursor-theme-name = Tela
cursor-theme-size = 32
font-name = Cantarell 20

Webkit2 greeter

lightdm-webkit2-greeter では、背景画像をログイン画面で直接選択することができます。また、Material テーマを使用する場合は、起動するたびにランダムな画像を表示するオプションも提供されています。デフォルトでは、画像は /usr/share/backgrounds から読み込まれます。lightdm-webkit2-greeter.conf を編集することで背景画像を直接変更することができます。例えば:

/etc/lightdm/lightdm-webkit2-greeter.conf
[branding]
background_images = /usr/share/backgrounds
ノート: 背景画像のディレクトリは LightDM ユーザによってアクセス可能でなければなりません。よって、画像は /home 内に配置するべきではありません。

Unity greeter

lightdm-unity-greeterAUR[リンク切れ: package not found] を使っている場合、/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml ファイルを編集して、次を実行してください:

# glib-compile-schemas /usr/share/glib-2.0/schemas/

このページを参照。

Slick Greeter

lightdm-settingsAUR GUI を使用してください。

アバターを変更する

まず、accountsservice パッケージがインストールされていることを確認し、その後、以下のようにセットアップしてください。username の部分はユーザーのログイン名に置き換えてください。

  • 96x96 の PNG 画像ファイルを使って /var/lib/AccountsService/icons/username.png ファイルを作成してください。その他の画像フォーマットも利用可能です (例えば JPEG)。
  • あるいは、デフォルトの設定がすでにユーザーのホームディレクトリのパスを使用している場合は、画像ファイルを /home/username/.face として配置し、次の手順を飛ばしてください。
  • アカウントの設定ファイル /var/lib/AccountsService/users/username を編集あるいは作成し、以下の設定を追加してください:
[User]
Icon=/var/lib/AccountsService/icons/username.png

ここでのファイル名は、1番目の手順で作成したアイコンファイルでなければなりません。なので、必要に応じてファイル名の拡張子を変更してください。

ノート: 作成したファイルのパーミッションは全て 644 に設定してください。chmod を使って、パーミッションを設定してください。

Arch の 64x64 アイコンを使う

archlinux-artworkAUR パッケージには素晴らしいサンプルが含まれており、/usr/share/archlinux/icons にインストールされます。以下のように /usr/share/icons/hicolor/64x64/devices にコピーすることが可能です:

# find /usr/share/archlinux/icons -name "*64*" -exec cp {} /usr/share/icons/hicolor/64x64/devices \;

コピーした後は、archlinux-artworkAUR パッケージは削除してかまいません。

自動ログインを有効にする

LightDM の設定ファイルを編集して、以下の設定をアンコメントし、正しく設定してください:

/etc/lightdm/lightdm.conf
[Seat:*]
autologin-user=username

パスワードを入力しないで自動的にログインできるようにするには、ユーザを autologin グループに追加する必要があります:

# groupadd -r autologin
# gpasswd -a username autologin

LightDM は ~/.dmrc に指定されたセッションを使ってログインします。このファイルの設定をオーバーライドするには、lightdm.confautologin-session を指定してください:

/etc/lightdm/lightdm.conf
[Seat:*]
autologin-user=username
autologin-session=session

有効なセッション名のリストは、X セッションは /usr/share/xsessions/*.desktop を、Wayland セッションは /usr/share/wayland-sessions/*.desktop を一覧表示すればわかります。

ノート: GNOME ユーザー (と gnome-keyring ユーザー) は、自動でロックが解除されるように、キーリングに空のパスワードを設定する必要があります。

インタラクティブなパスワードレスログインを有効化する

LightDM は PAM を経由します。なので、PAM の lightdm 設定ファイルを設定する必要があります:

/etc/pam.d/lightdm
#%PAM-1.0
auth        sufficient  pam_succeed_if.so user ingroup nopasswdlogin
auth        include     system-login
...

次に、パスワードを入力せずにインタラクティブにログインできるようにするために、あなたのユーザを nopasswdlogin グループに追加する必要があります:

# groupadd -r nopasswdlogin
# gpasswd -a username nopasswdlogin
ノート: GNOME ユーザや gnome-keyring ユーザは、前のセクションにある自動ログインの有効化に関する指示に従う必要がある場合があります。

自動ログインし、さらにパスワード無しで再ログインできるユーザアカウントを作成するには、両方のグループに含まれるユーザを作成してください。例えば:

# useradd -mG autologin,nopasswdlogin -s /bin/bash username

ゲストセッションを有効化する

ノート: この機能を有効化すると、ゲストユーザはパスワード無しでシステムにアクセスできるようになります。

(システムの設定を変えずに) LightDM でゲストセッションを有効化するには、少なくとも以下の2つが必要です:

  1. guest-account-script: guest-account をデフォルトとし、以下の2つのコマンドを受け入れるスクリプト:
    • add (一時的なゲストシステムアカウントを作成し、作成されたアカウントのユーザ名を返します)
    • remove アカウント名 (対応するアカウントを削除します)
  2. 作成されたゲストアカウントを追加する autologin グループ (参照: /etc/pam.d/lightdm-autologin)。

LightDM でゲストセッションを有効化する AUR パッケージが2つあります:

  • lightdm-guestAUR: 上流の (ほぼ変更されていない) guest-session スクリプトと lightdm 自体を提供します。
  • lightdm-guest-accountAUR: スクリプトの最小バージョンのみを提供します。

システムユーザーとサービスユーザーを隠す

システムユーザーをログイン画面で表示されないようにするには、任意の依存パッケージ accountsservice をインストールするか、ユーザーの名前を /etc/lightdm/users.confhidden-users に追加してください。前者の方法ではユーザーを追加・削除したときにリストを更新する必要はありません。

SLiM からの移行

xinitrc の中身を xprofile に移動し、ウィンドウマネージャデスクトップ環境を起動するコマンドを削除してください。

~/.xinitrc を使ってログイン

ディスプレイマネージャ#セッションとして ~/.xinitrc を実行 を見てください。

NumLock をデフォルトでオンにする

numlockx パッケージをインストールし、/etc/lightdm/lightdm.conf を編集してください:

/etc/lightdm/lightdm.conf
[Seat:*]
greeter-setup-script=/usr/bin/numlockx on

デフォルトセッション

他の DM と同じように、Lightdm は最後に選択された xsession を ~/.dmrc に保存します。詳しくは ディスプレイマネージャ#セッション設定 を見てください。

ログインウィンドウの位置を変更

GTK greeter

/etc/lightdm/lightdm-gtk-greeter.conf を編集して position 変数に値を入力する必要があります。x 値と y 値を入れることができ、絶対座標 (ピクセル) と相対座標 (パーセント) で指定できます。また、ウィンドウのアンカーの位置 (startcenterend) を指定することもできます。値はカンマで区切ります。

例:

position=200,start 50%,center

VNC サーバー

Lightdm を使って VNC 経由で接続することも可能です。サーバ側に tigervnc をインストールしてください。任意で、クライアント側の PC にも VNC クライアントとしてインストールしてください。

サーバ側で root として認証パスワードをセットアップしてください:

# vncpasswd /etc/vncpasswd

そして、以下のように LightDM の設定ファイルを編集してください。listen-address の設定で localhost からの接続のみをリッスンするように VNC を設定していることに注意してください。これは、SSH とポートフォワーディング経由での接続のみを許可するためです。SSH クライアントでは、トンネルの接続先として localhost:5900 のみを使うようにしてください。デュアルスタックのネットワーク接続では 127.0.0.1:5900::1:5900 は信頼性がありません。セキュアでない接続も許可するようにしたい場合、この設定を無効化してください。

/etc/lightdm/lightdm.conf
[VNCServer]
enabled=true
command=Xvnc -rfbauth /etc/vncpasswd
port=5900
listen-address=localhost
width=1024
height=768
depth=24

設定したら、TigerVNC#クライアント側 に書かれているように SSH トンネルを開いてローカルホストに接続してください。

ノート: VNC 接続を開いたときに画面に何も表示されない場合、別の LightDM greeter を試してみてください。

light-locker を使って画面をロック

light-locker は LightDM を使用してユーザーを認証するシンプルなスクリーンロッカーです。インストールして起動したら以下のコマンドでセッションをロックできます:

$ light-locker-command -l

上記コマンドを使うにはセッションの最初に light-locker を起動する必要があります。デフォルトでは、これは XDG 自動起動を使用して有効化されます。その他のオプションは 自動起動 を見てください。

マルチモニターのセットアップ

マルチモニター環境では LightDM がモニターの解像度を適切に設定しないことがあります。以下の Xorg 設定はデュアルモニターの環境で機能します: 大きなプライマリスクリーンを左側に配置し、サブの小さい方のスクリーンをプライマリの右側に配置します。順番は逆にすることも変更することもできます。

/etc/X11/xorg.conf.d/52-resolution-fix.conf
Section "Monitor"
    Identifier "DP1"
    Option "PreferredMode" "3840x2160"
    Option "Primary" "1"
EndSection
Section "Monitor"
    Identifier "eDP1"
    Option "PreferredMode" "1920x1080"
    Option "RightOf" "DP1"
EndSection

これは、/etc/lightdm/lightdm.confdisplay-setup-script の設定を不要にします。

トラブルシューティング

画面が点滅して起動時に lightdm が現れない問題が起こる場合は、lightdm の設定ファイルに greeter を正しく定義しているか確認してください。GTK greeter を定義している場合は、xsessions-directory (デフォルト: /usr/share/xsessions) が存在していて少なくとも一つは .desktop ファイルが含まれていることを確認してください。

最後に使用したセッションが利用できなくなった時も同じ問題が lightdm の起動時に発生することがあります (例えば gnome を使った後 gnome-session パッケージを削除した場合): 一番簡単な回避策は削除したパッケージを一時的に戻すことです。もうひとつの解決策は:

# dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.Accounts /org/freedesktop/Accounts/User1000 org.freedesktop.Accounts.User.SetXSession string:xfce

このコマンドはセッション "xfce" を user 1000 ユーザーのデフォルトとして設定します。

電源メニュー (再起動、電源オフなど) が使えない

lightdm-1:1.6.0-6 より前に lightdm をインストールしている場合、次のバグが原因かもしれません: FS#36613。修正するには次を実行してください:

# chown polkitd:root /usr/share/polkit-1/rules.d

間違ったロケールが表示される

Lightdm でロケールが正しく表示されない場合はあなたが使用しているロケールを /etc/environment に追加してください:

LANG=ja_JP.utf8

LightDM や greeter でシステムロケール以外の言語を使いたい場合、ユニットファイルを編集して Environment= オプションを追加してください。

Xresources が正しく読み込まれない

LightDM には Xresources ファイルがプリプロセッサによってロードされないという上流のバグが存在します [1]。実際面で、これは #define で設定された変数が後で呼ばれた時に展開されないということを意味しています。urxvt でカスタムカラーのセットを使った時にピンクの画面になることでこれを確認できます。修正するには、/etc/lightdm/Xsession を開いて次の行を探して下さい:

xrdb -nocpp -merge "$file"

次のように変更してください:

xrdb -merge "$file"

これで Xresources が処理され変数が正しく展開されます。

GTK greeter でアイコンが表示されない

lightdm-gtk-greeter を greeter として使っていてプレースホルダ画像がアイコンとして表示される場合、正しいアイコンテーマとテーマを設定してください。次のファイルを確認してください:

/etc/lightdm/lightdm-gtk-greeter.conf
[greeter]
theme-name=mate      # this should be the name of a directory under /usr/share/themes/
icon-theme-name=mate # this should be the name of a fully featured icons set directory under /usr/share/icons/

ログインしようとすると LightDM がフリーズする

適当なユーザー名・パスワードを入力してログインしようとすると、LightDM がフリーズしデスクトップを起動できないことがあります。この問題を修正するには、gdk-pixbuf2 パッケージを再インストールしてください。フォーラムへの投稿を参照。

LightDM が間違ったモニタに表示される

マルチモニタを使っていると、LightDM が間違ったモニタに表示されることがあります (例: プライマリモニタが右側にある場合)。LightDM のログイン画面が特定のモニタで表示されるように指定するには、/etc/lightdm/lightdm.conf を編集して display-setup-script パラメータを次のように変更してください:

/etc/lightdm/lightdm.conf
display-setup-script=xrandr --output HDMI1 --primary

HDMI1 は実際のモニタの ID に置き換えてください、xrandr コマンドの出力で確認できます。

もしくは、GTK+ greeter を使用している場合、/etc/lightdm/lightdm-gtk-greeter.conf を編集して以下のように active-monitor パラメータを追加することもできます:

/etc/lightdm/lightdm-gtk-greeter.conf
[greeter]
active-monitor=0

0 は適当なディスプレイの番号に置き換えてください。

LightDM が表示されない

システムの起動が速すぎて、グラフィックドライバーが読み込まれるよりも先に LightDM サービスが起動してしまうことがあります。このような場合、lightdm.conf ファイルに以下の設定を追加してください:

[LightDM]
logind-check-graphical=true

上記の設定で LightDM はグラフィックデバイスの準備が完了するのを待ってから Greeter を生成してセッションを開始します。

Pulseaudio が自動的に起動しない

PulseAudio#実行を見て下さい。

タッチパッドでタップしてクリックできない

設定によってはタップでクリックが機能しないことがあります。libinput を使用している場合、/etc/lightdm/lightdm.conf を編集して以下のように greeter-setup-script オプションをセットして xinput によるタッチパッドのクリックを有効にしてください:

/etc/lightdm/lightdm.conf
greeter-setup-script=xinput set-prop device_number option_number setting_value

xinput を使用して入力デバイスのプロパティを設定する方法は Libinput#設定を参照してください。

初回ログイン時に必ずセグメンテーション違反が発生する

ネットワークページ にあるように、ホスト名を設定してください。FS#47694も参照してください。

ログインの無限ループ

正しいユーザ名とパスワードを入力しても画面が真っ暗になり、何度やってもログインに戻るというループに陥った場合、rm ~/.Xauthority を実行すると解決することがあります。(または、スタックしたユーザーの問題のある .Xauthority) を実行すると、問題を解決できるかもしれません。

もう一つの理由は、"lightdm.conf" を一から作り直そうとして、あなたのバージョンにこの行が欠けていることが原因かもしれません。

session-wrapper=/etc/lightdm/Xsession

その場合、lightdm は lightdm-session をセッションラッパーとして使用しようとしますが、これは Arch Linux には存在しません。

参照