#!/bin/sh fname="$(basename "$0")" usage() { echo "$fname Operations: gen [bin_file...] Generate a desktop file add Add desktop file to applications" } gen_file() { unset name if [ -n "$1" ] then file="$1" name="$(echo "$1" | sed 's|.[^.]*$||g')" [ -z "$name" ] && name="$1" else name="$(basename "$(pwd)")" file="" fi desktop_file=$(echo "$name.desktop" | tr '[:upper:]' '[:lower:]') [ -f "$desktop_file" ] && { mv "$desktop_file" "$desktop_file.bak" || return $?; } cat > "$desktop_file" << EOF [Desktop Entry] Name=$name Comment=$name Type=Application Exec=$(pwd)/$file Icon=$(pwd)/icon.png Categories=Game Keywords=keyword;keyword EOF } add_file() { if [ -f "$1" ] then ln -sf "$(pwd)/$1" "$HOME/.local/share/applications" else echo "'$1' is not a file" > /dev/stderr return 1 fi } [ $# -le 0 ] && { usage && exit 1; } case $1 in gen) if [ $# -gt 1 ] then shift $((OPTIND)) for N do gen_file "$N" || exit $? done else gen_file || exit $? fi ;; add) if [ $# -gt 1 ] then shift $((OPTIND)) for N do add_file "$N" || exit $? done else echo "$fname add " > /dev/stderr exit 1 fi ;; *) usage && exit 1;; esac