#!/bin/sh

contains()
{
    local str="$1" substr="$2"
    [ "$str" = "$substr" -o -z "${str##$substr:*}" -o -z "${str##*:$substr:*}" -o -z "${str%%*:$substr}" ]
}

# (tpg) create localized user dirs
if $(command -v xdg-user-dirs-update); then
    xdg-user-dirs-update
fi

# (cb) remove the ksycoca cache which could possibly have been invalid
rm -f $HOME/.cache/ksycoca* ||:

if [ -z "$XDG_DATA_HOME" ]; then
    export XDG_DATA_HOME="$HOME/.local/share"
fi

if [ -z "$XDG_CONFIG_HOME" ]; then
    export XDG_CONFIG_HOME="$HOME/.config"
fi

if [ -z "$XDG_DATA_DIRS" ]; then
    XDG_DATA_DIRS="$XDG_DATA_HOME:/usr/local/share:/usr/share"
else
    if ! contains "$XDG_DATA_DIRS" "/usr/share"; then
        XDG_DATA_DIRS="$XDG_DATA_DIRS:/usr/share"
    fi
fi
export XDG_DATA_DIRS

export XDG_CONFIG_DIRS=/etc/xdg
if [ -z "$XDG_CONFIG_DIRS" ]; then
    export XDG_CONFIG_DIRS="/etc:/etc/xdg:/usr/share"
else
    if ! contains "$XDG_CONFIG_DIRS" '/etc/xdg'; then
        XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS:/etc/xdg"
    fi
fi

if [ -z "$XDG_CACHE_HOME" ]; then
    export XDG_CACHE_HOME="$HOME/.cache"
fi

# Ensure the existence of the 'Desktop' folder
if [ -e "$XDG_CONFIG_HOME/user-dirs.dirs" ]; then
    . "$XDG_CONFIG_HOME/user-dirs.dirs"
else
    XDG_DESKTOP_DIR="$HOME/Desktop"
fi
mkdir -p "$XDG_DESKTOP_DIR"

# Clean up after GDM (GDM sets the number of desktops to one)
xprop -root -remove _NET_NUMBER_OF_DESKTOPS -remove _NET_DESKTOP_NAMES -remove _NET_CURRENT_DESKTOP 2> /dev/null

# Launch DBus if needed
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
    if [ -z "$XDG_RUNTIME_DIR" ] || ! [ -S "$XDG_RUNTIME_DIR/bus" ] || ! [ -O "$XDG_RUNTIME_DIR/bus" ]; then
        eval "$(dbus-launch --sh-syntax --exit-with-session)" || echo "startlxqt: error executing dbus-launch" >&2
    fi
fi

# Qt4 platform plugin
export QT_PLATFORM_PLUGIN=lxqt

# Qt5 platform plugin
export QT_QPA_PLATFORMTHEME=lxqt

# use lxqt-applications.menu for main app menu
export XDG_MENU_PREFIX="lxqt-"

export XDG_CURRENT_DESKTOP="LXQt"

# (tpg) copy default settings because LxQt cannot read them from /etc
# FIXME this was true for 1.x, but 2.x migrated towards QSettings.
# Let's take it out and see if it's still needed for some parts.
if test "x$XDG_CONFIG_HOME" = "x"
then
    BASEDIR="$HOME/.config"
else
    BASEDIR="$XDG_CONFIG_HOME"
fi

#if [ ! -d $BASEDIR/lxqt ]; then
#    mkdir -p $BASEDIR/lxqt
#    cp -af /etc/xdg/lxqt/*.conf $BASEDIR/lxqt
#fi
#
#if [ ! -d $BASEDIR/pcmanfm-qt ]; then
#    mkdir -p $BASEDIR/pcmanfm-qt/lxqt
#    cp -af /etc/xdg/pcmanfm-qt/lxqt/*.conf $BASEDIR/pcmanfm-qt/lxqt
#fi

if [ ! -e $XDG_CONFIG_HOME/lxqt.firstboot ]; then
#(tpg) add special icons on DESKTOP
    USER_DESKTOP="$(xdg-user-dir DESKTOP)"

    if [ ! -e $USER_DESKTOP/om-welcome.desktop ]; then
	if [ -e /usr/share/applications/om-welcome.desktop ]; then
	    cp -f /usr/share/applications/om-welcome.desktop $USER_DESKTOP 2> /dev/null
	    chmod +x $USER_DESKTOP/om-welcome.desktop
	fi
    fi

    if [ ! -e $USER_DESKTOP/join.desktop ]; then
	cp -f /usr/share/applications/join.desktop $USER_DESKTOP 2> /dev/null
	chmod +x $USER_DESKTOP/join.desktop
    fi

    if [ ! -e $USER_DESKTOP/donate.desktop ]; then
	cp -f /usr/share/applications/donate.desktop $USER_DESKTOP 2> /dev/null
	chmod +x $USER_DESKTOP/donate.desktop
    fi

    if [ ! -e $USER_DESKTOP/calamares.desktop ]; then
	if [ -e /usr/share/applications/calamares.desktop ]; then
	    cp -f /usr/share/applications/calamares.desktop $USER_DESKTOP 2> /dev/null
	    chmod +x $USER_DESKTOP/calamares.desktop
	fi
    fi

    touch $XDG_CONFIG_HOME/lxqt.firstboot

fi

# workaround for openbox not being start on first boot
if cat $BASEDIR/lxqt/session.conf | grep -w window_manager=openbox > /dev/null 2>&1; then
    if ! pgrep "openbox" > /dev/null 2>&1; then
	exec /usr/bin/openbox &
    fi
fi

# Start the LXQt session
exec lxqt-session
