#!/bin/sh can_ask=y finish() { if [ "$can_ask" = "y" ]; then echo "" echo -n "Press enter to continue..." read foo fi exit $1 } # # Make sure we have a terminal to talk to # if tty -s; then : else case "$DISPLAY" in "") echo 'No user input available' can_ask=n ;; *) GUESS_XTERMS="x-terminal-emulator xterm rxvt roxterm gnome-terminal dtterm eterm Eterm kvt konsole aterm" for a in $GUESS_XTERMS; do if type $a >/dev/null 2>&1; then XTERM=$a break fi done case "$XTERM" in "") echo 'No terminal emulator available' can_ask=n ;; *) exec "$XTERM" -e "sh '$0'" ;; esac ;; esac fi # # Make sure we can run java # echo -n "Checking for java..." if java -version > /dev/null 2>&1; then echo " found it." else echo " java isn't working." echo "" echo "You'll need to install a java runtime system" echo "on this computer before AltOS will work properly." finish 1 fi # # Pick an installation target # if [ '(' -d /opt -a -w /opt ')' -o '(' -d /opt/AltOS -a -w /opt/AltOS ')' ]; then target_default=/opt else target_default="$HOME" fi case "$#" in 0) echo -n "Installation location [default: $target_default] " if [ "$can_ask" = "y" ]; then read target else echo "" target="" fi case "$target" in "") target="$target_default" ;; esac ;; *) target="$1" ;; esac target_altos="$target"/AltOS echo -n "Installing to $target..." # # Make sure the target exists # mkdir -p "$target_altos" if [ ! -d "$target_altos" ]; then echo "$target_altos does not exist and cannot be created" finish 1 fi if [ ! -w "$target_altos" ]; then echo "$target_altos cannot be written" finish 1 fi # # Unpack the tar archive appended to the end of this script # archive_line=`awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' "$0"` tail -n+$archive_line "$0" | tar xjf - -C "$target" case $? in 0) echo " done." ;; *) echo "Install failed." finish 1 ;; esac # # Create the .desktop file by editing the paths # case "$target" in /*) target_abs="$target" ;; *) target_abs=`pwd`/$target ;; esac BIN="$target_abs"/AltOS for infile in "$target"/AltOS/*.desktop.in; do desktop="$target"/AltOS/`basename "$infile" .in` rm -f "$desktop" sed -e "s;%bindir%;$BIN;" -e "s;%icondir%;$BIN;" "$infile" > "$desktop" chmod +x "$desktop" done # # Install the .desktop file # for desktop in "$target"/AltOS/*.desktop; do case `id -u` in 0) xdg-desktop-menu install --mode system "$desktop" ;; *) xdg-desktop-menu install --mode user "$desktop" ;; esac done # # Install mime type file # for mimetype in "$target"/AltOS/*-mimetypes.xml; do case `id -u` in 0) xdg-mime install --mode system "$mimetype" ;; *) xdg-mime install --mode user "$mimetype" ;; esac done # # Install icons # for icon_dir in /usr/share/icons/hicolor/scalable/mimetypes "$HOME/.icons" "$HOME/.kde/share/icons"; do if [ -w "$icon_dir" ]; then cp "$target"/AltOS/*.svg "$icon_dir" update-icon-caches "$icon_dir" fi done # # Install icon to desktop if desired # if [ -d $HOME/Desktop ]; then default_desktop=n if [ "$can_ask" = "y" ]; then : else default_desktop=y fi answered=n while [ "$answered" = "n" ]; do echo -n "Install icons to desktop? [default: $default_desktop] " if [ "$can_ask" = "y" ]; then read do_desktop else echo do_desktop="" fi case "$do_desktop" in "") do_desktop=$default_desktop ;; esac case "$do_desktop" in [yYnN]*) answered=y ;; esac done case "$do_desktop" in [yY]*) echo -n "Installing desktop icons..." for d in "$target"/AltOS/*.desktop; do base=`basename $d` cp --remove-destination "$d" "$HOME/Desktop/" done ;; esac echo " done." fi finish 0 __ARCHIVE_BELOW__