diff options
| author | Robert Günzler <r@gnzler.io> | 2021-01-21 19:33:10 +0100 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2021-01-21 19:40:20 +0100 |
| commit | 72c39240811f1def43fca71de51566d206f7728d (patch) | |
| tree | a33aa1331fc55b587a243f64ef94d781df40a8ae /bin/xdg-exec | |
| parent | 0762801ed9627021e732cdeb225a737f44e3df42 (diff) | |
Update 2021-01-21T18:33:10Z
Diffstat (limited to 'bin/xdg-exec')
| -rwxr-xr-x | bin/xdg-exec | 23 |
1 files changed, 20 insertions, 3 deletions
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 <path/to/this/script> /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} $@ |