Bug 460943 - Can't remove unusable plymouth theme
Summary: Can't remove unusable plymouth theme
Status: CONFIRMED
Alias: None
Product: systemsettings
Classification: Applications
Component: kcm_plymouth (other bugs)
Version First Reported In: 5.26.1
Platform: Neon Linux
: NOR normal
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-10-24 13:42 UTC by Malte S. Stretz
Modified: 2022-10-25 16:43 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments
screenshot (117.28 KB, image/png)
2022-10-24 13:42 UTC, Malte S. Stretz
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Malte S. Stretz 2022-10-24 13:42:39 UTC
Created attachment 153166 [details]
screenshot

SUMMARY

Once upon a time I tried to install the Plymouth Theme from here https://www.pling.com/p/1385541 and it never really worked. Since then I have an entry plymouthgrub_banksy in the KCM which I can't remove either: When I hit the Trash button the user credentials are requested an then nothing happens at all.

I guess this theme is somehow malformed but it should still be possible to remove it. Or at least an error message should pop up which tells me what is wrong here.

anna@Anna-ThinkPad-X260:~$ find .local/ .config/ -name '*banksy*' | xargs ls -l
-rw-rw-r-- 1 anna anna 6680860 Sep 14  2020 .local/share/kplymouththemeinstaller/plymouthgrub_banksy.tar.gz
-rw-rw-r-- 1 anna anna  679082 Sep 14  2020 .local/share/kplymouththemeinstaller/plymouthgrub_banksy.tar.gz.png



STEPS TO REPRODUCE
1. Somehow get into the same state as this system
2. Go to the plymouth KCM
3. Hover over the bad theme
4. Hit the appearing Trash button
5. Enter user password

OBSERVED RESULT
The theme stays around.

EXPECTED RESULT
The theme should be gone.

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: 22.04
(available in About System)
KDE Plasma Version: 5.26.1
KDE Frameworks Version: 5.99.0
Qt Version: 5.15.6

ADDITIONAL INFORMATION
Comment 1 Nate Graham 2022-10-24 18:55:19 UTC
Can you run `systemsettings` in a terminal window, then try again, then copy and paste any output in the terminal window into a comment here? Thanks!
Comment 2 Malte S. Stretz 2022-10-25 09:25:58 UTC
Below is the output. I added comments within the output to show what I was doing.

This persists for a while now (I guess since 2020 since this theme never worked) and is not Wayland related.

----8<----

# env LC_ALL=en_US systemsettings
QSocketNotifier: Can only be used with threads started with QThread
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/ScrollablePage.qml:203:9: QML MouseArea: Binding loop detected for property "width"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/ScrollablePage.qml:203:9: QML MouseArea: Binding loop detected for property "width"
kf.activitiesstats: [Error at ResultSetPrivate::initQuery]:  QSqlError("11", "Der Datensatz konnte nicht abgeholt werden", "database disk image is malformed")
kf.activitiesstats: [Error at ResultSetPrivate::initQuery]:  QSqlError("11", "Der Datensatz konnte nicht abgeholt werden", "database disk image is malformed")
QQmlEngine::setContextForObject(): Object already has a QQmlContext
file:///usr/share/kpackage/kcms/kcm_landingpage/contents/ui/main.qml:212:13: Unable to assign [undefined] to QQuickItem*
qt.qpa.wayland: Wayland does not support QWindow::requestActivate()
# Typing "plymouth" in the search box:
xkbcommon: ERROR: /usr/share/X11/locale/iso8859-1/Compose:39:34: string literal is not a valid UTF-8 string
xkbcommon: ERROR: /usr/share/X11/locale/iso8859-1/Compose:40:29: string literal is not a valid UTF-8 string
xkbcommon: ERROR: /usr/share/X11/locale/iso8859-1/Compose:41:29: string literal is not a valid UTF-8 string
xkbcommon: ERROR: /usr/share/X11/locale/iso8859-1/Compose:42:29: string literal is not a valid UTF-8 string
xkbcommon: ERROR: /usr/share/X11/locale/iso8859-1/Compose:43:29: string literal is not a valid UTF-8 string
xkbcommon: ERROR: /usr/share/X11/locale/iso8859-1/Compose:44:27: string literal is not a valid UTF-8 string
xkbcommon: ERROR: /usr/share/X11/locale/iso8859-1/Compose:45:27: string literal is not a valid UTF-8 string
xkbcommon: ERROR: /usr/share/X11/locale/iso8859-1/Compose:46:27: string literal is not a valid UTF-8 string
xkbcommon: ERROR: /usr/share/X11/locale/iso8859-1/Compose:47:27: string literal is not a valid UTF-8 string
xkbcommon: ERROR: /usr/share/X11/locale/iso8859-1/Compose:48:29: string literal is not a valid UTF-8 string
xkbcommon: ERROR: /usr/share/X11/locale/iso8859-1/Compose:49:29: string literal is not a valid UTF-8 string
xkbcommon: ERROR: /usr/share/X11/locale/iso8859-1/Compose:49:29: too many errors
xkbcommon: ERROR: /usr/share/X11/locale/iso8859-1/Compose:49:29: failed to parse file
qt.xkb.compose: failed to create compose table
QLayout::removeWidget: Cannot remove a null widget.
# Click on the plymout KCM:
QQmlEngine::setContextForObject(): Object already has a QQmlContext
"Could not convert argument 0 at"
         "onChangedEntriesChanged@file:///usr/share/kpackage/kcms/kcm_plymouth/contents/ui/main.qml:75"
"Passing incompatible arguments to C++ functions from JavaScript is dangerous and deprecated."
"This will throw a JavaScript TypeError in future releases of Qt!"
file:///usr/lib/x86_64-linux-gnu/qt5/qml/org/kde/kirigami.2/PlaceholderMessage.qml:239:5: QML Heading: Binding loop detected for property "verticalAlignment"
# Click on the Trash icon; the following message appears after the password was accepted:
file:///usr/share/kpackage/kcms/kcm_plymouth/contents/ui/main.qml:88: ReferenceError: message is not defined
Comment 3 Malte S. Stretz 2022-10-25 09:32:10 UTC
I guess my assumption that an error should appear here is right since the code in line 88 says:

    Connections {
        target: kcm
//...
        function onShowErrorMessage() {
            infoLabel.type = Kirigami.MessageType.Error;
            infoLabel.text = message;
            infoLabel.visible = true;
        }
    }
Comment 4 Malte S. Stretz 2022-10-25 10:33:38 UTC
I started digging a bit further and wrapped my head around how this is all supposed to work. I /think/ (hard to tell without the actual error message) that I run into this error: https://github.com/KDE/plymouth-kcm/blob/v5.26.1/src/helper.cpp#L305

If I understand that code correctly then it does try to find a foo.plymouth file directly within /usr/share/plymouth/themes/plymouthgrub_banksy -- that directory exists but this theme seems to be "special" and the plymouth file actually exists in a subdirectory:

> # find /usr/share/plymouth/themes/plymouthgrub_banksy -name '*.plymouth'
> /usr/share/plymouth/themes/plymouthgrub_banksy/banksy_plymouth/banksy_plymouth.plymouth

That's probably also why the install never worked properly. It looks like the current ::install code would never have installed this theme due to that but back in 2020 it probably did.

I guess the best way forward would be to check if any alternative is actually registered in the theme directory via `update-alternatives --query default.plymouth`. And only if that gives a result try to remove it.

And of course display an error message if something fails.
Comment 5 Malte S. Stretz 2022-10-25 10:49:50 UTC
Correction to my last comment: I guess the current ::install code would still install a broken theme because it is installed first and then the code looks for a *.plymouth file in https://github.com/KDE/plymouth-kcm/blame/v5.26.1/src/helper.cpp#L248 but that variable is never used.

The update-alternatives code path will then silently fail since the error message from https://github.com/KDE/plymouth-kcm/blame/v5.26.1/src/helper.cpp#L259 is also never displayed.
Comment 6 Nate Graham 2022-10-25 16:43:59 UTC
That would make some sense! Would you be interested in trying your hand as submitting a merge request with a fix for this?