mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 12:28:22 +01:00
354 lines
8.5 KiB
Bash
354 lines
8.5 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Install Window Maker for the current user
|
|
#
|
|
|
|
# xx herbert
|
|
if test "x$1" = "x--batch" ; then
|
|
BATCH="1"
|
|
else
|
|
BATCH=""
|
|
fi
|
|
# /xx herbert
|
|
|
|
# name of menu file we install (menu, plmenu)
|
|
inst_menu=""
|
|
|
|
LOCALE=$LANG
|
|
if [ -z "$LOCALE" ]; then
|
|
LOCALE=$LC_ALL
|
|
fi
|
|
|
|
# directory where system wide configuration is stored
|
|
GLOBALDIR="#pkgdatadir#"
|
|
GLOBALDEFDIR="#sysconfdir#"
|
|
|
|
USERDIR=$HOME
|
|
|
|
VERSION="#version#"
|
|
|
|
BINDIR="#bindir#"
|
|
|
|
make_dir() {
|
|
mkdir $1
|
|
chmod +rwx $1
|
|
}
|
|
|
|
make_script() {
|
|
ISCRIPT=$1
|
|
|
|
cat << EOF >> $ISCRIPT
|
|
# Window Maker default X session startup script
|
|
|
|
PATH="\$PATH:$BINDIR"
|
|
|
|
# If you login from xdm, uncomment this to make error messages appear
|
|
# in the console window.
|
|
#
|
|
# tail -f $HOME/.xsession-errors > /dev/console &
|
|
|
|
exec wmaker
|
|
|
|
EOF
|
|
chmod +rx $ISCRIPT
|
|
}
|
|
|
|
|
|
#
|
|
# Copy files considering special cases
|
|
#
|
|
copy() {
|
|
source=$1
|
|
target=$2
|
|
file=`basename $source`
|
|
rm -f $target
|
|
if [ "$file" = "WindowMaker" ]; then
|
|
sed -e "s|~/GNUstep|$GSDIR|g" $source > $target
|
|
elif [ "$file" = "WMRootMenu" ]; then
|
|
if [ "$LOCALE" ]; then
|
|
if [ -f $GLOBALDIR/plmenu.$LOCALE ]; then
|
|
source=$GLOBALDIR/plmenu.$LOCALE
|
|
elif [ -f $GLOBALDIR/plmenu.${LOCALE%.*} ]; then
|
|
source=$GLOBALDIR/plmenu.${LOCALE%.*}
|
|
elif [ -f $GLOBALDIR/plmenu.${LOCALE%_*} ]; then
|
|
source=$GLOBALDIR/plmenu.${LOCALE%_*}
|
|
elif [ -f $GLOBALDIR/menu.${LOCALE%_*} ]; then
|
|
source=$GLOBALDIR/menu.${LOCALE%_*}
|
|
else
|
|
source=$GLOBALDIR/plmenu
|
|
fi
|
|
else
|
|
source=$GLOBALDIR/plmenu
|
|
fi
|
|
sed -e "s:#wmdatadir#:$GLOBALDIR:g" \
|
|
$source > $GSDIR/Defaults/WMRootMenu
|
|
else
|
|
if test "x$GNUSTEP_USER_ROOT" = "x"; then
|
|
sed -e "s:#wmdatadir#:$GLOBALDIR:g" \
|
|
$source > $target
|
|
else
|
|
sed -e "s|\$HOME/GNUstep|$GSDIR|g" \
|
|
-e "s:#wmdatadir#:$GLOBALDIR:g" \
|
|
$source > $target
|
|
fi
|
|
fi
|
|
}
|
|
|
|
|
|
|
|
echo "Installing WindowMaker $VERSION for current user..."
|
|
|
|
|
|
if [ ! -d $GLOBALDIR ]; then
|
|
echo "Could not find global data files"
|
|
echo "Make sure you have installed Window Maker correctly"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d $GLOBALDEFDIR ]; then
|
|
echo "Could not find global configurations files"
|
|
echo "Make sure you have installed Window Maker correctly"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d "$USERDIR" ]; then
|
|
echo "Could not find user directory $USERDIR"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
if test "x$GNUSTEP_USER_ROOT" = "x"; then
|
|
cd $USERDIR
|
|
GSDIR=$USERDIR/GNUstep
|
|
if [ ! -d $GSDIR ]; then
|
|
echo "Creating $GSDIR user directory"
|
|
make_dir $GSDIR
|
|
fi
|
|
else
|
|
GSDIR=$GNUSTEP_USER_ROOT
|
|
if [ ! -d $GSDIR ]; then
|
|
echo "Directory specified in GNUSTEP_USER_ROOT environment variable does not exist"
|
|
exit 1
|
|
fi
|
|
cd $GSDIR
|
|
cd ..
|
|
fi
|
|
|
|
|
|
if [ ! -d "$GSDIR/.AppInfo" ]; then
|
|
make_dir $GSDIR/.AppInfo
|
|
fi
|
|
|
|
if [ ! -d "$GSDIR/Defaults" ]; then
|
|
make_dir $GSDIR/Defaults
|
|
fi
|
|
|
|
echo "Copying defaults database..."
|
|
|
|
FILES=`(cd $GLOBALDEFDIR;ls -d *)`
|
|
all=""
|
|
for i in $FILES; do
|
|
if [ ! -d $GLOBALDEFDIR/$i ]; then
|
|
if [ -f $GSDIR/Defaults/$i -a -z "$BATCH" ]; then
|
|
echo "The configuration file \"$i\" already exists in your defaults database."
|
|
echo "Do you wish to replace it? <y/n/a> [n] $all"
|
|
if [ "$all" != "a" ]; then
|
|
read foo
|
|
if [ "$foo" = "a" -o "$foo" = "A" ]; then
|
|
all="a"
|
|
fi
|
|
fi
|
|
if [ "$foo" = "y" -o "$foo" = "Y" -o "$all" = "a" ]; then
|
|
copy $GLOBALDEFDIR/$i $GSDIR/Defaults/$i
|
|
fi
|
|
else
|
|
copy $GLOBALDEFDIR/$i $GSDIR/Defaults/$i
|
|
fi
|
|
fi
|
|
done
|
|
|
|
|
|
if [ ! -d "$GSDIR/Library/Icons/" ]; then
|
|
echo "Creating icon library directory $GSDIR/Library/Icons"
|
|
if [ ! -d $GSDIR/Library ]; then
|
|
make_dir $GSDIR/Library
|
|
fi
|
|
make_dir $GSDIR/Library/Icons
|
|
fi
|
|
|
|
|
|
if [ ! -d "$GSDIR/Library/WindowMaker/" ]; then
|
|
echo "Creating WindowMaker data library directory $GSDIR/Library/WindowMaker"
|
|
if [ ! -d $GSDIR/Library ]; then
|
|
make_dir $GSDIR/Library
|
|
fi
|
|
make_dir $GSDIR/Library/WindowMaker
|
|
fi
|
|
|
|
if [ ! -d "$GSDIR/Library/WindowMaker/Styles" ]; then
|
|
echo "Creating style library $GSDIR/Library/WindowMaker/Styles"
|
|
make_dir $GSDIR/Library/WindowMaker/Styles
|
|
fi
|
|
|
|
|
|
if [ ! -d "$GSDIR/Library/WindowMaker/Themes" ]; then
|
|
echo "Creating theme library $GSDIR/Library/WindowMaker/Themes"
|
|
make_dir $GSDIR/Library/WindowMaker/Themes
|
|
fi
|
|
|
|
|
|
|
|
if [ ! -d "$GSDIR/Library/WindowMaker/Backgrounds" ]; then
|
|
echo "Creating bg image library $GSDIR/Library/WindowMaker/Backgrounds"
|
|
make_dir $GSDIR/Library/WindowMaker/Backgrounds
|
|
else
|
|
echo "Default Backgrounds directory already exists. Skipping..."
|
|
fi
|
|
|
|
|
|
if [ ! -d "$GSDIR/Library/WindowMaker/IconSets" ]; then
|
|
echo "Creating icon setup library $GSDIR/Library/WindowMaker/IconSets"
|
|
make_dir $GSDIR/Library/WindowMaker/IconSets
|
|
else
|
|
echo "Default IconSets directory already exists. Skipping..."
|
|
fi
|
|
|
|
|
|
if [ ! -d "$GSDIR/Library/WindowMaker/Pixmaps" ]; then
|
|
echo "Creating pixmap library $GSDIR/Library/WindowMaker/Pixmaps"
|
|
make_dir $GSDIR/Library/WindowMaker/Pixmaps
|
|
else
|
|
echo "Default Pixmaps directory already exists. Skipping..."
|
|
fi
|
|
|
|
|
|
if [ ! -d "$GSDIR/Library/WindowMaker/Sounds" ]; then
|
|
echo "Creating sound library $GSDIR/Library/WindowMaker/Sounds"
|
|
make_dir $GSDIR/Library/WindowMaker/Sounds
|
|
else
|
|
echo "Default Sounds directory already exists. Skipping..."
|
|
fi
|
|
|
|
|
|
if [ ! -d "$GSDIR/Library/WindowMaker/SoundSets" ]; then
|
|
echo "Creating sound set library $GSDIR/Library/WindowMaker/SoundSets"
|
|
make_dir $GSDIR/Library/WindowMaker/SoundSets
|
|
else
|
|
echo "Default SoundSets directory already exists. Skipping..."
|
|
fi
|
|
|
|
|
|
if test -z "#LITE#" ; then
|
|
FILES=`(cd $GLOBALDIR; ls menu menu.* plmenu plmenu.?? wmmacros)`
|
|
for i in $FILES; do
|
|
# xx herbert
|
|
if [ -f "$GSDIR/Library/WindowMaker/$i" -a -z "$BATCH" ]; then
|
|
# /xx herbert
|
|
echo "The file \"$i\" already exists in $GSDIR/Library/WindowMaker"
|
|
echo "Do you wish to replace it? <y/n/a> [n] $all"
|
|
if [ "$all" != "a" ]; then
|
|
read foo
|
|
if [ "$foo" = "a" -o "$foo" = "A" ]; then
|
|
all="a"
|
|
fi
|
|
fi
|
|
if [ "$foo" = "y" -o "$foo" = "Y" -o "$foo" = "a" ]; then
|
|
copy $GLOBALDIR/$i $GSDIR/Library/WindowMaker/$i
|
|
fi
|
|
else
|
|
copy $GLOBALDIR/$i $GSDIR/Library/WindowMaker/$i
|
|
fi
|
|
done
|
|
fi
|
|
|
|
cp $GLOBALDIR/README.themes $GSDIR/Library/WindowMaker
|
|
cp $GLOBALDIR/README $GSDIR/Library/WindowMaker
|
|
|
|
test -f ~$GSDIR/Library/WindowMaker/autostart || \
|
|
cp $GLOBALDIR/autostart.sh $GSDIR/Library/WindowMaker/autostart
|
|
chmod +rx $GSDIR/Library/WindowMaker/autostart
|
|
|
|
test -f ~$GSDIR/Library/WindowMaker/exitscript || \
|
|
cp $GLOBALDIR/exitscript.sh $GSDIR/Library/WindowMaker/exitscript
|
|
chmod +rx $GSDIR/Library/WindowMaker/exitscript
|
|
|
|
# no need to call wmchlocale --auto, since national menu is already copied
|
|
wsetfont --auto
|
|
|
|
# xx herbert
|
|
if test -n "$BATCH" ; then
|
|
echo "Installation Finished"
|
|
exit 0
|
|
fi
|
|
# /xx herbert
|
|
|
|
|
|
#
|
|
#######################
|
|
|
|
DATE=`date +%b%d.%T`
|
|
|
|
show_end_message() {
|
|
|
|
echo
|
|
echo "Installation Finished"
|
|
echo
|
|
if test -z "#LITE#" ; then
|
|
echo "There are menus in 2 different file formats. The plain text format and"
|
|
echo "the property list format. The plain text format is more flexible, but"
|
|
echo "the menu in the property list format can be edited graphically. The"
|
|
echo "menu that will be used by default is the property list one. Read"
|
|
echo " $GSDIR/Library/WindowMaker/README"
|
|
echo "for information on how to change it."
|
|
if [ "${inst_menu%.*}" = "menu" ]; then
|
|
echo "However, since you have locale set to $LOCALE and plmenu for such locale"
|
|
echo "was not found, your WMRootMenu contains path to text formated menu:"
|
|
echo " $GSDIR/Library/WindowMaker/$inst_menu"
|
|
fi
|
|
else
|
|
echo "Your copy of Window Maker is configured especially for KDE."
|
|
echo "Window Maker application menus are not available."
|
|
fi
|
|
}
|
|
|
|
wmaker_found=0
|
|
for xinit in .xinitrc .Xclients .xsession; do
|
|
test ! -f "$HOME/$xinit" && continue
|
|
res="`grep wmaker $HOME/$xinit`"
|
|
if test "x$res" != x; then
|
|
wmaker_found=1
|
|
break
|
|
fi
|
|
done
|
|
if test $wmaker_found = 1; then
|
|
echo "Found Window Maker to already be your default window manager."
|
|
show_end_message
|
|
exit 0
|
|
fi
|
|
|
|
|
|
trap "show_end_message;exit" 2
|
|
|
|
echo
|
|
echo "Now the .xinitrc, .Xclients or .xsession script must be updated so that"
|
|
echo "it calls wmaker when you start an X session."
|
|
echo "Type the name of the file that must be changed (normally .xinitrc)."
|
|
echo "If the file already exists, it will be backed up with a .old.$DATE "
|
|
echo "extension"
|
|
echo "If you want to edit it by hand, hit <Control>-C now."
|
|
read file
|
|
|
|
if test "x$file" = "x"; then
|
|
echo "Using .xinitrc as a default value"
|
|
file=.xinitrc
|
|
fi
|
|
|
|
if [ -f $USERDIR/$file ]; then
|
|
mv $USERDIR/$file $USERDIR/$file.old.$DATE
|
|
fi
|
|
|
|
make_script $USERDIR/$file
|
|
|
|
show_end_message
|
|
|