ngraham added a comment.
Overall this is very nice! I have some inline comments, and two macro design comments: 1. You need to handle failure conditions for the remove, mkpath, copy, chown etc. operations. Thede functions all return false if they fail, so you can find out easily enough. There's nothing worse than an unhandled error, because then the operation will just fail silently, leaving the user confused. Even showing an ugly error dialog box would probably be better than nothing, though a KMessageWidget would be much nicer. 2. This should be considered a framework for optionally having the sync operation done automatically when selecting a new theme/icon set/font/etc. The feature is nice, but not very discoverable, and the better UX is to have new settings synced to SDDM automatically for the case where there's only one admin user account on the box. 3. We need to come up with a way for user-installed content from GHNS etc. to get synced. If detecting when it's installed in a non-system location is unfeasible, we should consider installing new content to a system location rather than in the user's homedir, either optionally of even by default. INLINE COMMENTS > sddmauthhelper.cpp:57 > + if (QFile::exists(destination)) { > + QFile::remove(destination); > + } Don't ignore the error if the removal fails > sddmauthhelper.cpp:60 > + > + QFile::copy(source, destination); > + const char* destinationConverted = destination.toLocal8Bit().data(); Don't ignore the error if the copy fails > sddmauthhelper.cpp:62 > + const char* destinationConverted = destination.toLocal8Bit().data(); > + if (chown(destinationConverted, sddmUser.userId().nativeId(), > sddmUser.groupId().nativeId())) { > + return; Don't ignore the error if the chown fails > sddmauthhelper.cpp:71 > + if (!sddmConfigLocation.exists()) { > + QDir().mkpath(sddmConfigLocation.path()); > + } Ditto for this and other `mkpath()` calls. Errors should be handled, even with something as simple as a dialog box saying, "Could not create <path>!" REPOSITORY R123 SDDM Configuration Panel (KCM) REVISION DETAIL https://phabricator.kde.org/D22191 To: filipf, #plasma, ngraham, davidedmundson, #vdg Cc: cfeck, GB_2, ndavis, plasma-devel, LeGast00n, jraleigh, fbampaloukas, ragreen, Pitel, ZrenBot, himcesjf, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart