web-dev-qa-db-ja.com

どのlightdm greeterが使用されているかを確認する方法は?

知らない人にとっては、挨拶は基本的にログイン画面です。特にLightdmの場合、いくつかのバージョンがあります。

  • 団結挨拶
  • グリッター
  • lightdm-gtk-greeter
  • lightdm-kde-greeter
  • lightdm-webkit-greeter
  • razorqt-lightdm-greeter

目標:

現在使用中のグリーターバージョンを取得する方法を知る必要があります。スクリプトソリューションは大歓迎です(できればpython、Shellスクリプト、Perl)が、Cコードにもオープンです。理想的には、ソリューションは次のように機能します。

$ ./get_greeter
kylin-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サービスでパスとメソッドを調べると、どのグリッターが使用されているかについての洞察も得られませんでした。
4

いくつかの簡単なテストから、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

設定のソースに注意してください。

4
muru

まあ、ubuntuベースのシステムと他のすべてのシステムでは、スクリプトで更新の代替が機能していました。update-alternatives --list lightdm-greeter |head -n1を実行して、lightdm greeterとして使用しているものを確認できます。これにより、少なくともデフォルトのlightdm greeterが表示されるはずです。ユーザーがlightdmを停止してnondefualt greeterで起動すると、スクリプトが破損する可能性があるかどうかはわかりますが、これを行う論理的な理由はわかりません。詳細については、man update-alternativesをご覧ください。その出力の結果をheadにパイプせず、一番上の行のみを表示する場合、インストールされているすべてのlightdm greeterが表示されます。

0
ianorlin