blob: 32801de96767d5dfa3fbb89e6df9a979d8063615 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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$//')
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} "$@"
|