В service-файл надо добавить Conflicts=plymouth-quit.service plymouth-quit-wait.service ExecStartPre=-/bin/plymouth quit --retain-splash , чтоб плавнее переключалось на greeter. Так сделано в sddm.
Ну и по `systemd-analyze blame` сервис plymouth-quit-wait у меня на современной машине сжирает 2 секунды.
Ку-ку!
Предлагаю обсудить. sddm уже много лет проверен, недостатков не выявлено. P.S. Если только всё равно переключается на чёрный экран, но это уже где-то не в lightdm/sddm.
https://packages.altlinux.org/ru/tasks/search/?q=%23331311
А зачем делать отдельный юнит, время запуска которого не будет когда точно надо?
По хорошему, конечно, нужно чтобы загрузкой и переключением графики дережировал какой-то вышестоящий сервис, а участники процесса ничего друг о друге не знали.
По хорошему да, но пока этого не сделано, есть рабочее проверенное решение.
Created attachment 16301 [details] Скрин systemd-analyze blame Вот, у меня лвиную долю отжирает.
(Ответ для Sergey V Turchin на комментарий #7) > По хорошему да, но пока этого не сделано, есть рабочее проверенное решение. Так себе решение. Если lightdm не запустится, мы ничего не увидим. Такое было с sddm, и этим он мне не нравился. Нужно чтобы lightdm вызывал plymouth --quit сам перед запуском иксов непосредственно.
Перед запуском иксов? Тогда, "если lightdm не запустится мы ничего не увидим"??? Может быть именно перед запуском _lightdm_? А то я хотел спросить, может быть из /etc/X11/Xgreeter.lightdm не поздно запускать /bin/plymouth quit --retain-splash ? Но, наверное, поздно...
(Ответ для manowar@altlinux.org на комментарий #10) > Перед запуском иксов? Тогда, "если lightdm не запустится мы ничего не > увидим"??? > Может быть именно перед запуском _lightdm_? > > А то я хотел спросить, может быть из /etc/X11/Xgreeter.lightdm не поздно > запускать /bin/plymouth quit --retain-splash ? Но, наверное, поздно... Если lightdm не запустится, отработает OnFailure=plymouth-quit.service Разумеется, эту строчку нужно обязательно добавить в lightdm.service
(Ответ для manowar@altlinux.org на комментарий #10) > /etc/X11/Xgreeter.lightdm Wayland на носу.
Так что в итоге? Делаем как в https://git.altlinux.org/tasks/331311/ ? Или я хотел предложить ExecStartPre=run-parts /etc/lightdm/pre-start.d И там уже любые plymouth, plymouth++, plymouth-ng и так далее. Я не хочу менять lightdm.service при каждом новом splash, который захочет поставить себе пользователь.
(Ответ для Антон Мидюков на комментарий #11) > (Ответ для manowar@altlinux.org на комментарий #10) > > Перед запуском иксов? Тогда, "если lightdm не запустится мы ничего не > > увидим"??? > > Может быть именно перед запуском _lightdm_? > > > > А то я хотел спросить, может быть из /etc/X11/Xgreeter.lightdm не поздно > > запускать /bin/plymouth quit --retain-splash ? Но, наверное, поздно... > > Если lightdm не запустится, отработает > OnFailure=plymouth-quit.service > > Разумеется, эту строчку нужно обязательно добавить в lightdm.service В Fedora так и сделано. # Replaces plymouth-quit since it quits plymouth on its own. Conflicts=plymouth-quit.service After=plymouth-quit.service # LighDM takes responsibility for stopping plymouth, so if it fails # for any reason, make sure plymouth still stops. OnFailure=plymouth-quit.service Надо проверить, может ничего больше делать и не нужно, всё уже умеет.
(Ответ для manowar@altlinux.org на комментарий #13) > Я не хочу > менять lightdm.service при каждом новом splash У нас ничего другого не было кроме gfxboot. >, который захочет поставить себе пользователь. Он и будет менять на свой plygfx## или что там у него. В любом случае, причём.
Не в любом. plymouth будет класть свой скрипт в /etc/lightdm/pre-start.d, plygfx## или как там его --- свой. И тогда не нужно редактировать lightdm.service.
(Ответ для Антон Мидюков на комментарий #14) > (Ответ для Антон Мидюков на комментарий #11) > > (Ответ для manowar@altlinux.org на комментарий #10) > > > Перед запуском иксов? Тогда, "если lightdm не запустится мы ничего не > > > увидим"??? > > > Может быть именно перед запуском _lightdm_? > > > > > > А то я хотел спросить, может быть из /etc/X11/Xgreeter.lightdm не поздно > > > запускать /bin/plymouth quit --retain-splash ? Но, наверное, поздно... > > > > Если lightdm не запустится, отработает > > OnFailure=plymouth-quit.service > > > > Разумеется, эту строчку нужно обязательно добавить в lightdm.service > > В Fedora так и сделано. > # Replaces plymouth-quit since it quits plymouth on its own. > Conflicts=plymouth-quit.service > After=plymouth-quit.service > > # LighDM takes responsibility for stopping plymouth, so if it fails > # for any reason, make sure plymouth still stops. > OnFailure=plymouth-quit.service > > Надо проверить, может ничего больше делать и не нужно, всё уже умеет. Проверил. В Conflicts уже есть plymouth-quit.service. Нужно добавить туда plymouth-quit-wait.service И чтобы plymouth успешно выключался, когда что-то пошло не так, нужно добавить: OnFailure=plymouth-quit.service И всё будет работать.
diff --git a/lightdm/data/lightdm.service b/lightdm/data/lightdm.service index e7f56bb7..e9bdeb19 100644 --- a/lightdm/data/lightdm.service +++ b/lightdm/data/lightdm.service @@ -1,9 +1,12 @@ [Unit] Description=Light Display Manager Documentation=man:lightdm(1) -Conflicts=getty@tty1.service plymouth-quit.service +Conflicts=getty@tty1.service +Conflicts=plymouth-quit.service plymouth-quit-wait.service Conflicts=xdm.service gdm.service kdm.service lxdm.service slim.service sddm.service -After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service +After=systemd-user-sessions.service getty@tty1.service +After=plymouth-quit.service plymouth-quit-wait.service +OnFailure=plymouth-quit.service [Service] ExecStart=/usr/sbin/lightdm
(Ответ для manowar@altlinux.org на комментарий #16) > Не в любом. В любом. Ему будет без разницы, как называется файл, но ему придётся. Мантейнер обязан что-то делать не будет в любом случае.
(Ответ для Антон Мидюков на комментарий #18) > diff --git a/lightdm/data/lightdm.service b/lightdm/data/lightdm.service https://git.altlinux.org/tasks/351280/
(Ответ для Sergey V Turchin на комментарий #19) > (Ответ для manowar@altlinux.org на комментарий #16) > > Не в любом. > В любом. Ему будет без разницы, как называется файл, но ему придётся. > Мантейнер обязан что-то делать не будет в любом случае. Не понял, что ты хотел сказать. :) Зачем было бы что-то менять в юните, если бы там запускалась целая директория с хуками? Положил туда своё скрипт и вперёд, юнит трогать не нужно.
(Ответ для manowar@altlinux.org на комментарий #21) > > В любом. Ему будет без разницы, как называется файл, но ему придётся. > > Мантейнер обязан что-то делать не будет в любом случае. > Не понял, что ты хотел сказать. :) Тем не менее, будет именно так. > Зачем было бы что-то менять в юните, если бы там запускалась целая > директория с хуками? Потому, что в никому неизвестном месте никто ничего менять не полезет, а в документированное известное место полезет каждый.
(Ответ для manowar@altlinux.org на комментарий #20) > https://git.altlinux.org/tasks/351280/ Вроде, теперь норм.
Осталось гасилку сделать.
(Ответ для Sergey V Turchin на комментарий #24) > Осталось гасилку сделать. Про какую гасилку речь?
Ааа, да. Пользователь hzsplash всё равно полезет в lightdm.service, т.к. ему придётся там сделать подобие того, что там есть сейчас для plymouth.
(Ответ для Антон Мидюков на комментарий #25) > Про какую гасилку речь? comment#0
(Ответ для Sergey V Turchin на комментарий #27) > (Ответ для Антон Мидюков на комментарий #25) > > Про какую гасилку речь? > comment#0 Да вроде бы нормально сейчас. Чёрный экран при запуске иксов, не раньше.
(Ответ для Антон Мидюков на комментарий #28) > Да вроде бы нормально сейчас. Чёрный экран при запуске иксов, не раньше. Это хорошо. А теперь убираем чёрный экран в баге #47907 . ;-)
(Ответ для Антон Мидюков на комментарий #28) > Да вроде бы нормально сейчас. Главное, чтоб процесс plymouth в фоне не остался висеть.
lightdm-1.32.0-alt6 -> sisyphus: Fri Jun 21 2024 Paul Wolneykien <manowar@altlinux> 1.32.0-alt6 - Output test-suite.log on test fail. - Fix build with new systemd (pass /usr/lib/systemd/system to make install). Fri Jun 21 2024 Paul Wolneykien <manowar@altlinux> 1.32.0-alt5 - Start X11 with no background, thx Anton Midyukov (closes: 47907). - Integrate properly with Plymouth services, thx Anton Midyukov (closes: 47204).
Уря! Теперь надо в p11.
(Ответ для Sergey V Turchin на комментарий #32) > Уря! Теперь надо в p11. https://git.altlinux.org/tasks/351365/