From 739b3e702b0f53bd41644795a8c3b6e26465e011 Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Fri, 18 Nov 2022 18:23:41 +0100 Subject: bin/xdg-exec: refactor --- bin/xdg-exec | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'bin') diff --git a/bin/xdg-exec b/bin/xdg-exec index 32801de..7f8ab5e 100755 --- a/bin/xdg-exec +++ b/bin/xdg-exec @@ -8,17 +8,20 @@ # ln -s /usr/local/bin/app.desktop # -XDG_DESKTOP_ENTRY_DIR=$HOME/.local/share/applications -set -ex +set -e basepath=$(dirname "$0" | sed 's#/bin#/share/applications#') basename=$(basename "$0" | sed -e 's/^_//' -e 's/.desktop$//') + +# try ~/.local/share/applications first: +XDG_DESKTOP_ENTRY_DIR=$HOME/.local/share/applications if [ -e "${XDG_DESKTOP_ENTRY_DIR}/${basename}.desktop" ]; then - desktop=${XDG_DESKTOP_ENTRY_DIR}/${basename}.desktop + desktop=${XDG_DESKTOP_ENTRY_DIR}/${basename}.desktop else - desktop=${basepath}/${basename}.desktop + desktop=${basepath}/${basename}.desktop fi -bin=$(awk ' -/^TryExec=/{split($0,l,"="); if(not system("command -v l[2]")){exit 1}} -/^Exec=/{printf gensub(/Exec=([^%]+).*$/, "\\1", "")} -' "$desktop" | sed 's/%.$//') -exec ${bin} "$@" +exe=$( + awk 'BEGIN{try=true;exe="";} /^;/{next} /^TryExec=/{try=gensub(/^TryExec=([^%]*).*$/, "\\1", "g")} /^Exec=/{if(exe==""){exe=gensub(/^Exec=([^%]*).*$/, "\\1", "g")}} END{if(system("command -v " try " >/dev/null")!=0){exit 1}; gsub(/\s$/, "", exe); print exe}' "$desktop" +) + +set -x +exec sh -c "${exe} \"$*\"" -- cgit 1.4.1