Improve dockapp recognition
[wmaker-crm.git] / util / wmaker.inst.in
blobe29d18e57f6986de94961c13de0176983788267a
1 #!/bin/sh
3 # Install Window Maker for the current user
6 # xx herbert
7 if test "x$1" = "x--batch" ; then
8 BATCH="1"
9 else
10 BATCH=""
12 # /xx herbert
14 # name of menu file we install (menu, plmenu)
15 inst_menu=""
17 LOCALE=$LANG
18 if [ -z "$LOCALE" ]; then
19 LOCALE=$LC_ALL
22 # directory where system wide configuration is stored
23 GLOBALDIR="#pkgdatadir#"
24 GLOBALDEFDIR="#sysconfdir#"
26 USERDIR=$HOME
28 VERSION="#version#"
30 BINDIR="#bindir#"
32 make_dir() {
33 mkdir $1
34 chmod +rwx $1
37 make_script() {
38 ISCRIPT=$1
40 cat << EOF >> $ISCRIPT
41 # Window Maker default X session startup script
43 PATH="\$PATH:$BINDIR"
45 # If you login from xdm, uncomment this to make error messages appear
46 # in the console window.
48 # tail -f $HOME/.xsession-errors > /dev/console &
50 exec wmaker
52 EOF
53 chmod +rx $ISCRIPT
58 # Copy files considering special cases
60 copy() {
61 source=$1
62 target=$2
63 file=`basename $source`
64 rm -f $target
65 if [ "$file" = "WindowMaker" ]; then
66 sed -e "s|~/GNUstep|$GSDIR|g" $source > $target
67 elif [ "$file" = "WMRootMenu" ]; then
68 if [ "$LOCALE" ]; then
69 if [ -f $GLOBALDIR/plmenu.$LOCALE ]; then
70 source=$GLOBALDIR/plmenu.$LOCALE
71 elif [ -f $GLOBALDIR/plmenu.${LOCALE%.*} ]; then
72 source=$GLOBALDIR/plmenu.${LOCALE%.*}
73 elif [ -f $GLOBALDIR/plmenu.${LOCALE%_*} ]; then
74 source=$GLOBALDIR/plmenu.${LOCALE%_*}
75 elif [ -f $GLOBALDIR/menu.${LOCALE%_*} ]; then
76 source=$GLOBALDIR/menu.${LOCALE%_*}
77 else
78 source=$GLOBALDIR/plmenu
80 else
81 source=$GLOBALDIR/plmenu
83 sed -e "s:#wmdatadir#:$GLOBALDIR:g" \
84 $source > $GSDIR/Defaults/WMRootMenu
85 else
86 if test "x$GNUSTEP_USER_ROOT" = "x"; then
87 sed -e "s:#wmdatadir#:$GLOBALDIR:g" \
88 $source > $target
89 else
90 sed -e "s|\$HOME/GNUstep|$GSDIR|g" \
91 -e "s:#wmdatadir#:$GLOBALDIR:g" \
92 $source > $target
99 echo "Installing WindowMaker $VERSION for current user..."
102 if [ ! -d $GLOBALDIR ]; then
103 echo "Could not find global data files"
104 echo "Make sure you have installed Window Maker correctly"
105 exit 1
108 if [ ! -d $GLOBALDEFDIR ]; then
109 echo "Could not find global configurations files"
110 echo "Make sure you have installed Window Maker correctly"
111 exit 1
114 if [ ! -d "$USERDIR" ]; then
115 echo "Could not find user directory $USERDIR"
116 exit 1
120 if test "x$GNUSTEP_USER_ROOT" = "x"; then
121 cd $USERDIR
122 GSDIR=$USERDIR/GNUstep
123 if [ ! -d $GSDIR ]; then
124 echo "Creating $GSDIR user directory"
125 make_dir $GSDIR
127 else
128 GSDIR=$GNUSTEP_USER_ROOT
129 if [ ! -d $GSDIR ]; then
130 echo "Directory specified in GNUSTEP_USER_ROOT environment variable does not exist"
131 exit 1
133 cd $GSDIR
134 cd ..
138 if [ ! -d "$GSDIR/Defaults" ]; then
139 make_dir $GSDIR/Defaults
142 echo "Copying defaults database..."
144 FILES=`(cd $GLOBALDEFDIR;ls -d *)`
145 all=""
146 for i in $FILES; do
147 if [ ! -d $GLOBALDEFDIR/$i ]; then
148 if [ -f $GSDIR/Defaults/$i -a -z "$BATCH" ]; then
149 echo "The configuration file \"$i\" already exists in your defaults database."
150 echo "Do you wish to replace it? <y/n/a> [n] $all"
151 if [ "$all" != "a" ]; then
152 read foo
153 if [ "$foo" = "a" -o "$foo" = "A" ]; then
154 all="a"
157 if [ "$foo" = "y" -o "$foo" = "Y" -o "$all" = "a" ]; then
158 copy $GLOBALDEFDIR/$i $GSDIR/Defaults/$i
160 else
161 copy $GLOBALDEFDIR/$i $GSDIR/Defaults/$i
164 done
167 if [ ! -d "$GSDIR/Library/Icons/" ]; then
168 echo "Creating icon library directory $GSDIR/Library/Icons"
169 if [ ! -d $GSDIR/Library ]; then
170 make_dir $GSDIR/Library
172 make_dir $GSDIR/Library/Icons
176 if [ ! -d "$GSDIR/Library/WindowMaker/" ]; then
177 echo "Creating WindowMaker data library directory $GSDIR/Library/WindowMaker"
178 if [ ! -d $GSDIR/Library ]; then
179 make_dir $GSDIR/Library
181 make_dir $GSDIR/Library/WindowMaker
184 if [ ! -d "$GSDIR/Library/WindowMaker/Styles" ]; then
185 echo "Creating style library $GSDIR/Library/WindowMaker/Styles"
186 make_dir $GSDIR/Library/WindowMaker/Styles
190 if [ ! -d "$GSDIR/Library/WindowMaker/Themes" ]; then
191 echo "Creating theme library $GSDIR/Library/WindowMaker/Themes"
192 make_dir $GSDIR/Library/WindowMaker/Themes
196 if [ ! -d "$GSDIR/Library/WindowMaker/Backgrounds" ]; then
197 echo "Creating bg image library $GSDIR/Library/WindowMaker/Backgrounds"
198 make_dir $GSDIR/Library/WindowMaker/Backgrounds
199 else
200 echo "Default Backgrounds directory already exists. Skipping..."
204 if [ ! -d "$GSDIR/Library/WindowMaker/IconSets" ]; then
205 echo "Creating icon setup library $GSDIR/Library/WindowMaker/IconSets"
206 make_dir $GSDIR/Library/WindowMaker/IconSets
207 else
208 echo "Default IconSets directory already exists. Skipping..."
212 if [ ! -d "$GSDIR/Library/WindowMaker/Pixmaps" ]; then
213 echo "Creating pixmap library $GSDIR/Library/WindowMaker/Pixmaps"
214 make_dir $GSDIR/Library/WindowMaker/Pixmaps
215 else
216 echo "Default Pixmaps directory already exists. Skipping..."
220 if [ ! -d "$GSDIR/Library/WindowMaker/CachedPixmaps" ]; then
221 make_dir $GSDIR/Library/WindowMaker/CachedPixmaps
224 if [ ! -d "$GSDIR/Library/WindowMaker/WPrefs" ]; then
225 make_dir $GSDIR/Library/WindowMaker/WPrefs
228 if test -z "#LITE#" ; then
229 FILES=`(cd $GLOBALDIR; ls menu menu.* plmenu plmenu.?? wmmacros)`
230 for i in $FILES; do
231 # xx herbert
232 if [ -f "$GSDIR/Library/WindowMaker/$i" -a -z "$BATCH" ]; then
233 # /xx herbert
234 echo "The file \"$i\" already exists in $GSDIR/Library/WindowMaker"
235 echo "Do you wish to replace it? <y/n/a> [n] $all"
236 if [ "$all" != "a" ]; then
237 read foo
238 if [ "$foo" = "a" -o "$foo" = "A" ]; then
239 all="a"
242 if [ "$foo" = "y" -o "$foo" = "Y" -o "$foo" = "a" ]; then
243 copy $GLOBALDIR/$i $GSDIR/Library/WindowMaker/$i
245 else
246 copy $GLOBALDIR/$i $GSDIR/Library/WindowMaker/$i
248 done
251 cp $GLOBALDIR/README.themes $GSDIR/Library/WindowMaker
252 cp $GLOBALDIR/README $GSDIR/Library/WindowMaker
254 test -f ~$GSDIR/Library/WindowMaker/autostart || \
255 cp $GLOBALDIR/autostart.sh $GSDIR/Library/WindowMaker/autostart
256 chmod +rx $GSDIR/Library/WindowMaker/autostart
258 test -f ~$GSDIR/Library/WindowMaker/exitscript || \
259 cp $GLOBALDIR/exitscript.sh $GSDIR/Library/WindowMaker/exitscript
260 chmod +rx $GSDIR/Library/WindowMaker/exitscript
262 # xx herbert
263 if test -n "$BATCH" ; then
264 echo "Installation Finished"
265 exit 0
267 # /xx herbert
271 #######################
273 DATE=`date +%b%d.%T`
275 show_end_message() {
277 echo
278 echo "Installation Finished"
279 echo
280 if test -z "#LITE#" ; then
281 echo "There are menus in 2 different file formats. The plain text format and"
282 echo "the property list format. The plain text format is more flexible, but"
283 echo "the menu in the property list format can be edited graphically. The"
284 echo "menu that will be used by default is the property list one. Read"
285 echo " $GSDIR/Library/WindowMaker/README"
286 echo "for information on how to change it."
287 if [ "${inst_menu%.*}" = "menu" ]; then
288 echo "However, since you have locale set to $LOCALE and plmenu for such locale"
289 echo "was not found, your WMRootMenu contains path to text formated menu:"
290 echo " $GSDIR/Library/WindowMaker/$inst_menu"
292 else
293 echo "Your copy of Window Maker is configured especially for KDE."
294 echo "Window Maker application menus are not available."
298 wmaker_found=0
299 for xinit in .xinitrc .Xclients .xsession; do
300 test ! -f "$HOME/$xinit" && continue
301 res="`grep wmaker $HOME/$xinit`"
302 if test "x$res" != x; then
303 wmaker_found=1
304 break
306 done
307 if test $wmaker_found = 1; then
308 echo "Found Window Maker to already be your default window manager."
309 show_end_message
310 exit 0
314 trap "show_end_message;exit" 2
316 echo
317 echo "Now the .xinitrc, .Xclients or .xsession script must be updated so that"
318 echo "it calls wmaker when you start an X session."
319 echo "Type the name of the file that must be changed (normally .xinitrc)."
320 echo "If the file already exists, it will be backed up with a .old.$DATE "
321 echo "extension"
322 echo "If you want to edit it by hand, hit <Control>-C now."
323 read file
325 if test "x$file" = "x"; then
326 echo "Using .xinitrc as a default value"
327 file=.xinitrc
330 if [ -f $USERDIR/$file ]; then
331 mv $USERDIR/$file $USERDIR/$file.old.$DATE
334 make_script $USERDIR/$file
336 show_end_message