#!/bin/sh

if ! grep -q 'Raspberry Pi' /proc/device-tree/model || (grep -q okay /proc/device-tree/soc/v3d@7ec00000/status 2> /dev/null || grep -q okay /proc/device-tree/soc/firmwarekms@7e600000/status 2> /dev/null || grep -q okay /proc/device-tree/v3dbus/v3d@7ec04000/status 2> /dev/null) ; then
  export XDG_DATA_DIRS="/usr/share/fkms:/usr/local/share:/usr/share/raspi-ui-overrides:/usr/share:/usr/share/gdm:/var/lib/menu-xdg${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}"
else
  export XDG_DATA_DIRS="/usr/local/share:/usr/share/raspi-ui-overrides:/usr/share:/usr/share/gdm:/var/lib/menu-xdg${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}"
fi

if [ -z "$XDG_CONFIG_HOME" ]; then
  export XDG_CONFIG_HOME="$HOME/.config"
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

# Enable GTK+3 integration for OpenOffice.org, if available.
export SAL_USE_VCLPLUGIN=gtk3

# Launch DBus if needed
if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then
  eval "$(dbus-launch --sh-syntax --exit-with-session)"
fi

export XDG_MENU_PREFIX="lxde-pi-"

TOTAL_MEM=$(vcgencmd get_config total_mem | cut -d= -f2)
VNC=$(systemctl status vncserver-x11-serviced | grep -w active)
if [ $TOTAL_MEM -ge 2048 ] && [ -f /usr/bin/mutter ] && [ -z "$VNC" ] ; then
  if [ -f "$XDG_CONFIG_HOME/gtk-3.0/gtk.css" ] ; then
    rm "$XDG_CONFIG_HOME/gtk-3.0/gtk.css"
  fi
  sync
  export V3D_IGNORE_SCANOUT_USAGES=1
  export CLUTTER_DRIVER="gles2"
  export COGL_DRIVER="gles2"
  exec /usr/bin/lxsession -s LXDE-pi -e LXDE
else
  if [ ! -f "$XDG_CONFIG_HOME/gtk-3.0/gtk.css" ] || ! grep -s -q tooltip "$XDG_CONFIG_HOME/gtk-3.0/gtk.css" ; then
    mkdir -p "$XDG_CONFIG_HOME/gtk-3.0"
    cat > "$XDG_CONFIG_HOME/gtk-3.0/gtk.css" << EOF
tooltip, .tooltip { border-radius: 0px; }
EOF
  fi
  sync
  exec /usr/bin/lxsession -s LXDE-pi -e LXDE -w openbox-lxde-pi
fi
