Example command: xdg-settings set default-web-browser chromium-browser.desktop In searching the desktop file for suitability, it scans for all lines that begin "Exec", and takes the result and packs it into a variable. If there is exactly one Exec line, this takes out a command name to test for existence, but when more than one matches, the program name is captured as "firstexecprog\nsecondexecprog\nthirdexecprog", and "which" doesn't know how to look up a program like that and the subsequent tests fail. Output with sh's "-x" option on: + grep -E ^Exec(\[[^]=]*])?= /usr/share//applications/chromium-browser.desktop + command=chromium-browser chromium-browser chromium-browser chromium-browser + which chromium-browser chromium-browser chromium-browser chromium-browser + command= + readlink -f + return + binary= + [ ] + exit_failure_file_missing + [ 0 -gt 0 ] In desktop_file_to_binary and binary_to_desktop_file functions, it makes false assumptions how many times grep may match. Those should treat each Exec match separately.
Created attachment 118501 [details] [review] desktopfile/binary mapping works for multi-Exec destop files Patch against git tip to treat each matched line as a separate program.
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xdg/xdg-utils/issues/83.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.