Describe the bug
Calling org.kde.PlasmaShell.wallpaper(uint) via D-Bus while the wallpaper configuration dialog is open and switching plugin types causes plasmashell to abort with SIGABRT. Since kde-material-you-colors polls this method every ~1 second by default, simply opening the wallpaper settings and changing the wallpaper type kills the desktop.
The crash originates in plasma-workspace/shell/shellcorona.cpp (ShellCorona::wallpaper): when the config dialog is mid-switch between plugin types, config->value(itemName) returns an invalid QVariant(). This gets inserted into the QVariantMap sent over D-Bus. QDBusMarshaller cannot serialize a null QDBusVariant, triggering a libdbus assertion failure in dbus_message_iter_close_container() which aborts plasmashell.
To Reproduce
- Start kde-material-you-colors with default settings (no
--screenshot-only-mode)
- Right-click desktop → Configure Desktop and Wallpaper
- Change wallpaper type (e.g. from "Picture of the Day" to "Image")
- plasmashell crashes with SIGABRT within 1 second
Expected behavior
The D-Bus method should either return valid data or a proper D-Bus error — not crash plasmashell.
Terminal output (full log)
[I] main: main: ###### STARTED NEW SESSION v2.2.0 ######
[D] main: main: Installed in /home/user/.../kde_material_you_colors
[D] config: eval_conf: Config "on_change_hook": empty, using fallback: None
[D] config: eval_conf: Config "color": empty, using fallback: None
[D] config: eval_conf: Config "custom_colors_list": empty, using fallback: None
[D] config: eval_conf: Config "darker_window_list": empty, using fallback: None
[D] main: main: {'light': False, 'file': None, 'monitor': 0, 'ncolor': 0, 'iconslight': 'Fluent', 'iconsdark': 'Fluent-dark', 'pywal': True, 'pywal_light': False, 'light_blend_multiplier': 1, 'dark_blend_multiplier': 1, 'on_change_hook': None, 'sierra_breeze_buttons_color': False, 'disable_konsole': False, 'titlebar_opacity': 100, 'titlebar_opacity_dark': 100, 'toolbar_opacity': 100, 'toolbar_opacity_dark': 100, 'konsole_opacity': 100, 'konsole_opacity_dark': 100, 'konsole_blur': True, 'color': None, 'klassy_windeco_outline': False, 'titlebar_opacity_override': False, 'custom_colors_list': None, 'darker_window_list': None, 'use_startup_delay': False, 'startup_delay': 0, 'plasma_follows_scheme': False, 'pywal_follows_scheme': False, 'main_loop_delay': 1.0, 'screenshot_delay': 900.0, 'once_after_change': False, 'pause_mode': False, 'screenshot_only_mode': False, 'scheme_variant': 8, 'chroma_multiplier': 2.2, 'tone_multiplier': 1.0, 'frame_contrast': 0.2, 'contrast_level': 0.0, 'qdbus_executable': None, 'manual_fetch': False, 'fetch_colors': False, 'spec_version': '2025', 'kde_rounded_corners_effect_outline': False}
[I] main: main: Wallpaper: org.kde.potd (image): /home/user/.cache/plasma_engine_potd/bing:3840:2160
[I] m3_scheme_utils: get_color_schemes: Best colors: 0:#dc6354 1:#346eac 2:#3a232b 3:#5b5c83 4:#f49038 5:#341b37 6:#dcc69f
[I] m3_scheme_utils: get_color_schemes: Using seed: 0:#dc6354
[I] plasma_utils: apply_color_schemes: MaterialYouDark color scheme applied
[I] konsole_utils: get_default_profile: Found default profile 'Profile 1.profile'
[D] konsole_utils: reload_profile: Konsole services (windows) running: 1
[W] konsole_utils: reload_profile: Konsole profile switch skipped (access denied or unavailable): ...
[I] pywal_utils: apply_schemes: Setting pywal colors...
[W] wallpaper_utils: get_wallpaper_config: Wallpaper DBus API error: Remote peer disconnected
[W] wallpaper_utils: reload: Could not get wallpaper config from D-Bus: Remote peer disconnected
[E] kwin_utils: get_desktop_window_id: Error running script with id 0: No such object path '/Scripting/Script0'
[E] wallpaper_utils: get_desktop_screenshot: org.freedesktop.DBus.Error.UnknownObject: No such object path '/Scripting/Script0'
[E] wallpaper_utils: screenshot: org.freedesktop.DBus.Error.UnknownObject: No such object path '/Scripting/Script0'
[E] main: main: Could not get wallpaper org.freedesktop.DBus.Error.UnknownObject: No such object path '/Scripting/Script0'
The Remote peer disconnected line is the moment plasmashell died (SIGABRT). The subsequent KWin errors are secondary — the screenshot fallback also fails because KWin's scripting interface is temporarily unavailable after the crash.
coredumpctl backtrace (plasmashell)
Signal: 6 (ABRT)
#0 __pthread_kill_implementation (threadid=…, signo=6) at pthread_kill.c:44
#1 raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:27
#2 abort () at abort.c:81
#3 qt_message_fatal (…) at global/qlogging.cpp
#4 QDBusMarshaller::addBasicType (…)
#5 dbus_message_iter_close_container (libdbus-1.so.3)
Desktop (please complete the following information):
- Operating System: Arch Linux
- KDE Plasma Version: 6.3.5 (plasmashell 6.7.4)
- KDE Frameworks Version: 6.11
- Qt Version: 6.11.1
- Graphics Platform: Wayland
- kde-material-you-colors version: 2.2.0
Additional context
Describe the bug
Calling
org.kde.PlasmaShell.wallpaper(uint)via D-Bus while the wallpaper configuration dialog is open and switching plugin types causesplasmashellto abort withSIGABRT. Since kde-material-you-colors polls this method every ~1 second by default, simply opening the wallpaper settings and changing the wallpaper type kills the desktop.The crash originates in
plasma-workspace/shell/shellcorona.cpp(ShellCorona::wallpaper): when the config dialog is mid-switch between plugin types,config->value(itemName)returns an invalidQVariant(). This gets inserted into theQVariantMapsent over D-Bus.QDBusMarshallercannot serialize a nullQDBusVariant, triggering alibdbusassertion failure indbus_message_iter_close_container()which abortsplasmashell.To Reproduce
--screenshot-only-mode)Expected behavior
The D-Bus method should either return valid data or a proper D-Bus error — not crash plasmashell.
Terminal output (full log)
The
Remote peer disconnectedline is the moment plasmashell died (SIGABRT). The subsequent KWin errors are secondary — the screenshot fallback also fails because KWin's scripting interface is temporarily unavailable after the crash.coredumpctl backtrace (plasmashell)
Desktop (please complete the following information):
Additional context
--screenshot-only-modeworks fine as a workaround (skips the D-Bus wallpaper call entirely).plasma-workspace/shell/shellcorona.cppupstream.