sddm icon indicating copy to clipboard operation
sddm copied to clipboard

Any suggestions for SDDM developer setup?

Open ratijas opened this issue 3 years ago • 1 comments

Hi, I am a KDE developer, and I am working on Breeze theme for SDDM.

Any advice on setting up a developer environment for working on SDDM themes and SDDM itself? Maybe there are some scripts available? How do I test an SDDM theme on real login screen — without overriding the one provided by my system's package manager?

I know I can run greeter in test mode with sddm-greeter --test-mode --theme ~/kde/usr/share/sddm/themes/breeze command; but it doesn't let me test everything. For example, it neither accepts nor rejects a password — it just disables (as in enabled: false) the whole interface and kinda hangs in that state. And that issue aside, there are other issues with non-global installation as well.

Currently all my stuff built from scratch is installed in ~/kde/usr. For example, the Breeze theme for SDDM is located in /home/ratijas/kde/usr/share/sddm/themes/breeze/. But the problem is, that's within my home directory, and thus is protected from read/write access for services not running as root. So, when I changed ThemeDir=/home/ratijas/kde/usr/share/sddm/themes in /etc/sddm.conf.d/kde_settings.conf file, next time I rebooted I got this cryptic error message on a default theme instead:

The current theme can not be loaded due to the errors below, please select another theme

file:///home/ratijas/kde/usr/share/sddm/themes/breeze/Main.qml: No such file or directory

I double checked, but the file actually exists. To the best of my understanding, this is actually caused by the underlying "permission denied" error from trying to open a file within protected directory. SDDM itself runs as root, but its greeter is actually launched under special sddm user. I logged in as sudo -u sddm /bin/sh on the terminal, and obviously wasn't able to list my /home/ratijas directory due to permissions.

The whole "theme" is just a bunch of runtime-loaded QML files and artworks, so just copy-pasting it into some system-wide accessible directory like /opt/sddm seemed to fix the permissions issue. But now that requires manual intervention every time.

How do you people develop this thing?

ratijas avatar Feb 05 '22 20:02 ratijas

What I've been doing and what I can in no way recommend of doing is to install in /usr, as it's where it's designed to be placed so all files and such are found by the system at startup.

If you are working on themes you shouldn't need to rebuild sddm, although I see the need to gave all projects in development builds.

Sorry for my late reply and good luck!

aleixpol avatar Mar 02 '22 13:03 aleixpol