--- branches/magellan-next/include/xdg.sminc 2010/09/14 16:46:32 6654 +++ branches/magellan-next/include/xdg.sminc 2012/01/05 15:20:14 9702 @@ -64,6 +64,7 @@ --categories|-c) shift; categories="$1" ;; --vendor|-v) shift; vendor="$1" ;; --mimetypes|-x) shift; mimetypes="$1" ;; + --source|-s) shift; source="$1" ;; esac shift done @@ -122,50 +123,97 @@ # minstallxdg {-s} srcname destname {/path/to} minstallxdg() { + local i local file local destdir local destfile + local prefix + local modify="0" + local comment + local exec + local icon + local terminal + local notify + local categories + local vendor + local all_categories + local mimetypes + local cmdline + + for i in $* + do + case $1 in + --srcdir|-s) shift; prefix="${SOURCEDIR}/${PNAME}/" ;; + --name|-n) shift; name="$1"; modify="1" ;; + --comment|-m) shift; comment="$1"; modify="1" ;; + --exec|-e) shift; exec="$1"; modify="1" ;; + --icon|-i) shift; icon="$1"; modify="1" ;; + --terminal|-t) terminal="true"; modify="1" ;; + --no-notify|-y) notify="false"; modify="1" ;; + --categories|-c) shift; categories="$1"; modify="1" ;; + --vendor|-v) shift; vendor="$1"; modify="1" ;; + --mimetypes|-x) shift; mimetypes="$1"; modify="1" ;; + esac + shift + done + + file="${prefix}$1" + + if [[ -n "$2" ]] + then + destfile="$2" + else + destfile="$(basename ${file})" + fi + + if [[ -n "$3" ]] + then + destdir="$3" + else + destdir="/usr/share/applications" + fi - [[ -z "$1" ]] && die "No xdg desktop file given" + [[ -z ${file} ]] && die "No xdg desktop file given" - # if -s given use file from sourcedir - if [[ $1 = -s ]] + # needed directory + minstalldir ${destdir} || die + + if [[ ${modify} = 1 ]] then - file="${SOURCEDIR}/${PNAME}/$2" - if [[ -n "$3" ]] + [[ ! -z ${name} ]] && cmdline+=" --set-name=\"${name}\"" + [[ ! -z ${comment} ]] && cmdline+=" --set-comment=\"${comment}\"" + [[ ! -z ${exec} ]] && cmdline+=" --set-key=Exec --set-value=\"${exec}\"" + [[ ! -z ${icon} ]] && cmdline+=" --set-icon=\"${icon}\"" + [[ ! -z ${terminal} ]] && cmdline+=" --set-key=Terminal --set-value=false" + [[ ! -z ${notify} ]] && cmdline+=" --set-key=StartupNotify --set-value=false" + [[ ! -z ${vendor} ]] && cmdline+=" --vendor \"${vendor}\"" + + if [[ ! -z ${categories} ]] then - destfile="$3" - else - destfile="$(basename ${file})" + # get all categories + for i in $(echo ${categories} | sed "s:,:\ :g") + do + cmdline+=" --add-category ${i}" + done fi - if [[ -n "$4" ]] + # get all mimetypes + if [[ ! -z ${mimetypes} ]] then - destdir="$4" - else - destdir="/usr/share/applications" + for i in $(echo ${mimetypes} | sed "s:,:\ :g") + do + cmdline+=" --add-mime-type ${i}" + done fi + desktop-file-install \ + --dir ${destdir} \ + --add-category X-Magellan-Application \ + ${cmdline} \ + ${file} \ + || die else - file="$1" - if [[ -n "$2" ]] - then - destfile="$2" - else - destfile="$(basename ${file})" - fi - - if [[ -n "$3" ]] - then - destdir="$3" - else - destdir="/usr/share/applications" - fi + # install our xdg + minstallfile ${file} ${destdir}/${destfile} || die fi - - # needed directory - minstalldir ${destdir} || die - - # install our xdg - minstallfile ${file} ${destdir}/${destfile} || die }