Улучшения механизма конфигурации sddm-темы
Текущий механизм
В данный момент при включении механизм следующий:
-
Делается полный бэкап
/etc/sddm.confв/var/lib/mos-auth/sddm.conf.mos-auth-bak. -
Делается бэкап настроек
[Theme] Current,[Users] MinimumUid,[Users] MaximumUidв/var/lib/mos-auth/mos-auth-old-settings. -
Эти параметры записываются новыми значениями в
/etc/sddm.conf.
4*. При изменении значений в sddm-kcm, он переносит эти значения (текущую тему и диапазон UID) в /etc/sddm.conf.d/kde_settings.conf.
При выключении:
-
Просматриваются файлы
/etc/sddm.confи/etc/sddm.conf.d/kde_settings.confна наличие параметров[Theme] Current,[Users] MinimumUid,[Users] MaximumUid. -
Для каждого найденного параметра идет попытка восстановления значения из
/var/lib/mos-auth/mos-auth-old-settings. -
Либо просто удаляется параметр из
/etc/sddm.confи/etc/sddm.conf.d/kde_settings.conf, если нет сохраненного значения в/var/lib/mos-auth/mos-auth-old-settings. -
Удаляется
/var/lib/mos-auth/mos-auth-old-settings.
Недостатки текущего механизма
-
Значения из
/etc/sddm.confавтоматически переносятся в/etc/kde_settings.confпри использованииsddm-kcm. -
Сам факт использования
/etc/sddm.conf- нерекомендуемая практика. -
Как следствие, непрозрачная конфигурация - т.е просто смотря на файлы в
/etc/sddm.confи/etc/sddm.conf.d/*- неочевидно, какие параметры относятся кmos-auth, а какие нет. И соответственно, их легко перезаписать другими и потерять оригинальные значения изmos-auth.
Предполагаемый новый механизм
Можно реализовать настройки в виде drop-in конфигурации в /etc/sddm.conf.d/80-mos-auth.conf. Таким образом, прозрачно понятно, какие настройки относятся к mos-auth. Необходимости редактировать этот файл у пользователя не будет, а переопределения будут задаваться в более приоритетных файлах.
Однако, тогда необходимо иметь дело с проблемами переопределяющих файлов:
-
/etc/sddm.conf- необходимо также, как и сейчас, сохранять текущие значения из него в бекап-файл, а после удалять параметры из/etc/sddm.conf. -
/etc/sddm.conf.d/kde_settings.conf- аналогично, видимо нужно делать сохранение в отдельный бекап-файл, а после удалять параметры из/etc/sddm.conf.d/kde_settings.conf. -
Любой более приоритетный файл пользователя в
/etc/sddm.conf.d- вероятно пользователь тогда знает, что он делает, нужно выдать ошибку при попытке активации черезmos-auth-config enableи оповестить об этом пользователя, что активацииmos-authмешает более приоритетный файл в/etc/sddm.conf.d.
Одной из проблем также является тот факт, что sddm-kcm при любом изменении в сохранит все значения формы в файл /etc/sddm.conf.d/kde_settings.conf.
Таким образом, при деактивации mos-auth нужно просматривать этот файл и удалять из него те значения, которые совпадают с mos-auth, т.е
'Current=mos-auth'
'MaximumUid=1000000000'
'MinimumUid=10000000'
Однако, не трогать их, если они такими были ДО активации mos-auth (т.е пользователь их поставил намеренно еще до активации mos-auth).
Всегда восстанавливать значения из бекап-файла для /etc/sddm.conf.d/kde_settings.conf вероятно не стоит, поскольку уже при активированной mos-auth, пользователь мог менять через sddm-kcm диапазон UID и этот диапазон можно сохранить после деактивации mos-auth, даже если до активации этот диапазон был иным.
Текущие выводы
Возможно, стоит повременить с этим улучшением, пока не определится статус улучшений sddm-kcm (https://hub.mos.ru/mos/dev-tasks/features/-/issues/66).
Например, если sddm-kcm будет сохранять только переопределяющие настройки, тогда при деактивации mos-auth не придется менять значения в этом файле, достаточно будет только удаления /etc/sddm.conf.d/80-mos-auth.conf для деактивации mos-auth.