2016-06-08 08:23:58 +02:00
|
|
|
commit 6e4d88e740b89a2766312fb544e4a22b7034d9e3
|
|
|
|
Author: Simon Lees <sflees@suse.de>
|
|
|
|
Date: Tue May 31 13:13:53 2016 +0930
|
|
|
|
|
|
|
|
common: implement vendor dirs in desktop_file_to_binary
|
|
|
|
|
2016-11-15 10:03:49 +01:00
|
|
|
Index: xdg-utils-20160610/scripts/xdg-utils-common.in
|
|
|
|
===================================================================
|
|
|
|
--- xdg-utils-20160610.orig/scripts/xdg-utils-common.in
|
|
|
|
+++ xdg-utils-20160610/scripts/xdg-utils-common.in
|
2016-06-08 08:23:58 +02:00
|
|
|
@@ -50,7 +50,6 @@ binary_to_desktop_file()
|
|
|
|
|
|
|
|
#-------------------------------------------------------------
|
|
|
|
# map a .desktop file to a binary
|
|
|
|
-## FIXME: handle vendor dir case
|
|
|
|
desktop_file_to_binary()
|
|
|
|
{
|
|
|
|
search="${XDG_DATA_HOME:-$HOME/.local/share}:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
|
2016-11-15 10:03:49 +01:00
|
|
|
@@ -58,14 +57,33 @@ desktop_file_to_binary()
|
2016-06-08 08:23:58 +02:00
|
|
|
IFS=:
|
|
|
|
for dir in $search; do
|
|
|
|
unset IFS
|
|
|
|
- [ "$dir" ] && [ -d "$dir/applications" ] || continue
|
|
|
|
- file="$dir/applications/$desktop"
|
|
|
|
- [ -r "$file" ] || continue
|
|
|
|
- # Remove any arguments (%F, %f, %U, %u, etc.).
|
|
|
|
- command="`grep -E "^Exec(\[[^]=]*])?=" "$file" | cut -d= -f 2- | first_word`"
|
|
|
|
- command="`which "$command"`"
|
|
|
|
- readlink -f "$command"
|
|
|
|
- return
|
|
|
|
+ [ "$dir" ] && [ -d "$dir/applications" ] || [ -d "$dir/applnk" ] || continue
|
|
|
|
+ # Check if desktop file contains -
|
|
|
|
+ if [ "${desktop#*-}" != "$desktop" ]; then
|
|
|
|
+ vendor=${desktop%-*}
|
|
|
|
+ app=${desktop#*-}
|
|
|
|
+ if [ -r $dir/applications/$vendor/$app ]; then
|
|
|
|
+ file_path=$dir/applications/$vendor/$app
|
|
|
|
+ elif [ -r $dir/applnk/$vendor/$app ]; then
|
|
|
|
+ file_path=$dir/applnk/$vendor/$app
|
|
|
|
+ fi
|
2016-11-15 10:03:49 +01:00
|
|
|
+ fi
|
|
|
|
+ if test -z "$file_path" ; then
|
2016-06-08 08:23:58 +02:00
|
|
|
+ for indir in "$dir"/applications/ "$dir"/applications/*/ "$dir"/applnk/ "$dir"/applnk/*/; do
|
|
|
|
+ file="$indir/$desktop"
|
|
|
|
+ if [ -r "$file" ]; then
|
|
|
|
+ file_path=$file
|
|
|
|
+ break
|
|
|
|
+ fi
|
|
|
|
+ done
|
|
|
|
+ fi
|
|
|
|
+ if [ -r "$file_path" ]; then
|
|
|
|
+ # Remove any arguments (%F, %f, %U, %u, etc.).
|
|
|
|
+ command="`grep -E "^Exec(\[[^]=]*])?=" "$file_path" | cut -d= -f 2- | first_word`"
|
|
|
|
+ command="`which "$command"`"
|
|
|
|
+ readlink -f "$command"
|
|
|
|
+ return
|
|
|
|
+ fi
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|