#!/bin/sh
# Creates an "Install Debian" icon on the live session tested with:
# Xfce, LXDE, LXqt, Gnome, KDE, Mate, Cinnamon

# We query xdg-user-dir because the Desktop directory has different
# names for different languages
DESKTOP=$(xdg-user-dir DESKTOP)

# Create ~/Desktop just in case this runs before the xdg folder
# creation script.
mkdir -p $DESKTOP

# Among the Debian desktop environments, LXDE is the only one
# that behaves completely different.
if [ -f /usr/bin/lxsession ]; then
    echo "[Desktop Entry]" > $DESKTOP/calamares-install-debian.desktop
    echo "Type=Link" >> $DESKTOP/calamares-install-debian.desktop
    echo "Name=Install Debian" >> $DESKTOP/calamares-install-debian.desktop
    echo "Icon=install-debian" >> $DESKTOP/calamares-install-debian.desktop
    echo "URL=/usr/share/applications/calamares-install-debian.desktop" \
          >> $DESKTOP/calamares-install-debian.desktop
else
    cp /usr/share/applications/calamares-install-debian.desktop $DESKTOP
    # Xfce needs this executable otherwise it complains, everything
    # else doesn't seem to care either way.
    chmod +x $DESKTOP/calamares-install-debian.desktop
fi

# Set desktop launcher as trusted under Xfce (See: #1037299)
if [ "$XDG_CURRENT_DESKTOP" = "XFCE" ]; then
    gio set --type=string ~/Desktop/calamares-install-debian.desktop \
        metadata::trusted true
    gio set --type=string ~/Desktop/calamares-install-debian.desktop \
        metadata::xfce-exe-checksum \
        "$(sha256sum ~/Desktop/calamares-install-debian.desktop | cut -f1 -d' ')"
    touch ~/Desktop/calamares-install-debian.desktop
fi

# Preload calamares binaries and libraries using idle disk cycles
# so that it launches faster
ionice -C Idle cat /usr/bin/calamares > /dev/null
for file in $(ldd /usr/bin/calamares | awk '{print $3}'); do
    ionice -C Idle cat $file > /dev/null
done
