Как определить, какая lightdm зазывала используется?

Для тех, кто не знает, зазывала является в основном экраном входа в систему. В случае Lightdm а именно, существует несколько версий его:

  • зазывала единицы
  • kylin-зазывала
  • lightdm-gtk-greeter
  • lightdm-kde-greeter
  • lightdm-webkit-greeter
  • razorqt-lightdm-greeter

Цель:

Я должен знать, как получить использующуюся в настоящее время версию зазывалы. Пишущие сценарий решения приветствуются (предпочтительно Python, сценарии оболочки, жемчуг), но также и открыты для кода C. Идеально, решение работало бы как так:

$ ./get_greeter
kylin-greeter

Проблемы и отказавшие подходы:

  • Проверка списка процессов не работает. У меня есть kylin-зазывала, используемая прямо сейчас, но 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 не обеспечивает надежное средство определения зазывалы, используемой ни один - присутствие схем для unity-greeter не означает, что я в настоящее время использую это.
  • исследование путей и методов на org.freedesktop.DisplayManager сервис для системной шины не обеспечил понимания того, какая зазывала используется также.
4
задан 10 January 2017 в 07:10

2 ответа

От нескольких быстрых тестов кажется, что единственный путь состоит в том, чтобы спросить сам 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

Примечание источник конфигурации.

5
ответ дан 1 December 2019 в 09:32

Хорошо для основанных на человечности систем и всех других были работы альтернатив обновления в Вашем скрипте, который можно запустить update-alternatives --list lightdm-greeter |head -n1 для наблюдения то, что они используют в качестве lightdm зазывалы. Это должно, по крайней мере, показать значение по умолчанию lightdm зазывала. Я действительно знаю, мог ли Ваш сценарий закончить тем, что был поврежден пользователем, останавливающимся lightdm, и запускающий его с не defualt зазывала однако я не вижу логической причины сделать это. Если Вы хотите больше информации об этом, посмотрите альтернативы обновления человека. Если Вы не передаете результат по каналу того вывода, чтобы возглавить и иметь его, только отображают верхнюю строку, он покажет, что все lightdm зазывалы установили.

0
ответ дан 1 December 2019 в 09:32

Другие вопросы по тегам:

Похожие вопросы: