#!/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$//') 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} $@