知らない人にとっては、挨拶は基本的にログイン画面です。特にLightdmの場合、いくつかのバージョンがあります。
現在使用中のグリーターバージョンを取得する方法を知る必要があります。スクリプトソリューションは大歓迎です(できればpython、Shellスクリプト、Perl)が、Cコードにもオープンです。理想的には、ソリューションは次のように機能します。
$ ./get_greeter
kylin-greeter
pgrep -f lightdm | xargs -L 1 ps -o args --no-header -p
またはpgrep -f kylin | xargs -L 1 ps -o args --no-header -p
は/usr/sbin/kylin-greeter
を指すものを何も返しません。lsof -p <LIGHTDM_PID>
も洞察を提供しません-リストに/usr/sbin/kylin-greeter
はありません。/etc/lightdm/lightdm.conf
の解析は潜在的ですが、理想的なソリューションではありません。Ubuntuのフレーバー(Kylinなど)は、そのファイルにグリーターセッションを明示的に記述しないためです。もっと信頼できるものを好むでしょう。gsettings
は、使用中のgreeterを決定する信頼できる手段も提供しません-unity-greeter
のスキーマの存在は、現在それを使用しているという意味ではありません。org.freedesktop.DisplayManager
サービスでパスとメソッドを調べると、どのグリッターが使用されているかについての洞察も得られませんでした。いくつかの簡単なテストから、LightDM自体に問い合わせるのが唯一の方法のようです。
$ lightdm --show-config |& awk -F= '/greeter-session=/{print $2}'
kylin-greeter
デフォルトのUbuntuでテストを開始し、lightdm-gtk-greeter
とインストールされたkylin-greeter
をインストールしました。いずれの場合も、正しいオプションが返されました。たとえば、/etc/lightdm/lightdm.conf
を編集してgreeter-session=unity
を追加すると、出力が変更されます。
$ lightdm --show-config |& awk -F= '/greeter-session=/{print $2}'
unity
$ lightdm --show-config
[LightDM]
A backup-logs=false
[Seat:*]
B greeter-wrapper=/usr/lib/lightdm/lightdm-greeter-session
C guest-wrapper=/usr/lib/lightdm/lightdm-guest-session
D user-session=ubuntu
I greeter-session=unity
F xserver-command=X -core
I autologin-guest=false
I autologin-user=muru
I autologin-user-timeout=0
Sources:
A /usr/share/lightdm/lightdm.conf.d/50-disable-log-backup.conf
B /usr/share/lightdm/lightdm.conf.d/50-greeter-wrapper.conf
C /usr/share/lightdm/lightdm.conf.d/50-guest-wrapper.conf
D /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
E /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf
F /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf
G /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf
H /usr/share/lightdm/lightdm.conf.d/95-kylin-greeter.conf
I /etc/lightdm/lightdm.conf
設定のソースに注意してください。
まあ、ubuntuベースのシステムと他のすべてのシステムでは、スクリプトで更新の代替が機能していました。update-alternatives --list lightdm-greeter |head -n1
を実行して、lightdm greeterとして使用しているものを確認できます。これにより、少なくともデフォルトのlightdm greeterが表示されるはずです。ユーザーがlightdmを停止してnondefualt greeterで起動すると、スクリプトが破損する可能性があるかどうかはわかりますが、これを行う論理的な理由はわかりません。詳細については、man update-alternativesをご覧ください。その出力の結果をheadにパイプせず、一番上の行のみを表示する場合、インストールされているすべてのlightdm greeterが表示されます。