https://bugs.kde.org/show_bug.cgi?id=517898

            Bug ID: 517898
           Summary: Look-and-feel defaults file [KSplash] section is never
                    read — format mismatch with code
    Classification: Plasma
           Product: plasmashell
      Version First master
       Reported In:
          Platform: Ubuntu
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: Global Theme packages
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected]
  Target Milestone: 1.0

The [KSplash] section in look-and-feel theme contents/defaults files uses a
flat group name, but the code in libklookandfeel/klookandfeelmanager.cpp reads
it as a nested [ksplashrc][KSplash] config group. This means the Theme entry
under [KSplash] is silently ignored.

Code reference (klookandfeelmanager.cpp, save() method):

```
if (itemsToApply.testFlag(SplashScreen)) {
    group = KConfigGroup(conf, u"ksplashrc"_s);
    group = KConfigGroup(&group, u"KSplash"_s);
    QString splashScreen = (group.readEntry("Theme", QString()));
    if (!splashScreen.isEmpty()) {
        setSplashScreen(splashScreen);
    } else {
        setSplashScreen(packageId);
    }
}
```

The code navigates ksplashrc → KSplash as nested groups, which expects the
defaults file format [ksplashrc][KSplash]. However, the upstream Breeze themes
all use the flat format [KSplash]:

```
[KSplash]
Theme=org.kde.Breeze
```

This entry is never actually read. Breeze still works because the else fallback
calls setSplashScreen(packageId), which sets the splash theme to the package's
own plugin ID.

Impact: Any look-and-feel theme that wants to reference a different theme's
splash screen (e.g., a dark variant pointing to the main theme's splash) cannot
do so via the defaults file. The [KSplash] Theme=... value is dead config.

Additionally, the SplashScreen content flag is only set when the theme has its
own splashmainscript (Splash.qml):

This means the entire [KSplash] block is gated behind the theme having its own
splash content, even though the intent is to reference another theme's splash.

Steps to reproduce:

- Create a look-and-feel theme without its own contents/splash/Splash.qml
- Add [KSplash]\nTheme=org.kde.Breeze to its contents/defaults
- Apply the theme via System Settings → Global Theme
- Check ~/.config/ksplashrc — the KSplash theme is not updated
- Expected: The splash theme from defaults is applied to ksplashrc.

Actual: The [KSplash] entry is ignored due to both the format mismatch and the
SplashScreen flag gating.

Suggested fix: Either:

- Change the defaults file format to [ksplashrc][KSplash] in Breeze (matching
what the code reads), or
- Change the code to read [KSplash] as a flat group (matching the current
defaults files)
- And decouple the SplashScreen content flag from requiring splashmainscript
when the defaults file specifies a Theme entry.

Affects: Plasma 6.x (verified against current master branch of
plasma-workspace)

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to