Task Manager generates applications urls by doing "applications:" + menuId, however if menuId contains spaces, this results in an invalid URL. The URL is usually accepted but in LauncherTasksModel::Private::requestAddLauncherToActivities an URL is constructed explicitly in StrictMode which rejects the spaces. It should instead generate them percent-encoded, perhaps QUrl url; url.setScheme("applications"); url.setPath(menuId); However, I tried that some time ago and it resulted in invalid URLs for some reason.
*** Bug 385727 has been marked as a duplicate of this bug. ***
Could this be what's behind the remaining scattered reports of https://bugs.kde.org/show_bug.cgi?id=385594?
Comming from https://bugs.kde.org/show_bug.cgi?id=385594 Application with space in the name can't be pinned at all. No error message, but if I choose "Add to Panel(Widget)" from menu, application attach to panel but system receive log message "14 16:31:04 plasmashell[10610]: Empty filename passed to function" _NET_WM_ICON_NAME(UTF8_STRING) = XdndAware(ATOM) = BITMAP WM_NAME(STRING) = "Data Extractor" _NET_WM_NAME(UTF8_STRING) = "Data Extractor" _KDE_NET_WM_USER_CREATION_TIME(CARDINAL) = 25882978 _MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x3e, 0x7e, 0x0, 0x0 _NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL _XEMBED_INFO(_XEMBED_INFO) = 0x0, 0x1 WM_CLIENT_LEADER(WINDOW): window id # 0x4e00007 WM_HINTS(WM_HINTS): Client accepts input or input focus: True Initial state is Normal State. _NET_WM_PID(CARDINAL) = 25527 _NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 81788934 WM_CLASS(STRING) = "DataExtractor", "DataExtractor" WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST WM_NORMAL_HINTS(WM_SIZE_HINTS): user specified location: 4, 29 user specified size: 1272 by 687 program specified minimum size: 1010 by 640 window gravity: Static On App start дек 14 16:39:27 telamon kactivitymanagerd[10633]: Creating the cache for: "applications:Data Extractor.desktop" дек 14 16:39:27 telamon kactivitymanagerd[10633]: Already in database? true дек 14 16:39:27 telamon kactivitymanagerd[10633]: First update : QDateTime(2017-06-23 19:17:50.000 EEST Qt::TimeSpec(LocalTime)) дек 14 16:39:27 telamon kactivitymanagerd[10633]: Last update : QDateTime(2017-12-14 16:39:06.000 EET Qt::TimeSpec(LocalTime)) дек 14 16:39:27 telamon kactivitymanagerd[10633]: After the adjustment дек 14 16:39:27 telamon kactivitymanagerd[10633]: Current score : 16.7956 дек 14 16:39:27 telamon kactivitymanagerd[10633]: First update : QDateTime(2017-06-23 19:17:50.000 EEST Qt::TimeSpec(LocalTime)) дек 14 16:39:27 telamon kactivitymanagerd[10633]: Last update : QDateTime(2017-12-14 16:39:06.000 EET Qt::TimeSpec(LocalTime)) дек 14 16:39:27 telamon kactivitymanagerd[10633]: Interval length is 0 дек 14 16:39:27 telamon kactivitymanagerd[10633]: New score : 17.7956 дек 14 16:39:27 telamon kactivitymanagerd[10633]: ResourceScoreUpdated: "c4440aa5-23a1-46d9-9837-305110763943" "org.kde.plasma.kicker" "applications:Data Extractor.desktop" дек 14 16:39:27 telamon plasmashell[10610]: KActivitiesStats( 0x55d230a0fe50 ) ResultModelPrivate::onResultScoreUpdated result added: "applications:Data Extractor.desktop" score: 17.7956 last: 1513262365 first: 1498234670 After renaming desktop file mv "Data Extractor.desktop" DataExtractor.desktop everything work at it should.
Can anyone reproduce with Plasma 5.11.5 or 5.12? I can't.
Created attachment 110351 [details] Screenshot showing two LO icons. @Nate Afraid it's still happening with the icon for Libre office. Screenshot shows the correctly positioned LO icon (pointed to my mouse cursor) and the second LO icon at far right. Unpinning and re-adding the LO icon (as had been suggested in one of the previous related bug reports) does not effect a "cure".
Could you try this patch? It fixes a relevant bug. https://phabricator.kde.org/D10253
If .desktop file contains 'space' in the file name, launcher can't be pinned at all (correctly placed and drawed in task manager) Tested with Arch x86_64 Plasma 5.11.5 Framework 5.42.0 With and without D10253.diff applied Application start without D10253 фев 05 15:22:03 telamon kactivitymanagerd[1172]: Creating the cache for: "applications:Data Extractor.desktop" фев 05 15:22:03 telamon kactivitymanagerd[1172]: Already in database? true фев 05 15:22:03 telamon kactivitymanagerd[1172]: First update : QDateTime(2017-06-23 19:17:30.000 EEST Qt::TimeSpec(LocalTime)) фев 05 15:22:03 telamon kactivitymanagerd[1172]: Last update : QDateTime(2018-02-05 15:20:41.000 EET Qt::TimeSpec(LocalTime)) фев 05 15:22:03 telamon kactivitymanagerd[1172]: After the adjustment фев 05 15:22:03 telamon kactivitymanagerd[1172]: Current score : 2 фев 05 15:22:03 telamon kactivitymanagerd[1172]: First update : QDateTime(2017-06-23 19:17:30.000 EEST Qt::TimeSpec(LocalTime)) фев 05 15:22:03 telamon kactivitymanagerd[1172]: Last update : QDateTime(2018-02-05 15:20:41.000 EET Qt::TimeSpec(LocalTime)) фев 05 15:22:03 telamon kactivitymanagerd[1172]: Interval length is 0 фев 05 15:22:03 telamon kactivitymanagerd[1172]: New score : 3 фев 05 15:22:03 telamon kactivitymanagerd[1172]: ResourceScoreUpdated: "c4440aa5-23a1-46d9-9837-305110763943" "org.kde.krunner" "applications:Data Extractor.desktop" Application start with D10253 фев 05 15:32:03 telamon kactivitymanagerd[1172]: Creating the cache for: "applications:Data Extractor.desktop" фев 05 15:32:03 telamon kactivitymanagerd[1172]: Already in database? true фев 05 15:32:03 telamon kactivitymanagerd[1172]: First update : QDateTime(2017-06-23 19:17:50.000 EEST Qt::TimeSpec(LocalTime)) фев 05 15:32:03 telamon kactivitymanagerd[1172]: Last update : QDateTime(2017-12-14 16:49:25.000 EET Qt::TimeSpec(LocalTime)) фев 05 15:32:03 telamon kactivitymanagerd[1172]: After the adjustment фев 05 15:32:03 telamon kactivitymanagerd[1172]: Current score : 3.5872 фев 05 15:32:03 telamon kactivitymanagerd[1172]: First update : QDateTime(2017-06-23 19:17:50.000 EEST Qt::TimeSpec(LocalTime)) фев 05 15:32:03 telamon kactivitymanagerd[1172]: Last update : QDateTime(2017-12-14 16:49:25.000 EET Qt::TimeSpec(LocalTime)) фев 05 15:32:03 telamon kactivitymanagerd[1172]: Interval length is 0 фев 05 15:32:03 telamon kactivitymanagerd[1172]: New score : 4.5872 фев 05 15:32:03 telamon kactivitymanagerd[1172]: ResourceScoreUpdated: "c4440aa5-23a1-46d9-9837-305110763943" "org.kde.plasma.kicker" "applications:Data Extractor.desktop" фев 05 15:32:03 telamon plasmashell[10808]: KActivitiesStats( 0x55f64a337b40 ) ResultModelPrivate::onResultScoreUpdated result added: "applications:Data Extractor.desktop" score: 4.5872 last: 1517837521 first: 1498234670
Thanks Nikolay, I'll look into soon.
Can confirm, pinning with spaces doesn't work.
Problem with libreoffice: All launchers execute same file (/usr/bin/libreoffice) with parameter (--calc for example). Wrapping executable to libreoffice_calc improves things. Also if --nologo (disable splash screen and no dynamic change of window classname) is applied, launcher can't be placed/combined correctly in taskmanager at all.
(In reply to Eike Hein from comment #6) > Could you try this patch? It fixes a relevant bug. > https://phabricator.kde.org/D10253 Sorry, unable to apply patches other than simple manual edits to qml files etc. Just for information, and perhaps irrelevant, the desktop file for Libre Office Writer does not contain spaces in it's name. The following snippet is from ~/.config/plasma-org.kde.plasma.desktop-appletsrc file:///usr/share/applications/org.kde.kate.desktop,applications:writer.desktop,file:///home/paul/.local/share/applications/org.kde.digikam.desktop the actual desktop file (writer.desktop) appears to be located in two locations: /usr/share/applications /usr/lib64/libreoffice/share/xdg
Created attachment 110352 [details] Taskmanager plasmashell crash If we have pinned launcher with 'Exec' parameter that not exists, on start whole plasmashell crash.
Patch for the spaces issue: https://phabricator.kde.org/D10383
Can confirm, patch D10383 resolve spaces issue. Plasma 5.11.5
> If we have pinned launcher with 'Exec' parameter that not exists, on start whole plasmashell crash. I can't reproduce that crash (I get an error dialog "Unknown application folder"). The backtrace also looks unrelated ...
(In reply to Eike Hein from comment #15) > > If we have pinned launcher with 'Exec' parameter that not exists, on start whole plasmashell crash. > > I can't reproduce that crash (I get an error dialog "Unknown application > folder"). The backtrace also looks unrelated ... 0. journalctl -f 1. Pin app 2. Edit .desktop file add random symbol to executable 3. Start application (alert dialog appears Could not find the program etc.) 4. Click on OK button and wait
(In reply to Eike Hein from comment #15) > > If we have pinned launcher with 'Exec' parameter that not exists, on start whole plasmashell crash. > > I can't reproduce that crash (I get an error dialog "Unknown application > folder"). The backtrace also looks unrelated ... фев 08 16:10:12 telamon kdeinit5[20168]: Service "org.kde.StatusNotifierHost-28341" unregistered фев 08 16:10:12 telamon systemd[1]: Started Process Core Dump (PID 28716/UID 0). фев 08 16:10:12 telamon kwin_x11[20197]: QXcbConnection: XCB error: 3 (BadWindow), sequence: 45669, resource id: 33554442, major code: 15 (QueryTree), minor code: 0 фев 08 16:10:12 telamon kwin_x11[20197]: QXcbConnection: XCB error: 3 (BadWindow), sequence: 45723, resource id: 33554454, major code: 15 (QueryTree), minor code: 0 фев 08 16:10:12 telamon kwin_x11[20197]: QXcbConnection: XCB error: 3 (BadWindow), sequence: 45776, resource id: 33554466, major code: 15 (QueryTree), minor code: 0 фев 08 16:10:12 telamon plasmashell[28714]: kf5.karchive: bzDecompress returned -5 фев 08 16:10:12 telamon plasmashell[28714]: Warning: all files used by qml by the plasmoid should be in ui/. The file in the path "file:///usr/share/plasma/plasmoids/org.kde.desktopcontainment/contents/code/LayoutManager.js" was expected at QUrl("file:///usr/share/plasma/plasmoids/org.kde.desktopcontainment/contents/ui/LayoutManager.js") фев 08 16:10:12 telamon plasmashell[28714]: Warning: all files used by qml by the plasmoid should be in ui/. The file in the path "file:///usr/share/plasma/plasmoids/org.kde.desktopcontainment/contents/code/FolderTools.js" was expected at QUrl("file:///usr/share/plasma/plasmoids/org.kde.desktopcontainment/contents/ui/FolderTools.js")
> фев 08 16:10:12 telamon kdeinit5[20168]: Service > "org.kde.StatusNotifierHost-28341" unregistered > фев 08 16:10:12 telamon systemd[1]: Started Process Core Dump (PID 28716/UID > 0). > фев 08 16:10:12 telamon plasmashell[28714]: kf5.karchive: bzDecompress > returned -5 > фев 08 16:10:12 telamon plasmashell[28714]: Warning: all files used by qml > by the plasmoid should be in ui/. The file in the path > "file:///usr/share/plasma/plasmoids/org.kde.desktopcontainment/contents/code/ > LayoutManager.js" was expected at > QUrl("file:///usr/share/plasma/plasmoids/org.kde.desktopcontainment/contents/ > ui/LayoutManager.js") > фев 08 16:10:12 telamon plasmashell[28714]: Warning: all files used by qml > by the plasmoid should be in ui/. The file in the path > "file:///usr/share/plasma/plasmoids/org.kde.desktopcontainment/contents/code/ > FolderTools.js" was expected at > QUrl("file:///usr/share/plasma/plasmoids/org.kde.desktopcontainment/contents/ > ui/FolderTools.js") This happen only if .desktop file is pinned.
Can reproduce now, thanks! I tried with an empty Exec= before.
Patch for the Exec= issue: https://phabricator.kde.org/D10405
(In reply to Eike Hein from comment #20) > Patch for the Exec= issue: https://phabricator.kde.org/D10405 Tested everything works fine.
Git commit e3a80661c9cd83677d44f4f6999d24dd13629a2f by Eike Hein. Committed on 15/02/2018 at 18:46. Pushed by hein into branch 'master'. Stuff the "Couldn't find executable" message box into a queued lambda Summary: This fixes a Plasma shell crash in the Task Manager applet: We use KRun from inside the onReleased handler of a MouseArea. In this error case this leads to a KMessageBox spinning the event loop. The delegate hosting the MouseArea is in the meanwhile deleted because it's replaced by a different one for the startup creation. After closing the dialog we're back in the destroyed delegate and crash. The patch instead opens the message box from a queued-up lambda run in the context of qGuiApp (guarded by a test for qGuiApp) so we escape the caller before starting the nested event loop. Reviewers: dfaure, davidedmundson, mart Subscribers: #frameworks Tags: #frameworks Differential Revision: https://phabricator.kde.org/D10405 M +13 -3 src/widgets/krun.cpp https://commits.kde.org/kio/e3a80661c9cd83677d44f4f6999d24dd13629a2f
Seems like this has regressed at some point. I cannot pin applications with spaces with them in 5.14.4 but I suspect the regression was before this.
Which app jumps around? And in which distro? And what kind of task manager are you using? Regular Task Manager? Icons-Only Task Manager? Latte Dock? etc. Works for me with LibreOffice Calc,the latest Plasma, and the IOTM in Manjaro and KDE Neon.
Dear Bug Submitter, This bug has been in NEEDSINFO status with no change for at least 15 days. Please provide the requested information as soon as possible and set the bug status as REPORTED. Due to regular bug tracker maintenance, if the bug is still in NEEDSINFO status with no change in 30 days the bug will be closed as RESOLVED > WORKSFORME due to lack of needed information. For more information about our bug triaging procedures please read the wiki located here: https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging If you have already provided the requested information, please mark the bug as REPORTED so that the KDE team knows that the bug is ready to be confirmed. Thank you for helping us make KDE software even better for everyone!
(In reply to Nate Graham from comment #24) > Which app jumps around? And in which distro? And what kind of task manager > are you using? Regular Task Manager? Icons-Only Task Manager? Latte Dock? > etc. > > Works for me with LibreOffice Calc,the latest Plasma, and the IOTM in > Manjaro and KDE Neon. Apologies for not replying earlier. The issue I noticed was that apps from the Applications Menu are unable to be pinned with spaces in the .desktop file name. For example "LoremIpsum.desktop" will pin fine but "Lorem Ipsum.desktop" does not (appears to have no visible effect when pinned). The display name (e.g. "LibreOffice Calc") does not affect whether this bug occurs or not. This can be reproduced with both icons only and normal task manager. I dont't remember seeing the 'jumping around' problem, but I'm not quite sure how that was meant to be reproduced. Plasma: 5.14.4 OS: openSUSE Tumbleweed 20190108 (also tested 20181213)
Git commit d25cb3a405b9ba93a5cd6c63df82ac70bcacc001 by Michael Reeves. Committed on 15/03/2019 at 14:01. Pushed by mreeves into branch 'master'. use std::list not QList std::list is close to QLinkedList behavoir wise. In particular it matches rules about what operations invalidate iterators. FIXED-IN:1.8 M +2 -2 src/diff.cpp M +3 -1 src/diff.h https://commits.kde.org/kdiff3/d25cb3a405b9ba93a5cd6c63df82ac70bcacc001
Closed wrong bug
(In reply to michael from comment #28) > Closed wrong bug Is there any update on the Icon-Only Taskmanager Issue or was a new bug opened? Icons still jump around on KDE Neon with Plasma 5.17.5 (Sorry if this is the wrong place to ask)
I tried to investigate a little but I think this code makes wrong assumptions. On one hand it just casually does QUrl::toString() which by default uses QUrl::PrettyDecoded, which tries to avoid as much percent-encoding as possible and as such leaves spaces in tact. On the other hand, the code tries to ignore garbage URLs and as such explicitly constructs URLs with QUrl::StrictMode. Doing QUrl(url.toString(), QUrl::StrictMode) will naturally produce invalid URLs when the original contained spaces leading to this bug. Using QUrl::toString(FullyDecoded) somewhat works but isn't allowed for this option according to Qt documentation for whatever reason. It would then also result in QUrl("Garbage URL") being treated as valid. I suggest to drop all of this StrictMode stuff and instead verify if the URL scheme is valid (either file, applications, or preferred).
A duplicate bug of this has been marked as fixed : https://phabricator.kde.org/D26941 >It should instead generate them percent-encoded, perhaps >QUrl url; >url.setScheme("applications"); >url.setPath(menuId); This is pretty much what you have done when porting away from KRun. https://invent.kde.org/plasma/plasma-workspace/-/commit/6e660cf92d7c3fb0e20527866691eaff9f8bc207 Also the regression caused by this has been fixed: https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/61 And it now works as expected.
*** Bug 393665 has been marked as a duplicate of this bug. ***