| #!/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() |
| { |
| cat <<EOF |
| # KDE Config File |
| [KDE Desktop Entry] |
| Name=`basename "$link"` |
| Exec=wine "$path" $args |
| Type=Application |
| Comment=$descr |
| EOF |
| [ -z "$workdir" ] || echo "Path=\"$workdir\"" |
| [ -z "$xpmicon" ] || echo "Icon=$xpmicon" |
| } |
| |
| gnome_entry() |
| { |
| cat <<EOF |
| [Desktop Entry] |
| Name=`basename "$link"` |
| 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 |