There was actually a point to showing how one can pipe-line several small applications into a larger whole. That’s really the power of the command line. But of course, you are right that it is simpler, albeit less pædagogical
Will you add these small files to the distribution? Perhaps with a script like (named e.g., desktop-integration.sh
or something like that)
#!/bin/sh
dest=/usr/local
mode=install
usage() {
echo "Usage: $0 [install|uninstall] [--user|--system|--destination PREFIX]"
}
while test $# -gt 0 ; do
case $1 in
-h|--help) usage ; exit 0 ;;
install) mode=install ;;
uninstall) mode=uninstall ;;
-u|--user) dest=$HOME/.local ;;
-s|--system) dest=/usr/local ;;
-d|--destination) dest=$2 ; shift ;;
*) echo "$0: Unknown argument: $1" ; exit 1 ;;
esac
shift
done
if test "x$mode" == "xinstall" ; then
EXEC_PATH=$(realpath "$0")
INSTALL_DIR=$(dirname "${EXEC_PATH}")
sed "s|$$INSTALL_DIR|$INSTALL_DIR|" < vassal.desktop > tmp.desktop
sed "s|$$INSTALL_DIR|$INSTALL_DIR|" < applications-x-vassal.xml > tmp.xml
mkdir -p $dest/applications
mkdir -p $dest/mime/packages
mkdir -p $dest/bin
mv tmp.desktop $dest/applications/vassal.desktop
mv tmp.xml $dest/mime/packages/application-x-vassal.xml
update-mime-database $dest/mime
update-desktop-database $dest/
(cd $dest/bin && ln -s $EXEC_PATH vassal)
else
rm -f $dest/mime/packages/application-x-vassal.xml
rm -f $dest/applications/vassal.desktop
rm -f $dest/bin/vassal
rmdir -p --ignore-fail-on-non-empty $dest/applications
rmdir -p --ignore-fail-on-non-empty $dest/mime/packages
rmdir -p --ignore-fail-on-non-empty $dest/bin
fi
A user can then easily install the integration - either system-wide or for the user only.
Yours,
Christian