#!/bin/bash # \file inkscape # wrapper start script for Inkscape.app on Mac # # This file is part of LyX, the document processor. # Licence details can be found in the file COPYING. # # \author Stephan Witt # Full author contact details are available in file CREDITS. unset DISPLAY # check for file arguments with relative path names # convert them to absolute path names # inkscape on Mac changes the working directory # this invalidates relative path names startinkscape() { inkscape="$1" ; shift pwd=$(pwd) iparams=( "$@" ) oparams=() # pre 1.0 application has cmd line utility in resources # this utility needs the explicit option to suppress gui # 1.0 don't have it and fails to start with it case "${inkscape}" in */Resources/*) wogui="--without-gui" ;; esac for i in ${!iparams[@]}; do # echo $i "=>" "${iparams[$i]}" case "${iparams[$i]}" in --file=/*|--export-pdf=/*|--export-eps=/*|--export-png=/*|--export-emf=/*|--export-wmf=/*|--export-ps=/*|--export-ps-level=/*|--export-pdf-version=/*) oparams+=( "${iparams[$i]}" ) ;; --file=*|--export-pdf=*|--export-eps=*|--export-png=*|--export-emf=*|--export-wmf=*|--export-ps=*|--export-ps-level=*|--export-pdf-version=*) oparams+=( "${iparams[$i]//=/=${pwd}/}" ) ;; --without-gui|-z) # ignore this argument - its provided below anyway ;; *) oparams+=( "${iparams[$i]}" ) ;; esac done exec "${inkscape}" ${wogui} "${oparams[@]}" } # try to find the inkscape installation... # at first try the well known location for Inkscape 1.0 # but check for Inkscape 0.92.x too and skip this if it's in Resources RESDIR="/Applications/Inkscape.app/Contents/MacOS" if [ ! -f "/Applications/Inkscape.app/Contents/Resources/bin/inkscape" -a -f "${RESDIR}"/inkscape -a -x "${RESDIR}"/inkscape ]; then startinkscape "${RESDIR}"/inkscape "$@" exit 0 fi # this failed... so try PATH expansion to start the inkscape shell wrapper # Now continue the check with pre 1.0 inkscape application and the PATH IFS=":" read -ra DIRLIST <<< "${PATH}" for BINDIR in "/Applications/Inkscape.app/Contents/Resources/bin" "${DIRLIST[@]}" ; do RESDIR=$(dirname "${BINDIR}") if [ -f "${RESDIR}"/bin/inkscape -a -x "${RESDIR}"/bin/inkscape ]; then startinkscape "${RESDIR}"/bin/inkscape "$@" exit 0 fi done # report error and exit with failure status exec 1>&2 echo Could not find Inkscape binary. exit 1