Bug 53365 - разбить greetd на подпакеты
Summary: разбить greetd на подпакеты
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: greetd (show other bugs)
Version: unstable
Hardware: all Linux
: P5 normal
Assignee: Кирилл Уницаев
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-03-08 17:27 MSK by Кирилл Уницаев
Modified: 2025-06-01 15:11 MSK (History)
8 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Кирилл Уницаев 2025-03-08 17:27:59 MSK
Нужно разбить greetd на несколько подпакетов.

Я вижу это как: 
greatd - Основной сервис (бэкенд) 
greetd-fakegreet - Отладочная утилита для гриттеров
greetd-agreety - Гриттер agreety

Что мы имеем сейчас: 
1. Бэкенд и гриттер agreety запакованы вместе, из-за чего почти всегда в системе лежит лишний гриттер.
2. fakegreet вовсе не запакован.
3. Из-за пункта 1 в пакете greetd находится конфиг agreety, что будет мешать использовать другой гриттер из коробки. Всегда придётся сначала менять конфиги, что совсем не "юзер-френдли".

Что нужно сделать:
1. Вынести agreety и его конфиг в отдельный подпакет.
2. Запаковать fakegreet.
3. Паковать другие гриттеры со своими конфигами.

Что это даст в итоге:
Появится возможность паковать конфиги к каждому гриттеру отдельно.
Необходимый гриттер будет работать сразу после установки, без чтения документации и траты время на ручную настройки
Comment 1 Кирилл Уницаев 2025-03-08 23:48:42 MSK
Таск: https://packages.altlinux.org/ru/tasks/377408/

1. greetd больше не содержит в себе agreety
2. запакован fakegreet

После долгих экспериментов получилась такая интересная структура 

===
/etc/greetd/
├── config.toml -> /etc/alternatives/links/|etc|greetd|config.toml
└── greeters
    ├── agreety.toml
    ├── gtkgreet.toml
    └── regreet.toml
===

теперь конфиги используют альтернативы 
плюсы:
1. никаких конфликтов 
2. каждый гриттер пакуется со своим конфигом
3. использование нужного гриттера из коробки
4. удобная настройка, например, через альтератор
Comment 2 Кирилл Уницаев 2025-03-08 23:55:47 MSK
Забыл упомянуть.

greetd теперь зависит от greetd-greeter.

greetd-greeter - виртуальный пакет, предоставляемый всеми гриттерами.

ВАЖНО: благодаря этому greetd не сломается после отделения agreety, а просто подтянет его! 
В системе всегда будет установлен хотя бы 1 гриттер
Comment 3 Yuri N. Sedunov 2025-03-09 00:28:55 MSK
%define _pseudouser_home     %_var/empty

Как, минимум, sshd отвалится, если %_var/empty будет принадлежать _greeter'у.
Comment 4 Кирилл Уницаев 2025-03-09 02:54:49 MSK
(Ответ для Yuri N. Sedunov на комментарий #3)
> %define _pseudouser_home     %_var/empty
> 
> Как, минимум, sshd отвалится, если %_var/empty будет принадлежать _greeter'у.

У меня всё работало, но замечание хорошее.
Как насчёт %_localstatedir/greetd?
Comment 5 Yuri N. Sedunov 2025-03-09 03:47:59 MSK
(Ответ для Кирилл Уницаев на комментарий #4)

> Как насчёт %_localstatedir/greetd?
Наверное.

Есть готовые гритеры со своими конфигами, хорошо бы их и проверить с новой сборкой.

Например:
/etc/phrog/greetd-config.toml
----------------------------------
# This is a greetd config.toml preconfigured to run phrog.
# It's intended to be used with phrog.service
# But you can also use it directly by running greetd --config=/etc/phrog/greetd-config.toml

[terminal]
vt = 1

[default_session]
command = "/usr/libexec/phrog-greetd-session"
user = "greetd"


/usr/lib/sysusers.d/cosmic-greeter.conf
-----------------------------------------
#Type Name           ID GECOS                    Home directory           Shell
u     cosmic-greeter -  "Cosmic Greeter Account" /var/lib/cosmic-greeter  -
m     cosmic-greeter video
Comment 6 Кирилл Уницаев 2025-03-09 10:02:16 MSK
(Ответ для Yuri N. Sedunov на комментарий #5)
> ...
> Наверное.
> 
> Есть готовые гритеры со своими конфигами, хорошо бы их и проверить с новой
> сборкой.
> 
> Например:
> /etc/phrog/greetd-config.toml
> ----------------------------------
> # This is a greetd config.toml preconfigured to run phrog.
> # It's intended to be used with phrog.service
> # But you can also use it directly by running greetd
> --config=/etc/phrog/greetd-config.toml
> 
> [terminal]
> vt = 1
> 
> [default_session]
> command = "/usr/libexec/phrog-greetd-session"
> user = "greetd"

Почему пользователь указан без _? (_greetd)
> 
> /usr/lib/sysusers.d/cosmic-greeter.conf
> -----------------------------------------
> #Type Name           ID GECOS                    Home directory          
> Shell
> u     cosmic-greeter -  "Cosmic Greeter Account" /var/lib/cosmic-greeter  -
> m     cosmic-greeter video
Comment 7 Кирилл Уницаев 2025-03-09 10:54:14 MSK
(Ответ для Yuri N. Sedunov на комментарий #5)
> (Ответ для Кирилл Уницаев на комментарий #4)
> 
> > Как насчёт %_localstatedir/greetd?
> Наверное.
Думаю, стоит попробовать.
> Есть готовые гритеры со своими конфигами, хорошо бы их и проверить с новой
> сборкой.
> 
> Например:
> /etc/phrog/greetd-config.toml
Он запускается через отдельный сервис с точным указанием пути к конфигу, так что на него обновление почти не повлияло.
> 
> /usr/lib/sysusers.d/cosmic-greeter.conf
Как его запустить я не совсем понял. 

Единственное что точно надо, это добавить в эти пакеты провайд на greetd-greeter
Comment 8 Кирилл Уницаев 2025-03-11 15:44:07 MSK
#377408 EPERM

Изменений много, жду апрува от текущих мантейнеров
Comment 9 Yuri N. Sedunov 2025-03-11 16:00:52 MSK
(Ответ для Кирилл Уницаев на комментарий #8)
> #377408 EPERM

Все гритеры работают?
Comment 10 Кирилл Уницаев 2025-03-11 16:31:20 MSK
(Ответ для Yuri N. Sedunov на комментарий #9)
> (Ответ для Кирилл Уницаев на комментарий #8)
> > #377408 EPERM
> 
> Все гритеры работают?

Да
Comment 11 Anton Farygin 2025-03-18 18:24:25 MSK
Заапрувил то, на что у меня были права.
Comment 12 Кирилл Уницаев 2025-03-25 15:54:55 MSK
ПИНГ

aris@, остались только вы.
Comment 13 Руслан Вишталмагомедов 2025-03-26 13:03:09 MSK
Пакет: phrog-0.45.0-alt0.5.x86_64

Не запускается с дефолтным пользователем (user = "greetd")

Шаги воспроизведения:
1. # apt-get install phrog
2. # systemctl disable --now gdm sddm lightdm
3. # systemctl enable --now phrog

systemd сервис запускает команду greetd --config=/etc/phrog/greetd-config.toml
При ручном запуске получаю ошибку:
error: configured default session user 'greetd' not found

Решается заменой пользователя на _greeter в файле /etc/phrog/greetd-config.toml

Стоит завести отдельный баг на phrog? Просто увидел, что в этом багрепорте также упоминается дефолтный конфиг для phrog, поэтому решил написать сюда
Comment 14 Кирилл Уницаев 2025-03-26 13:07:19 MSK
(Ответ для Руслан Вишталмагомедов на комментарий #13)
> Пакет: phrog-0.45.0-alt0.5.x86_64
> 
> Не запускается с дефолтным пользователем (user = "greetd")
> 
> Шаги воспроизведения:
> 1. # apt-get install phrog
> 2. # systemctl disable --now gdm sddm lightdm
> 3. # systemctl enable --now phrog
> 
> systemd сервис запускает команду greetd
> --config=/etc/phrog/greetd-config.toml
> При ручном запуске получаю ошибку:
> error: configured default session user 'greetd' not found
> 
> Решается заменой пользователя на _greeter в файле
> /etc/phrog/greetd-config.toml
> 
> Стоит завести отдельный баг на phrog? Просто увидел, что в этом багрепорте
> также упоминается дефолтный конфиг для phrog, поэтому решил написать сюда

Я могу починить это в таске 377408, но это большой таск, я не знаю когда он попадёт в Сизиф
Comment 15 Yuri N. Sedunov 2025-03-26 13:10:19 MSK
(Ответ для Руслан Вишталмагомедов на комментарий #13)
> Пакет: phrog-0.45.0-alt0.5.x86_64
> 
> Не запускается с дефолтным пользователем (user = "greetd")
...
Проверьте таск 377408, пожалуйста.
Comment 16 Кирилл Уницаев 2025-03-26 13:14:05 MSK
(Ответ для Yuri N. Sedunov на комментарий #15)
> (Ответ для Руслан Вишталмагомедов на комментарий #13)
> > Пакет: phrog-0.45.0-alt0.5.x86_64
> > 
> > Не запускается с дефолтным пользователем (user = "greetd")
> ...
> Проверьте таск 377408, пожалуйста.

Сейчас это и в новом не работает, не заметил эту ошибку, у меня присутствуют пользователи с обеими именами, удалил лишнего и всё упало. 
Уже чиню!
Comment 17 Кирилл Уницаев 2025-03-26 16:03:25 MSK
(Ответ для Руслан Вишталмагомедов на комментарий #13)
> Пакет: phrog-0.45.0-alt0.5.x86_64
> 
> Не запускается с дефолтным пользователем (user = "greetd")
> 
> Шаги воспроизведения:
> 1. # apt-get install phrog
> 2. # systemctl disable --now gdm sddm lightdm
> 3. # systemctl enable --now phrog
> 
> systemd сервис запускает команду greetd
> --config=/etc/phrog/greetd-config.toml
> При ручном запуске получаю ошибку:
> error: configured default session user 'greetd' not found
> 
> Решается заменой пользователя на _greeter в файле
> /etc/phrog/greetd-config.toml
> 
> Стоит завести отдельный баг на phrog? Просто увидел, что в этом багрепорте
> также упоминается дефолтный конфиг для phrog, поэтому решил написать сюда

Исправил в 377408
phrog-0.45.0-alt0.5.1.rpm
Comment 18 Антон Мидюков 2025-04-27 20:38:54 MSK
(Ответ для Кирилл Уницаев на комментарий #17)
> (Ответ для Руслан Вишталмагомедов на комментарий #13)
> > Пакет: phrog-0.45.0-alt0.5.x86_64
> > 
> > Не запускается с дефолтным пользователем (user = "greetd")
> > 
> > Шаги воспроизведения:
> > 1. # apt-get install phrog
> > 2. # systemctl disable --now gdm sddm lightdm
> > 3. # systemctl enable --now phrog
> > 
> > systemd сервис запускает команду greetd
> > --config=/etc/phrog/greetd-config.toml
> > При ручном запуске получаю ошибку:
> > error: configured default session user 'greetd' not found
> > 
> > Решается заменой пользователя на _greeter в файле
> > /etc/phrog/greetd-config.toml
> > 
> > Стоит завести отдельный баг на phrog? Просто увидел, что в этом багрепорте
> > также упоминается дефолтный конфиг для phrog, поэтому решил написать сюда
> 
> Исправил в 377408
> phrog-0.45.0-alt0.5.1.rpm

Я сегодня phrog проверил. Работает. Когда уже аппрув будет?
Comment 19 Yuri N. Sedunov 2025-04-28 00:08:21 MSK
(Ответ для Антон Мидюков на комментарий #18)

> Я сегодня phrog проверил. Работает.

Не может быть!

> Когда уже аппрув будет?

Не нужен вам аппрув. Удалите cosmic-greeter, phrog и phoc из задания. Они уже готовы.
Comment 20 Yuri N. Sedunov 2025-04-28 09:27:30 MSK
Фиксик, не тормози.
Comment 21 Кирилл Уницаев 2025-04-28 15:53:36 MSK
377408 - DONE
Comment 22 Yuri N. Sedunov 2025-05-31 18:06:03 MSK
Паршивый вышел greetd:
_greeter:x:971:934:greetd greeter user:/var/empty:/dev/null
                                       ^^^^^^^^^^^
Comment 23 Кирилл Уницаев 2025-05-31 20:27:34 MSK
(Ответ для Yuri N. Sedunov на комментарий #22)
> Паршивый вышел greetd:
> _greeter:x:971:934:greetd greeter user:/var/empty:/dev/null
>                                        ^^^^^^^^^^^

Юзера я конечно не менял, но о проблеме уже знаю :)

Правильно ли я понимаю, что исправление нужно только для новых систем?

В таком случае можно просто сменить HOME в спеке и не думать о смене каталога для существующего пользователя.

Как насчёт /var/lib/greeter ?
Comment 24 Yuri N. Sedunov 2025-05-31 20:37:00 MSK
(Ответ для Кирилл Уницаев на комментарий #23)
> (Ответ для Yuri N. Sedunov на комментарий #22)
> > Паршивый вышел greetd:
> > _greeter:x:971:934:greetd greeter user:/var/empty:/dev/null
> >                                        ^^^^^^^^^^^
> 
> Юзера я конечно не менял, но о проблеме уже знаю :)
> 
> Правильно ли я понимаю, что исправление нужно только для новых систем?

Разумеется, нет. Придется тебе триггеры писать для уже существующих установок.

> 
> В таком случае можно просто сменить HOME в спеке и не думать о смене
> каталога для существующего пользователя.
> 
> Как насчёт /var/lib/greeter ?

А чо не %_localstatedir/greetd, -- как обсуждалось выше в #5?
И почему не было сделано сразу?
Comment 25 Кирилл Уницаев 2025-05-31 20:44:38 MSK
(Ответ для Yuri N. Sedunov на комментарий #24)
> (Ответ для Кирилл Уницаев на комментарий #23)
> > (Ответ для Yuri N. Sedunov на комментарий #22)
> > > Паршивый вышел greetd:
> > > _greeter:x:971:934:greetd greeter user:/var/empty:/dev/null
> > >                                        ^^^^^^^^^^^
> > 
> > Юзера я конечно не менял, но о проблеме уже знаю :)
> > 
> > Правильно ли я понимаю, что исправление нужно только для новых систем?
> 
> Разумеется, нет. Придется тебе триггеры писать для уже существующих
> установок.
> 
Надо было добавить в post удаление юзера, если он есть 

И переходить уже на sysusers...
Comment 26 Кирилл Уницаев 2025-06-01 00:09:23 MSK
(Ответ для Yuri N. Sedunov на комментарий #24)
> Разумеется, нет. Придется тебе триггеры писать для уже существующих
> установок.

https://packages.altlinux.org/ru/tasks/386031/
ok?
Comment 27 Yuri N. Sedunov 2025-06-01 09:44:37 MSK
(Ответ для Кирилл Уницаев на комментарий #26)
> (Ответ для Yuri N. Sedunov на комментарий #24)
> > Разумеется, нет. Придется тебе триггеры писать для уже существующих
> > установок.
> 
> https://packages.altlinux.org/ru/tasks/386031/
> ok?

greetd	rider antohami @everybody

Хозяева пакета посмотрят и скажут тебе ok или нет.
Comment 28 Vladimir Romanov 2025-06-01 15:09:59 MSK
(Ответ для Yuri N. Sedunov на комментарий #27)
> (Ответ для Кирилл Уницаев на комментарий #26)
> > (Ответ для Yuri N. Sedunov на комментарий #24)
> > > Разумеется, нет. Придется тебе триггеры писать для уже существующих
> > > установок.
> > 
> > https://packages.altlinux.org/ru/tasks/386031/
> > ok?
> 
> greetd	rider antohami @everybody
> 
> Хозяева пакета посмотрят и скажут тебе ok или нет.

Не хозяин, но... Теперь переопределение настроек для phrog через gsettings работает. Да и спама в journalctl нет о невозможности создания кеша при запуске phrog.
Comment 29 Кирилл Уницаев 2025-06-01 15:11:59 MSK
386031 - DONE