shtools/zdesktop/zdesktop
2020-05-22 01:58:22 +02:00

80 lines
1.3 KiB
Bash
Executable file

#!/bin/sh
fname="$(basename "$0")"
usage()
{
echo "$fname <operation>
Operations:
gen [bin_file...] Generate a desktop file
add <desktop_file...> 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 <desktop_file...>" > /dev/stderr
exit 1
fi
;;
*) usage && exit 1;;
esac