#282 Kinoite: Fix for custom SDDM themes and workarounds
Opened by siosm. Modified

SDDM currently only supports loading themes from a single directory and the default is /usr/share/sddm/themes/, which is read only on Fedora Kinoite.

See:

  • Default SDDM config value: https://github.com/sddm/sddm/blob/develop/data/man/sddm.conf.rst.in#L79
  • SDDM issue for loading themes from multiple directories: https://github.com/sddm/sddm/issues/1561
  • KDE bug: https://bugs.kde.org/show_bug.cgi?id=454509

There are currently multiple workarounds:

  • https://discussion.fedoraproject.org/t/sddm-themeing-or-lack-thereof/32695
  • https://discussion.fedoraproject.org/t/another-way-to-customize-sddm-under-kinoite/37773

Metadata Update from @siosm:
- Issue tagged with: experience, kinoite, need-work

Metadata Update from @siosm:
- Issue marked as blocking: #112

a simpler workaround

https://pagure.io/fedora-kde/SIG/issue/534

We can not do this workaround: https://github.com/sddm/sddm/issues/1561#issuecomment-2187014632

So, why can't we do https://pagure.io/fedora-kde/SIG/issue/534 ?

If we change the default config to point to /var/lib/sddm/themes, then we need all the defaults themes to be there as well.

Say we copy them there on first boot, then appart from the fact that this duplicate files, this will create issues on updates. If the user modifies any of the config / files that are part of the theme, then those modifications are lost on updates as we re-copy files again.

If we don't update the themes on updates then users will likely face subtle bugs as their theme go outdated and mis-match the version of other packages.

We can not install the themes files directly on /var either as this is local state, that is not available at compose time for Atomic variants and overall in conflict with the policy that all distribution content should live in /usr.

Moreover, we want the defaults themes to be read-only and automatically updated with the rest of the system to make sure that there is always a working fallback if something goes wrong.

(Continuing here, sorry for not searching for duplicate issues first).

The discussion is continuing on the SDDM Github. But a few possibly problematic things that come to my mind:

1.

sddm-kcm seems to use the config file. My original workaround, (while not possible to use by default due to update issues) made the KCM download themes into /var/usrlocal/share/sddm/themes. If there are multiple directories it reads from, an additional config may be needed to set what the KCM writes to, as this may not be default on non-atomic desktops.

2.

The specific process of changing a preinstalled theme. For example changing the background, would require to copy the theme to the mutable dir and then apply the changes.

If this works how I think it does, by changing the theme. If it already works by copying it first, this would be easier to do.

So, why can't we do https://pagure.io/fedora-kde/SIG/issue/534 ?

The instructions there nearly work, with some tweaks:

  • Had to add a [Theme] section like this:
$ cat /etc/sddm.conf.d/local-themes.conf
[Theme]
ThemeDir=/var/lib/sddm/themes/
  • The themes need to end up in /var/lib/sddm/themes directly, not in /var/lib/sddm/themes/themes (for testing I renamed 01 to 02):
$ ls /var/lib/sddm/themes/
02-breeze-fedora  breeze

I'm now able to edit theme.conf and override the background, e.g. here is how my theme ended up looking like:

cat /var/lib/sddm/themes/02-breeze-fedora/theme.conf
[General]
showlogo=shown
showClock=true
logo=/usr/share/pixmaps/fedora_whitelogo.svg
type=image
color=#1d99f3
fontSize=10
background=/usr/share/wallpapers/Elarun/contents/images/2560x1600.png
needsFullUserModel=false

Then sudo systemctl restart sddm.

I hope the above will be useful as a workaround for others looking to change the theme in Kinoite until a proper solution is implemented in the package itself.

This will be obsolete with the move to Plasma Login Manager in Fedora 44: https://fedoraproject.org/wiki/Changes/PlasmaLoginManager

Metadata Update from @siosm:
- Issue set to the milestone: Fedora Linux 44

Metadata Update from @siosm:
- Issue assigned to siosm

Metadata