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
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!
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
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; } }
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.
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.
That would make some sense! Would you be interested in trying your hand as submitting a merge request with a fix for this?