#!/bin/sh
#
# vmware-xdg-detect-de --
#
# Determines which Freedesktop.Org compliant desktop environment we're
# running under.
#
# usage: vmware-xdg-detect-de
#
# Simply prints the detected environment (GNOME, KDE, or XFCE). Shamelessly
# lifted from detectDE() routine found in many Portland xdg-* scripts.
#
# Copyright (c) 2010-2015 VMware, Inc. All rights reserved.
# Copyright 2009-2010, Fathi Boudra
# Copyright 2009-2010, Rex Dieter
# Copyright 2006, Kevin Krammer
# Copyright 2006, Jeremy White
#
# LICENSE:
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
#---------------------------------------------
#--------------------------------------
# Checks for known desktop environments
# set variable DE to the desktop environments name, lowercase
# see https://bugs.freedesktop.org/show_bug.cgi?id=34164
unset GREP_OPTIONS
if [ -n "${XDG_CURRENT_DESKTOP}" ]; then
#
# This script deals in (case sensitive) desktop environment names as found in
# menu-spec (http://standards.freedesktop.org/menu-spec/latest/apb.html),
#
xdgDE="${XDG_CURRENT_DESKTOP}"
DE=`echo "${XDG_CURRENT_DESKTOP}" | tr '[:upper:]' '[:lower:]'`
fi
if [ x"$DE" = x"" ]; then
# classic fallbacks
if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
elif xprop -root 2> /dev/null | grep -i '^xfce_desktop_window' >/dev/null 2>&1; then DE=xfce
fi
fi
if [ x"$DE" = x"" ]; then
# fallback to checking $DESKTOP_SESSION
case "$DESKTOP_SESSION" in
gnome)
DE=gnome;
;;
LXDE)
DE=lxde;
;;
xfce|xfce4)
DE=xfce;
;;
esac
fi
if [ x"$DE" = x ]; then
exit 1
fi
if [ -z "$xdgDE" ]; then
case "$DE" in
gnome)
xdgDE=GNOME
;;
kde)
xdgDE=KDE
;;
xfce)
xdgDE=XFCE
;;
esac
fi
echo $xdgDE