From fa6b5fce0d19fd38be60e940d602ba4116bdec6a Mon Sep 17 00:00:00 2001 From: Grigoriy Sidorov Date: Thu, 30 Jul 2026 00:56:09 +0200 Subject: [PATCH] Fix silent launch failure for apps whose desktop id ends in .desktop (Telegram) (#6418) * Launch apps by their full desktop file name gtk-launch only appends the .desktop suffix when the argument doesn't already end with it. Apps whose desktop id itself ends in .desktop -- notably Telegram (org.telegram.desktop.desktop) -- were therefore looked up as a nonexistent file and silently failed to launch from the menu, while every other app worked. Passing the full file name to gtk-launch resolves the entry unambiguously for both naming styles. * Clarify launch comment wording --- shell/services/AppLibrary.qml | 5 ++++- test/shell.d/app-search-test.sh | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/shell/services/AppLibrary.qml b/shell/services/AppLibrary.qml index ef9456f4..d26f3c82 100644 --- a/shell/services/AppLibrary.qml +++ b/shell/services/AppLibrary.qml @@ -78,7 +78,10 @@ Item { var id = String(desktopId || "") if (!id) return root.beginLaunchFeedback(name) - Util.execDetached("gtk-launch " + Util.shellQuote(id)) + // Pass the file name with its extension: gtk-launch only appends ".desktop" + // when the argument doesn't already end with it, so ids that themselves end + // in ".desktop" (e.g. org.telegram.desktop) would otherwise never resolve. + Util.execDetached("gtk-launch " + Util.shellQuote(id + ".desktop")) } function remove(desktopId, name) { diff --git a/test/shell.d/app-search-test.sh b/test/shell.d/app-search-test.sh index 99e7678c..c8352afc 100644 --- a/test/shell.d/app-search-test.sh +++ b/test/shell.d/app-search-test.sh @@ -104,6 +104,11 @@ assert( 'app library runs desktop entry launch through the shell' ) +assert( + appLibraryQml.includes('Util.shellQuote(id + ".desktop")'), + 'app library launches by full file name so ids ending in .desktop (org.telegram.desktop) resolve' +) + assert( /function iconIndexScanCommand\(\)[\s\S]*-path "\*\/apps\/\*" -o -path "\*\/devices\/\*"/.test(appLibraryQml), 'app library fallback icon index includes device icons'