#!/bin/sh # # Create menu/desktop entries for an application # This is used by the IShellLink interface # # Copyright 2000 Alexandre Julliard # mode="" args="" menu="" icon="" descr="" link="" path="" workdir="" usage() { cat <<EOF usage: wineshelllink options options: --desktop create a desktop link --menu create a menu entry --path xx path to the application --link xx name of link to create --args xx command-line arguments for the application --icon xx icon to display --workdir xx working directory for the application --descr xx application description EOF exit 1 } if [ $# -eq 0 ] ; then usage fi while [ $# -gt 0 ] do case "$1" in (--desktop) mode="desktop"; shift 1 ;; (--menu) mode="menu"; shift 1 ;; (--path) path="$2"; shift 2 ;; (--link) link="$2"; shift 2 ;; (--args) args="$2"; shift 2 ;; (--icon) icon="$2"; shift 2 ;; (--descr) descr="$2"; shift 2 ;; (--workdir) workdir="$2"; shift 2 ;; (*) usage ;; esac done if [ "$mode" = "" ] ; then echo Either --desktop or --menu required usage fi if [ "$link" = "" ] ; then echo You must specify a link name with --link usage fi kde_entry() { xname=`basename "$link"` cat <<EOF # KDE Config File [KDE Desktop Entry] Name=$xname Exec=wine "$path" $args Type=Application Comment=$descr EOF [ -z "$workdir" ] || echo "Path=\"$workdir\"" [ -z "$xpmicon" ] || echo "Icon=$xpmicon" } gnome_entry() { xname=`basename "$link"` cat <<EOF [Desktop Entry] Name=$xname Exec=wine "$path" $args Type=Application Comment=$descr EOF [ -z "$workdir" ] || echo "Path=\"$workdir\"" [ -z "$xpmicon" ] || echo "Icon=$xpmicon" } mdk_entry() { base=`basename "$link"` section=`dirname "$link"` [ -z "$icon" ] || xicon="icon=\"$xpmicon\"" echo "?package(local.Wine):needs=x11 section=\"Wine/$section\" title=\"$base\" longtitle=\"$descr\" command=\"wine \\\"$path\\\" $args\" $xicon" } # copy the icon file to a specified dir and set xpmicon to the resulting path copy_icon() { dir="$1" mkdir -p "$dir" mkdir -p "$dir/""`dirname "$link"`" || true if [ -f "$icon" ] then cp "$icon" "$dir/$link.xpm" xpmicon="$dir/$link.xpm" else xpmicon="" fi } # Debian/Mandrake type update-menus > /dev/null 2>&1 if [ $? = 0 -a $mode = "menu" ] then iconname="`basename "$link"`.xpm" dir="$HOME/.menu/icons" if [ -f "$icon" ] then mkdir -p "$dir" cp "$icon" "$dir/$iconname" xpmicon="$dir/$iconname" else xpmicon="" fi mdk_entry >> "$HOME/.menu/wine" update-menus > /dev/null 2>&1 fi # KDE if [ -d "$HOME/.kde" ] then copy_icon "$HOME/.kde/share/applnk/Wine" if [ $mode = "menu" ] then kde_entry > "$HOME/.kde/share/applnk/Wine/$link.kdelnk" # KDE 1.x kludge. Wake up KDE, if we can find kpanel running type kwmcom >/dev/null 2>/dev/null && \ ps u -C kpanel >/dev/null 2>/dev/null && \ kwmcom kpanel:restart elif [ -d "$HOME/Desktop" ] then kde_entry > "$HOME/Desktop/$link.kdelnk" # KDE 1.x kludge: wake up KDE, if we can find kfm running... type kfmclient >/dev/null 2>/dev/null && \ ps u -C kfm >/dev/null 2>/dev/null && \ kfmclient refreshDesktop fi fi if [ -d "$HOME/.kde2" ] then copy_icon "$HOME/.kde2/share/applnk/Wine" if [ $mode = "menu" ] then gnome_entry > "$HOME/.kde2/share/applnk/Wine/$link.desktop" elif [ -d "$HOME/Desktop2" ] then gnome_entry > "$HOME/Desktop2/$link.desktop" fi fi # Gnome if [ -d "$HOME/.gnome" ] then copy_icon "$HOME/.gnome/apps/Wine" if [ $mode = "menu" ] then gnome_entry > "$HOME/.gnome/apps/Wine/$link.desktop" elif [ -d "$HOME/.gnome-desktop" ] then gnome_entry > "$HOME/.gnome-desktop/$link.desktop" fi fi exit 0