From 72c39240811f1def43fca71de51566d206f7728d Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Thu, 21 Jan 2021 19:33:10 +0100 Subject: Update 2021-01-21T18:33:10Z --- bin/xdg-exec | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'bin/xdg-exec') diff --git a/bin/xdg-exec b/bin/xdg-exec index 787c502..e8f3ccb 100755 --- a/bin/xdg-exec +++ b/bin/xdg-exec @@ -1,7 +1,24 @@ #!/bin/sh +# +# DESCRIPTION: +# parses a .desktop file, that matches in name to `$0` +# and executes the `Exec` value. +# +# INSTALL: +# ln -s /usr/local/bin/app.desktop +# + +XDG_DESKTOP_ENTRY_DIR=$HOME/.local/share/applications set -ex basepath=$(dirname "$0" | sed 's#/bin#/share/applications#') basename=$(basename "$0" | sed -e 's/^_//' -e 's/.desktop$//') -desktop=${basepath}/${basename}.desktop -bin=$(awk '/TryExec=/{split($0,l,"="); if (not system("command -v l[2]")){exit 1}} /Exec=/{print substr($0, index($0,"=")+1)}' "$desktop" | tr -d '\n' | sed "s/%.$//") -exec $bin +if [ -e "${XDG_DESKTOP_ENTRY_DIR}/${basename}.desktop" ]; then + desktop=${XDG_DESKTOP_ENTRY_DIR}/${basename}.desktop +else + 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} $@ -- cgit 1.4.1