#!/bin/sh

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

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

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"

# 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"

export WAYLAND_COMPOSITOR=labwc

# Create lxqt-wayland settings directory if not existing
mkdir -p $XDG_CONFIG_HOME/lxqt-wayland

# Copy default lxqt-labwc configuration if not existing
if [[ ! -d "$XDG_CONFIG_HOME/lxqt-wayland/labwc" ]]
   then
   cp -a /usr/share/lxqt/wayland/labwc "$XDG_CONFIG_HOME"/lxqt-wayland/
fi

# Copy lxqt-wayland-panel.conf if not existing
if [[ ! -f "$XDG_CONFIG_HOME/lxqt-wayland/panel-wayland.conf" ]]
   then
   cp /usr/share/lxqt/wayland/panel-wayland.conf "$XDG_CONFIG_HOME"/lxqt-wayland/
fi

# Copy waybar and yatbfw taskbar settings
mkdir -p $XDG_CONFIG_HOME/waybar

if [[ ! -f "$XDG_CONFIG_HOME/waybar/taskbar.config" ]]
   then
   cp /usr/share/lxqt/wayland/waybar/taskbar.config "$XDG_CONFIG_HOME"/waybar/
fi
if [[ ! -f "$XDG_CONFIG_HOME/waybar/lxqt-style.css" ]]
   then
   cp /usr/share/lxqt/wayland/waybar/lxqt*.css "$XDG_CONFIG_HOME"/waybar/
fi
if [[ ! -f "$XDG_CONFIG_HOME/yatbfw-taskbar.json" ]]
   then
   cp /usr/share/lxqt/wayland/yatbfw-taskbar.json "$XDG_CONFIG_HOME"/
fi

# Import keyboard layout
lxqt-settingsexporter
## End LXQt common settings

# Start the compositor and lxqt-session
exec labwc -d -C $XDG_CONFIG_HOME/lxqt-wayland/labwc -s lxqt-session
