3 # Create menu/desktop entries for an application
4 # This is used by the IShellLink interface
6 # Copyright 2000 Alexandre Julliard
20 usage: wineshelllink options
23 --desktop create a desktop link
24 --menu create a menu entry
25 --path xx path to the application
26 --link xx name of link to create
27 --args xx command-line arguments for the application
28 --icon xx icon to display
29 --workdir xx working directory for the application
30 --descr xx application description
36 if [ $# -eq 0 ] ; then
43 (--desktop) mode
="desktop"; shift 1 ;;
44 (--menu) mode
="menu"; shift 1 ;;
45 (--path) path
=$2; shift 2 ;;
46 (--link) link
=$2; shift 2 ;;
47 (--args) args
=$2; shift 2 ;;
48 (--icon) icon
=$2; shift 2 ;;
49 (--descr) descr
=$2; shift 2 ;;
50 (--workdir) workdir
=$2; shift 2 ;;
55 if [ "$mode" = "" ] ; then
56 echo Either
--desktop or
--menu required
60 if [ "$link" = "" ] ; then
61 echo You must specify a link name with
--link
70 Name=`basename "$link"`
71 Exec=wine "$path" $args
75 [ -z "$workdir" ] ||
echo "Path=\"$workdir\""
76 [ -z "$xpmicon" ] ||
echo "Icon=$xpmicon"
83 Name=`basename "$link"`
84 Exec=wine "$path" $args
88 [ -z "$workdir" ] ||
echo "Path=\"$workdir\""
89 [ -z "$xpmicon" ] ||
echo "Icon=$xpmicon"
94 base
=`basename "$link"`
95 section
=`dirname "$link"`
96 [ -z "$icon" ] || xicon
="icon=\"$xpmicon\""
97 echo "?package(local.Wine):needs=x11 section=\"Wine/$section\" title=\"$base\" longtitle=\"$descr\" command=\"wine \\\"$path\\\" $args\" $xicon"
100 # copy the icon file to a specified dir and set xpmicon to the resulting path
105 mkdir
-p "$dir/""`dirname "$link"`" || true
108 cp "$icon" "$dir/$link.xpm"
109 xpmicon
="$dir/$link.xpm"
117 type update-menus
> /dev
/null
2>&1
118 if [ $?
= 0 -a $mode = "menu" ]
120 iconname
="`basename "$link"`.xpm"
121 dir
="$HOME/.menu/icons"
125 cp "$icon" "$dir/$iconname"
126 xpmicon
="$dir/$iconname"
130 mdk_entry
>> "$HOME/.menu/wine"
131 update-menus
> /dev
/null
2>&1
136 if [ -d "$HOME/.kde" ]
138 copy_icon
"$HOME/.kde/share/applnk/Wine"
139 if [ $mode = "menu" ]
141 kde_entry
> "$HOME/.kde/share/applnk/Wine/$link.kdelnk"
143 # KDE 1.x kludge. Wake up KDE, if we can find kpanel running
144 type kwmcom
>/dev
/null
2>/dev
/null
&& \
145 ps u
-C kpanel
>/dev
/null
2>/dev
/null
&& \
146 kwmcom kpanel
:restart
148 elif [ -d "$HOME/Desktop" ]
150 kde_entry
> "$HOME/Desktop/$link.kdelnk"
151 # KDE 1.x kludge: wake up KDE, if we can find kfm running...
152 type kfmclient
>/dev
/null
2>/dev
/null
&& \
153 ps u
-C kfm
>/dev
/null
2>/dev
/null
&& \
154 kfmclient refreshDesktop
158 if [ -d "$HOME/.kde2" ]
160 copy_icon
"$HOME/.kde2/share/applnk/Wine"
161 if [ $mode = "menu" ]
163 gnome_entry
> "$HOME/.kde2/share/applnk/Wine/$link.desktop"
164 elif [ -d "$HOME/Desktop2" ]
166 gnome_entry
> "$HOME/Desktop2/$link.desktop"
175 if [ -d "$HOME/.gnome" ]
177 copy_icon
"$HOME/.gnome/apps/Wine"
178 if [ $mode = "menu" ]
180 gnome_entry
> "$HOME/.gnome/apps/Wine/$link.desktop"
181 elif [ -d "$HOME/.gnome-desktop" ]
183 gnome_entry
> "$HOME/.gnome-desktop/$link.desktop"