Reenable the wrapper support.
[wine] / tools / wineshelllink
1 #!/bin/sh
2 #
3 # Create menu/desktop entries for an application
4 # This is used by the IShellLink interface
5 #
6 # Copyright 2000 Alexandre Julliard
7 #
8 mode=""
9 args=""
10 menu=""
11 icon=""
12 descr=""
13 link=""
14 path=""
15 workdir=""
16
17 usage()
18 {
19     cat <<EOF
20 usage: wineshelllink options
21
22 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
31
32 EOF
33     exit 1
34 }
35
36 if [ $# -eq 0 ] ; then
37     usage
38 fi
39
40 while [ $# -gt 0 ]
41 do
42   case "$1" in
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 ;;
51     (*) usage ;;
52   esac
53 done
54
55 if [ "$mode" = ""  ] ; then
56     echo Either --desktop or --menu required
57     usage
58 fi
59
60 if [ "$link" = ""  ] ; then
61     echo You must specify a link name with --link
62     usage
63 fi
64
65 kde_entry()
66 {
67     cat <<EOF
68 # KDE Config File
69 [KDE Desktop Entry]
70 Name=`basename "$link"`
71 Exec=wine "$path" $args
72 Type=Application
73 Comment=$descr
74 EOF
75     [ -z "$workdir" ] || echo "Path=\"$workdir\""
76     [ -z "$xpmicon" ] || echo "Icon=$xpmicon"
77 }
78
79 gnome_entry()
80 {
81     cat <<EOF
82 [Desktop Entry]
83 Name=`basename "$link"`
84 Exec=wine "$path" $args
85 Type=Application
86 Comment=$descr
87 EOF
88     [ -z "$workdir" ] || echo "Path=\"$workdir\""
89     [ -z "$xpmicon" ] || echo "Icon=$xpmicon"
90 }
91
92 # copy the icon file to a specified dir and set xpmicon to the resulting path
93 copy_icon()
94 {
95   dir=$1
96   mkdir -p "$dir"
97   mkdir -p "$dir/""`dirname "$link"`" || true
98   if [ -f "$icon" ]
99   then
100     cp "$icon" "$dir/$link.xpm"
101     xpmicon="$dir/$link.xpm"
102   else
103     xpmicon=""
104   fi
105 }
106
107 # KDE
108
109 if [ -d "$HOME/.kde" ]
110 then
111   copy_icon "$HOME/.kde/share/applnk/Wine"
112   if [ $mode = "menu" ]
113   then
114     kde_entry > "$HOME/.kde/share/applnk/Wine/$link.kdelnk"
115
116     # KDE 1.x kludge.  Wake up KDE, if we can find kpanel running
117     type kwmcom >/dev/null 2>/dev/null && \
118       ps u -C kpanel >/dev/null 2>/dev/null && \
119         kwmcom kpanel:restart
120
121   elif [ -d "$HOME/Desktop" ]
122   then
123     kde_entry > "$HOME/Desktop/$link.kdelnk"
124
125
126     #   KDE 1.x kludge:  wake up KDE, if we can find kfm running...
127     type kfmclient >/dev/null 2>/dev/null && \
128       ps u -C kfm >/dev/null 2>/dev/null  && \
129         kfmclient refreshDesktop
130   fi
131
132
133 fi
134
135
136 # Gnome
137
138 if [ -d "$HOME/.gnome" ]
139 then
140   copy_icon "$HOME/.gnome/apps/Wine"
141   if [ $mode = "menu" ]
142   then
143     gnome_entry > "$HOME/.gnome/apps/Wine/$link.desktop"
144   elif [ -d "$HOME/.gnome-desktop" ]
145   then
146     gnome_entry > "$HOME/.gnome-desktop/$link.desktop"
147   fi
148 fi
149
150 exit 0