Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # Copyright 1999, 2002, 2012 Patrick Volkerding, Moorhead, Minnesota USA
- # All rights reserved.
- #
- # Redistribution and use of this script, with or without modification, is
- # permitted provided that the following conditions are met:
- #
- # 1. Redistributions of this script must retain the above copyright
- # notice, this list of conditions and the following disclaimer.
- #
- # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #
- # First, let's bail if our being here doesn't make sense:
- if [ ! -d /etc/X11/xinit ]; then
- exit
- fi
- if [ "`cd /etc/X11/xinit ; echo *.*`" = '*.*' ]; then
- exit
- fi
- if [ "$USER" = "root" ]; then
- TMP=/var/log/setup/tmp
- else
- TMP=$HOME/.xwmconfig
- fi
- if [ ! -d $TMP ]; then
- mkdir -p $TMP
- chmod 700 $TMP
- fi
- # Do we already have an existing default?
- unset PRESELECT
- if [ -L /etc/X11/xinit/xinitrc ]; then
- CURRENT="`/bin/ls -l /etc/X11/xinit/xinitrc | cut -f 2 -d '>' | cut -b2-`"
- PRESELECT=" --default-item $CURRENT "
- fi
- # Figure out who we are and set up some background information:
- if [ "$USER" = "root" ]; then
- BACKTITLE="--backtitle \"Setting system-wide default window manager in /etc/X11/xinit/\""
- else
- BACKTITLE="--backtitle \"Setting default window manager in $HOME/.xinitrc and $HOME/.xsession\""
- fi
- # This stops --backtitle from cluttering the initial install:
- if [ ! -r /proc/kcore ]; then
- BACKTITLE=""
- fi
- # Remove any previous script:
- rm -f $TMP/tmpscript.sh
- # Add the top of the script:
- if [ -r /etc/X11/xinit/xinitrc.gnome -a -r /etc/X11/xinit/xinitrc.kde ]; then
- cat << EOF > $TMP/tmpscript.sh
- #!/bin/sh
- dialog $BACKTITLE --title "SELECT DEFAULT WINDOW MANAGER FOR X" $PRESELECT --menu \\
- "Please select the default window manager to use with the X Window \\
- System. This will define the style of graphical user interface \\
- the computer uses. KDE and GNOME provide the most features. People \\
- with Windows or MacOS experience will find either one easy to use. \\
- Other window managers are easier on system \\
- resources, or provide other unique features." 12 74 0 \\
- EOF
- elif [ -r /etc/X11/xinit/xinitrc.kde ]; then
- cat << EOF > $TMP/tmpscript.sh
- #!/bin/sh
- dialog $BACKTITLE --title "SELECT DEFAULT WINDOW MANAGER FOR X" $PRESELECT --menu \\
- "Please select the default window manager to use with the X Window \\
- System. This will define the style of graphical user interface \\
- the computer uses. KDE provides the most features, and people \\
- with Windows or MacOS experience will find it easy to use. \\
- Other window managers are easier on system \\
- resources, or provide other unique features." 12 74 0 \\
- EOF
- elif [ -r /etc/X11/xinit/xinitrc.xfce ]; then
- cat << EOF > $TMP/tmpscript.sh
- #!/bin/sh
- dialog $BACKTITLE --title "SELECT DEFAULT WINDOW MANAGER FOR X" $PRESELECT --menu \\
- "Please select the default window manager to use with the X Window \\
- System. This will define the style of graphical user interface \\
- the computer uses. XFce provides the most features, and people \\
- with Windows or MacOS experience will find it easy to use. \\
- Other window managers are easier on system \\
- resources, or provide other unique features." 12 74 0 \\
- EOF
- else
- cat << EOF > $TMP/tmpscript.sh
- dialog $BACKTITLE --title "SELECT DEFAULT WINDOW MANAGER FOR X" $PRESELECT --menu \\
- "Please select the default window manager to use with the X Window \\
- System. This will define the style of graphical user interface \\
- the computer uses." 12 74 0 \\
- EOF
- fi
- # Add KDE as the first and default entry:
- if [ -r /etc/X11/xinit/xinitrc.kde ]; then
- echo "\"xinitrc.kde\" \"KDE: K Desktop Environment\" \\" >> $TMP/tmpscript.sh
- fi
- # Then, we add GNOME:
- if [ -r /etc/X11/xinit/xinitrc.gnome ]; then
- echo "\"xinitrc.gnome\" \"GNU Network Object Model Environment\" \\" >> $TMP/tmpscript.sh
- fi
- # Add XFce:
- if [ -r /etc/X11/xinit/xinitrc.xfce ]; then
- echo "\"xinitrc.xfce\" \"The Cholesterol Free Desktop Environment\" \\" >> $TMP/tmpscript.sh
- fi
- # Add Enlightenment:
- if [ -r /etc/X11/xinit/xinitrc.e ]; then
- echo "\"xinitrc.e\" \"Enlightenment\" \\" >> $TMP/tmpscript.sh
- fi
- # Add Fluxbox:
- if [ -r /etc/X11/xinit/xinitrc.fluxbox ]; then
- echo "\"xinitrc.fluxbox\" \"The fluxbox window manager\" \\" >> $TMP/tmpscript.sh
- fi
- # Add Blackbox:
- if [ -r /etc/X11/xinit/xinitrc.blackbox ]; then
- echo "\"xinitrc.blackbox\" \"The blackbox window manager\" \\" >> $TMP/tmpscript.sh
- fi
- # Add WindowMaker:
- if [ -r /etc/X11/xinit/xinitrc.wmaker ]; then
- echo "\"xinitrc.wmaker\" \"WindowMaker\" \\" >> $TMP/tmpscript.sh
- fi
- # Add FVWM2:
- if [ -r /etc/X11/xinit/xinitrc.fvwm2 ]; then
- echo "\"xinitrc.fvwm2\" \"F(?) Virtual Window Manager (version 2.xx)\" \\" >> $TMP/tmpscript.sh
- fi
- # Add FVWM95:
- if [ -r /etc/X11/xinit/xinitrc.fvwm95 ]; then
- echo "\"xinitrc.fvwm95\" \"FVWM2 with a Windows look and feel\" \\" >> $TMP/tmpscript.sh
- fi
- # Add icewm:
- if [ -r /etc/X11/xinit/xinitrc.icewm ]; then
- echo "\"xinitrc.icewm\" \"ICE Window Manager\" \\" >> $TMP/tmpscript.sh
- fi
- # Add sawfish:
- if [ -r /etc/X11/xinit/xinitrc.sawfish ]; then
- echo "\"xinitrc.sawfish\" \"Sawfish without GNOME\" \\" >> $TMP/tmpscript.sh
- fi
- # Add twm:
- if [ -r /etc/X11/xinit/xinitrc.twm ]; then
- echo "\"xinitrc.twm\" \"Tab Window Manager (very basic)\" \\" >> $TMP/tmpscript.sh
- fi
- # Add mwm:
- if [ -r /etc/X11/xinit/xinitrc.mwm ]; then
- echo "\"xinitrc.mwm\" \"Motif WM\" \\" >> $TMP/tmpscript.sh
- fi
- # Now, add support for the other window managers:
- ( cd /etc/X11/xinit
- for file in xinitrc.* ; do
- if [ ! "$file" = "xinitrc.kde" -a ! "$file" = "xinitrc.gnome" \
- -a ! "$file" = "xinitrc.e" -a ! "$file" = "xinitrc.wmaker" \
- -a ! "$file" = "xinitrc.fvwm2" -a ! "$file" = "xinitrc.fvwm95" \
- -a ! "$file" = "xinitrc.icewm" -a ! "$file" = "xinitrc.twm" \
- -a ! "$file" = "xinitrc.mwm" -a ! "$file" = "xinitrc.xfce" \
- -a ! "$file" = "xinitrc.blackbox" -a ! "$file" = "xinitrc.fluxbox" \
- -a ! "$file" = "xinitrc.sawfish" ]; then
- echo "\"$file\" \"$file\" \\" >> $TMP/tmpscript.sh
- fi
- done
- )
- # Then, the tail end:
- cat << EOF >> $TMP/tmpscript.sh
- 2> $TMP/output
- if [ ! \$? = 0 ]; then
- rm -f $TMP/output
- echo "Canceled."
- exit
- fi
- EOF
- sh $TMP/tmpscript.sh
- if [ ! -r $TMP/output ]; then
- rm -f $TMP/tmpscript.sh
- exit
- fi
- OUTPUT=`cat $TMP/output`
- # If xwmconfig is run by root, it changes the system-wide default for users
- # that do not have a $HOME/.xinitrc:
- if [ "$USER" = "root" ]; then
- if [ -r /etc/X11/xinit/$OUTPUT ]; then
- ( cd /etc/X11/xinit ; rm -f xinitrc ; ln -sf $OUTPUT xinitrc )
- fi
- fi
- # Also set up a new $HOME/.xinitrc and $HOME/.xinitrc:
- if [ -r /etc/X11/xinit/$OUTPUT -a ! "$HOME" = "/" ]; then
- if [ -r $HOME/.xinitrc ]; then
- rm -f $HOME/.xinitrc-backup
- mv $HOME/.xinitrc $HOME/.xinitrc-backup
- fi
- cat /etc/X11/xinit/$OUTPUT > $HOME/.xinitrc
- if [ -r $HOME/.xsession ]; then
- rm -f $HOME/.xsession-backup
- mv $HOME/.xsession $HOME/.xsession-backup
- fi
- cat /etc/X11/xinit/$OUTPUT > $HOME/.xsession
- chmod 755 $HOME/.xsession
- fi
- rm -f $TMP/tmpscript.sh $TMP/output
Advertisement
Add Comment
Please, Sign In to add comment