fixed bug of handling non string values in string type options in defaults.c
[wmaker-crm.git] / util / wmaker.inst.in
blob8d1367ac09fa0f55368777c95740e5224cdd368b
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 # directory where system wide configuration is stored
15 GLOBALDIR="#pkgdatadir#"
16 GLOBALDEFDIR="#sysconfdir#"
18 USERDIR=$HOME
20 VERSION="#version#"
22 BINDIR="#bindir#"
24 make_dir() {
25 mkdir $1
26 chmod +rwx $1
29 make_script() {
30 ISCRIPT=$1
32 cat << EOF >> $ISCRIPT
33 # Window Maker default X session startup script
35 PATH="\$PATH:$BINDIR"
37 # If you login from xdm, uncomment this to make error messages appear
38 # in the console window.
40 # tail -f $HOME/.xsession-errors > /dev/console &
42 exec wmaker
44 EOF
45 chmod +rx $ISCRIPT
50 # Copy files considering special cases
52 copy() {
53 source=$1
54 target=$2
55 file=`basename $source`
56 rm -f $target
57 if [ "$file" = "WMRootMenu" ]; then
58 echo \"$GSDIR/Library/WindowMaker/menu\" > \
59 $target
60 elif [ "$file" = "WindowMaker" ]; then
61 sed -e "s|~/GNUstep|$GSDIR|g" $source > $target
62 else
63 if test "x$GNUSTEP_USER_ROOT" = "x"; then
64 sed -e "s:#wmdatadir#:$GLOBALDIR:g" \
65 $source > $target
66 else
67 sed -e "s|\$HOME/GNUstep|$GSDIR|g" \
68 -e "s:#wmdatadir#:$GLOBALDIR:g" \
69 $source > $target
76 echo "Installing WindowMaker $VERSION for current user..."
79 if [ ! -d $GLOBALDIR ]; then
80 echo "Could not find global data files"
81 echo "Make sure you have installed Window Maker correctly"
82 exit 1
85 if [ ! -d $GLOBALDEFDIR ]; then
86 echo "Could not find global configurations files"
87 echo "Make sure you have installed Window Maker correctly"
88 exit 1
91 if [ ! -d "$USERDIR" ]; then
92 echo "Could not find user directory $USERDIR"
93 exit 1
97 if test "x$GNUSTEP_USER_ROOT" = "x"; then
98 cd $USERDIR
99 GSDIR=$USERDIR/GNUstep
100 if [ ! -d $GSDIR ]; then
101 echo "Creating $GSDIR user directory"
102 make_dir $GSDIR
104 else
105 GSDIR=$GNUSTEP_USER_ROOT
106 if [ ! -d $GSDIR ]; then
107 echo "Directory specified in GNUSTEP_USER_ROOT environment variable does not exist"
108 exit 1
110 cd $GSDIR
111 cd ..
115 if [ ! -d "$GSDIR/.AppInfo" ]; then
116 make_dir $GSDIR/.AppInfo
119 if [ ! -d "$GSDIR/Defaults" ]; then
120 make_dir $GSDIR/Defaults
123 echo "Copying defaults database..."
125 FILES=`(cd $GLOBALDEFDIR;ls -d *)`
126 all=""
127 for i in $FILES; do
128 if [ ! -d $GLOBALDEFDIR/$i ]; then
129 if [ -f $GSDIR/Defaults/$i -a -z "$BATCH" ]; then
130 echo "The configuration file \"$i\" already exists in your defaults database."
131 echo "Do you wish to replace it? <y/n/a> [n] $all"
132 if [ "$all" != "a" ]; then
133 read foo
134 if [ "$foo" = "a" -o "$foo" = "A" ]; then
135 all="a"
138 if [ "$foo" = "y" -o "$foo" = "Y" -o "$all" = "a" ]; then
139 copy $GLOBALDEFDIR/$i $GSDIR/Defaults/$i
141 else
142 copy $GLOBALDEFDIR/$i $GSDIR/Defaults/$i
145 done
148 if [ ! -d "$GSDIR/Library/Icons/" ]; then
149 echo "Creating icon library directory $GSDIR/Library/Icons"
150 if [ ! -d $GSDIR/Library ]; then
151 make_dir $GSDIR/Library
153 make_dir $GSDIR/Library/Icons
157 if [ ! -d "$GSDIR/Library/WindowMaker/" ]; then
158 echo "Creating WindowMaker data library directory $GSDIR/Library/WindowMaker"
159 if [ ! -d $GSDIR/Library ]; then
160 make_dir $GSDIR/Library
162 make_dir $GSDIR/Library/WindowMaker
165 if [ ! -d "$GSDIR/Library/WindowMaker/Styles" ]; then
166 echo "Creating style library $GSDIR/Library/WindowMaker/Styles"
167 make_dir $GSDIR/Library/WindowMaker/Styles
171 if [ ! -d "$GSDIR/Library/WindowMaker/Themes" ]; then
172 echo "Creating theme library $GSDIR/Library/WindowMaker/Themes"
173 make_dir $GSDIR/Library/WindowMaker/Themes
178 if [ ! -d "$GSDIR/Library/WindowMaker/Backgrounds" ]; then
179 echo "Creating bg image library $GSDIR/Library/WindowMaker/Backgrounds"
180 make_dir $GSDIR/Library/WindowMaker/Backgrounds
181 else
182 echo "Default Backgrounds directory already exists. Skipping..."
186 if [ ! -d "$GSDIR/Library/WindowMaker/IconSets" ]; then
187 echo "Creating icon setup library $GSDIR/Library/WindowMaker/IconSets"
188 make_dir $GSDIR/Library/WindowMaker/IconSets
189 else
190 echo "Default IconSets directory already exists. Skipping..."
194 if [ ! -d "$GSDIR/Library/WindowMaker/Pixmaps" ]; then
195 echo "Creating pixmap library $GSDIR/Library/WindowMaker/Pixmaps"
196 make_dir $GSDIR/Library/WindowMaker/Pixmaps
197 else
198 echo "Default Pixmaps directory already exists. Skipping..."
202 if [ ! -d "$GSDIR/Library/WindowMaker/Sounds" ]; then
203 echo "Creating sound library $GSDIR/Library/WindowMaker/Sounds"
204 make_dir $GSDIR/Library/WindowMaker/Sounds
205 else
206 echo "Default Sounds directory already exists. Skipping..."
210 if [ ! -d "$GSDIR/Library/WindowMaker/SoundSets" ]; then
211 echo "Creating sound set library $GSDIR/Library/WindowMaker/SoundSets"
212 make_dir $GSDIR/Library/WindowMaker/SoundSets
213 else
214 echo "Default SoundSets directory already exists. Skipping..."
218 if test -z "#LITE#" ; then
219 FILES=`(cd $GLOBALDIR; ls menu menu.* plmenu plmenu.?? wmmacros)`
220 for i in $FILES; do
221 # xx herbert
222 if [ -f "$GSDIR/Library/WindowMaker/$i" -a -z "$BATCH" ]; then
223 # /xx herbert
224 echo "The file \"$i\" already exists in $GSDIR/Library/WindowMaker"
225 echo "Do you wish to replace it? <y/n/a> [n] $all"
226 if [ "$all" != "a" ]; then
227 read foo
228 if [ "$foo" = "a" -o "$foo" = "A" ]; then
229 all="a"
232 if [ "$foo" = "y" -o "$foo" = "Y" -o "$foo" = "a" ]; then
233 copy $GLOBALDIR/$i $GSDIR/Library/WindowMaker/$i
235 else
236 copy $GLOBALDIR/$i $GSDIR/Library/WindowMaker/$i
238 done
241 cp $GLOBALDIR/README.themes $GSDIR/Library/WindowMaker
242 cp $GLOBALDIR/README $GSDIR/Library/WindowMaker
244 test -f ~$GSDIR/Library/WindowMaker/autostart || \
245 cp $GLOBALDIR/autostart.sh $GSDIR/Library/WindowMaker/autostart
246 chmod +rx $GSDIR/Library/WindowMaker/autostart
248 test -f ~$GSDIR/Library/WindowMaker/exitscript || \
249 cp $GLOBALDIR/exitscript.sh $GSDIR/Library/WindowMaker/exitscript
250 chmod +rx $GSDIR/Library/WindowMaker/exitscript
252 # xx herbert
253 if test -n "$BATCH" ; then
254 echo "Installation Finished"
255 exit 0
257 # /xx herbert
261 #######################
263 DATE=`date +%b%d.%T`
265 show_end_message() {
267 echo
268 echo "Installation Finished"
269 echo
270 if test -z "#LITE#" ; then
271 echo "There are menus in 2 different file formats. The plain text format and"
272 echo "the property list format. The plain text format is more flexible, but"
273 echo "the menu in the property list format can be edited graphically. The"
274 echo "menu that will be used by default is the plain text. Read"
275 echo "$GSDIR/Library/WindowMaker/README for information on how to change it."
276 else
277 echo "Your copy of Window Maker is configured especially for KDE."
278 echo "Window Maker application menus are not available."
282 wmaker_found=0
283 for xinit in .xinitrc .Xclients .xsession; do
284 test ! -f "$HOME/$xinit" && continue
285 res="`grep wmaker $HOME/$xinit`"
286 if test "x$res" != x; then
287 wmaker_found=1
288 break
290 done
291 if test $wmaker_found = 1; then
292 echo "Found Window Maker to already be your default window manager."
293 show_end_message
294 exit 0
298 trap "show_end_message;exit" 2
300 echo
301 echo "Now the .xinitrc, .Xclients or .xsession script must be updated so that"
302 echo "it calls wmaker when you start an X session."
303 echo "Type the name of the file that must be changed (normally .xinitrc)."
304 echo "If the file already exists, it will be backed up with a .old.$DATE "
305 echo "extension"
306 echo "If you want to edit it by hand, hit <Control>-C now."
307 read file
309 if test "x$file" = "x"; then
310 echo "Using .xinitrc as a default value"
311 file=.xinitrc
314 if [ -f $USERDIR/$file ]; then
315 mv $USERDIR/$file $USERDIR/$file.old.$DATE
318 make_script $USERDIR/$file
320 show_end_message