SUMMARY On Plasma Mobile after few restarts plasmashell resets it's own configuration, adds new containment and looses the old containment. STEPS TO REPRODUCE 1. Start plasma mobile on pinephone, change wallpaper for example 2. Restart phone multiple times OBSERVED RESULT 3. Eventually the config will go in wrong state and wallpaper will be reset as well as launcher/shortcuts EXPECTED RESULT 3. Nothing happens to config, and launchers stay as-is
Example config before bug happens [Containments][23] Favorites=org.kde.phone.dialer.desktop,org.kde.phonebook.desktop,org.kde.mobile.angelfish.desktop,org.kde.mobile.qmlkonsole.desktop-0 ItemGeometriesVertical=Applet-24:0,0,360,113,0; MaxFavoriteCount=4 activityId=1bb207c6-7b0f-4d53-849e-2a5c359dc0b9 formfactor=0 immutability=1 lastScreen=0 location=0 plugin=org.kde.phone.homescreen wallpaperplugin=org.kde.image [Containments][23][Applets][24] immutability=1 plugin=org.kde.phone.krunner [Containments][23][ConfigDialog] DialogHeight=666 DialogWidth=360 [Containments][23][General] AppOrder=org.kde.phone.dialer.desktop,org.kde.phonebook.desktop,org.kde.mobile.angelfish.desktop,org.kde.mobile.qmlkonsole.desktop-0 [Containments][23][Wallpaper][org.kde.image][General] Image=file:///usr/share/wallpapers/logo_dark.jpg
Config after bug happens [Containments][25] AppOrder=org.kde.phone.dialer.desktop,org.kde.phonebook.desktop,org.kde.mobile.angelfish.desktop DesktopItems= Favorites=org.kde.phone.dialer.desktop,org.kde.phonebook.desktop,org.kde.mobile.angelfish.desktop MaxFavoriteCount=4 activityId=1bb207c6-7b0f-4d53-849e-2a5c359dc0b9 formfactor=0 immutability=1 lastScreen=0 location=0 plugin=org.kde.phone.homescreen wallpaperplugin=org.kde.image [Containments][25][General] AppOrder=org.kde.phone.dialer.desktop,org.kde.phonebook.desktop,org.kde.mobile.angelfish.desktop,org.kde.mobile.camera.desktop [Containments][25][Wallpaper][org.kde.image][General] Image=file:///usr/share/wallpapers/Next/contents/images/720x1440.png
Running on Plasma 5.21 based image, we see following in log, org.kde.plasma.phoneshell/contents/views/Desktop.qml:78: TypeError: Cannot read property 'availableScreenRect' of null which DavidE thought is interesting and that was "fixed" in, https://invent.kde.org/plasma/plasma-phone-components/-/commit/59297a25f316d772f0e7e18ee7ce29c703cd58c5 But according to DavidE, containment never should be null(?). This is pending investigation.
From another affected user's config what I noticed is, there is bunch of empty containment with no activityId assigned to it. This is after config was reset [Containments][16] AppOrder=org.kde.phone.dialer.desktop,org.kde.phonebook.desktop,org.kde.mobile.angelfish.desktop DesktopItems= Favorites=org.kde.phone.dialer.desktop,org.kde.phonebook.desktop,org.kde.mobile.angelfish.desktop MaxFavoriteCount=4 activityId=a8a6782c-c5aa-45b3-80b2-6b02da0d82c1 formfactor=0 immutability=1 lastScreen=0 location=0 plugin=org.kde.phone.homescreen wallpaperplugin=org.kde.image [Containments][16][General] AppOrder=org.kde.phone.dialer.desktop,org.kde.phonebook.desktop,org.kde.mobile.angelfish.desktop,org.kde.mobile.camera.desktop [Containments][16][Wallpaper][org.kde.image][General] Image=file:///usr/share/wallpapers/Next/contents/images/720x1440.png [Containments][3] activityId= formfactor=2 immutability=1 lastScreen=0 location=3 plugin=org.kde.phone.panel wallpaperplugin=org.kde.image [Containments][3][Applets][4] immutability=1 plugin=org.kde.plasma.notifications [Containments][3][Applets][4][Configuration] PreloadWeight=100 [Containments][3][Applets][5] immutability=1 plugin=org.kde.plasma.mediacontroller [Containments][3][Applets][5][Configuration] PreloadWeight=100 [Containments][6] activityId= formfactor=2 immutability=1 lastScreen=0 location=4 plugin=org.kde.phone.taskpanel wallpaperplugin=org.kde.image
And for same user as comment #5 config file before reset was this, [Containments][14] AppOrder=org.kde.phone.dialer.desktop,telegramdesktop.desktop-0,org.postmarketos.Megapixels.desktop-0,org.kde.mobile.angelfish.desktop DesktopItems= Favorites=org.kde.phone.dialer.desktop,telegramdesktop.desktop-0,org.postmarketos.Megapixels.desktop-0,org.kde.mobile.angelfish.desktop ItemGeometriesVertical=Applet-15:0,0,360,113,0; MaxFavoriteCount=4 activityId=a8a6782c-c5aa-45b3-80b2-6b02da0d82c1 formfactor=0 immutability=1 lastScreen=0 location=0 plugin=org.kde.phone.homescreen wallpaperplugin=org.kde.image [Containments][14][Applets][15] immutability=1 plugin=org.kde.phone.krunner [Containments][14][ConfigDialog] DialogHeight=666 DialogWidth=360 [Containments][14][General] AppOrder=org.kde.phone.dialer.desktop,org.kde.phonebook.desktop,org.kde.mobile.angelfish.desktop,org.kde.mobile.camera.desktop [Containments][14][Wallpaper][org.kde.image][General] Image=file:///home/lukasz/Downloads/Other stuff/backgroundphone.png [Containments][3] activityId= formfactor=2 immutability=1 lastScreen=0 location=3 plugin=org.kde.phone.panel wallpaperplugin=org.kde.image [Containments][3][Applets][4] immutability=1 plugin=org.kde.plasma.notifications [Containments][3][Applets][4][Configuration] PreloadWeight=100 [Containments][3][Applets][5] immutability=1 plugin=org.kde.plasma.mediacontroller [Containments][3][Applets][5][Configuration] PreloadWeight=100 [Containments][6] activityId= formfactor=2 immutability=1 lastScreen=0 location=4 plugin=org.kde.phone.taskpanel wallpaperplugin=org.kde.image
I am marking this as confirmed since I get reports about this at least twice a week in plasma mobile as well as pinephone channel.
This also might be potential duplicate of bug 427861, Although personally I doubt it because that bug report is mostly about user where screenId is not assigned correctly and config is not removed completely, assigning correct screenID fixes it for them.
I am starting to get more and more reports about this, so I am up-ing the severity of this bug report to VHI.
There is a possibility this is fixed by: https://codereview.qt-project.org/c/qt/qtwayland/+/347774 If we were hitting this it would have the symptoms listed. Lets assume it's a fix until we hear otherwise.
Git commit d5186701e27ad6f09f3944809cec2a25c5328026 by Bhushan Shah, on behalf of Vlad Zahorodnii. Committed on 11/05/2021 at 06:56. Pushed by apol into branch 'kde/5.15'. Client: Announce an output after receiving more complete state Output initialization is not atomic, meaning that the compositor may process a wl_output bind request in one event loop cycle, and the xdg_output_manager.get_xdg_output in another event loop cycle. This means that xdg_output properties may arrive in another wl_output done frame. Prior to xdg-output v3, that wasn't an issue because the compositor is required to send an xdg_output.done event after sending xdg_output properties. Starting with v3, the compositor may choose not to send an xdg_output.done event after sending xdg_output properties. Therefore, as is, QtWayland may announce an output with bad logical geometry or even worse without name assigned by the compositor. Unfortunately, that breaks applications such as plasmashell. Plasma uses output names as a criterion to determine what kind of contents should be displayed on a particular output. In order to fix the initialization sequence, this change makes every QWaylandScreen track processed events. After all required events have been received, the screen can be announced to the rest of Qt. Change-Id: If5da747edd7af277ec1364cbea105c6994f47402 Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit 69ea480f2e53ad4a5bbca78cde044eb8d4c48896) Original Ticket: https://codereview.qt-project.org/c/qt/qtwayland/+/347774 M +23 -9 src/client/qwaylandscreen.cpp M +8 -2 src/client/qwaylandscreen_p.h https://invent.kde.org/qt/qt/qtwayland/commit/d5186701e27ad6f09f3944809cec2a25c5328026
Git commit a6fb2a976ecd778e450afe89c180c8c748beb568 by Albert Astals Cid, on behalf of Vlad Zahorodnii. Committed on 03/03/2022 at 20:02. Pushed by aacid into branch 'kde/5.15'. Client: Announce an output after receiving more complete state Output initialization is not atomic, meaning that the compositor may process a wl_output bind request in one event loop cycle, and the xdg_output_manager.get_xdg_output in another event loop cycle. This means that xdg_output properties may arrive in another wl_output done frame. Prior to xdg-output v3, that wasn't an issue because the compositor is required to send an xdg_output.done event after sending xdg_output properties. Starting with v3, the compositor may choose not to send an xdg_output.done event after sending xdg_output properties. Therefore, as is, QtWayland may announce an output with bad logical geometry or even worse without name assigned by the compositor. Unfortunately, that breaks applications such as plasmashell. Plasma uses output names as a criterion to determine what kind of contents should be displayed on a particular output. In order to fix the initialization sequence, this change makes every QWaylandScreen track processed events. After all required events have been received, the screen can be announced to the rest of Qt. Change-Id: If5da747edd7af277ec1364cbea105c6994f47402 Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit 69ea480f2e53ad4a5bbca78cde044eb8d4c48896) Original Ticket: https://codereview.qt-project.org/c/qt/qtwayland/+/347774 M +23 -9 src/client/qwaylandscreen.cpp M +8 -2 src/client/qwaylandscreen_p.h https://invent.kde.org/qt/qt/qtwayland/commit/a6fb2a976ecd778e450afe89c180c8c748beb568