245 lines
3.9 KiB
Bash
245 lines
3.9 KiB
Bash
#!/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__
|