#!/bin/sh

if [ "x$XDG_SESSION_TYPE" = "xwayland" ] &&
   [ "x$XDG_SESSION_CLASS" != "xgreeter" ] &&
   [  -n "$SHELL" ] &&
   grep -q "$SHELL" /etc/shells &&
   ! (echo "$SHELL" | grep -q "false") &&
   ! (echo "$SHELL" | grep -q "nologin"); then
  if [ "$1" != '-l' ]; then
    exec bash -c "exec -l '$SHELL' -c '$0 -l $*'"
  else
    shift

    # Source some profile scripts in gnome so we dont have to
    # depend on a systemd locale service.
    # This code was copied from KDE's "wayland-session" script.
    # Copyright (C) 2015-2016 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
    # This file is extracted from kde-workspace (kdm/kfrontend/genkdmconf.c)
    # Copyright (C) 2001-2005 Oswald Buddenhagen <ossi@kde.org>
    # Added to gnome's "gnome-session" script by Bob Funk <bobfunk11@gmail.com>
    # Note that the respective logout scripts are not sourced.
    case $SHELL in
      */bash)
        [ -z "$BASH" ] && exec $SHELL $0 "$@"
        set +o posix
        [ -f /etc/profile ] && . /etc/profile
        if [ -f $HOME/.bash_profile ]; then
          . $HOME/.bash_profile
        elif [ -f $HOME/.bash_login ]; then
          . $HOME/.bash_login
        elif [ -f $HOME/.profile ]; then
          . $HOME/.profile
        fi
      ;;
      */zsh)
        [ -z "$ZSH_NAME" ] && exec $SHELL $0 "$@"
        [ -d /etc/zsh ] && zdir=/etc/zsh || zdir=/etc
        zhome=${ZDOTDIR:-$HOME}
        # zshenv is always sourced automatically.
        [ -f $zdir/zprofile ] && . $zdir/zprofile
        [ -f $zhome/.zprofile ] && . $zhome/.zprofile
        [ -f $zdir/zlogin ] && . $zdir/zlogin
        [ -f $zhome/.zlogin ] && . $zhome/.zlogin
        emulate -R sh
      ;;
      */csh|*/tcsh)
        # [t]cshrc is always sourced automatically.
        # Note that sourcing csh.login after .cshrc is non-standard.
        wlsess_tmp=`mktemp /tmp/wlsess-env-XXXXXX`
        $SHELL -c "if (-f /etc/csh.login) source /etc/csh.login; if (-f ~/.login) source ~/.login; /bin/sh -c 'export -p' >! $wlsess_tmp"
        . $wlsess_tmp
        rm -f $wlsess_tmp
      ;;
      */fish)
        xsess_tmp=`mktemp /tmp/xsess-env-XXXXXX`
        $SHELL --login -c "/bin/sh -c 'export -p' > $xsess_tmp"
        . $xsess_tmp
        rm -f $xsess_tmp
      ;;
      *) # Plain sh, ksh, and anything we do not know.
        [ -f /etc/profile ] && . /etc/profile
        [ -f $HOME/.profile ] && . $HOME/.profile
      ;;
  esac
  fi
fi

SETTING=$(G_MESSAGES_DEBUG='' gsettings get org.gnome.system.locale region)
REGION=${SETTING#\'}
REGION=${REGION%\'}

if [ -n "$REGION" ]; then
  unset LC_TIME LC_NUMERIC LC_MONETARY LC_MEASUREMENT LC_PAPER

  if [ "$LANG" != "$REGION" ] ; then
    export LC_TIME=$REGION
    export LC_NUMERIC=$REGION
    export LC_MONETARY=$REGION
    export LC_MEASUREMENT=$REGION
    export LC_PAPER=$REGION
  fi
fi

exec /usr/libexec/gnome-session-binary "$@"
