#!/bin/bash
#
#  Copyright (C) 2015 Savoir-Faire Linux Inc.
#  Author: Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com>
#  Author: Stepan Salenikovich <stepan.salenikovich@savoirfairelinux.com>
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 3 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA.
#
#  Additional permission under GNU GPL version 3 section 7:
#
#  If you modify this program, or any covered work, by linking or
#  combining it with the OpenSSL project's OpenSSL library (or a
#  modified version of that library), containing parts covered by the
#  terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
#  grants you additional permission to convey the resulting work.
#  Corresponding Source for a non-source form of such a combination
#  shall include the source code for the parts of OpenSSL used as well
#  as that of the covered work.
#

HAS_KDE=0
HAS_GNOME=0

if type "ring-kde" > /dev/null 2> /dev/null; then
  HAS_KDE=1
fi

if type "gnome-ring" > /dev/null 2> /dev/null; then
  HAS_GNOME=1
fi

# No clients installd
if [ $HAS_KDE == "0" ] && [ $HAS_GNOME == "0" ]; then
  echo "Ring not found" >&2
  exit 1
fi

# Only one client is installed
if [ $HAS_KDE == "1" ] && [ $HAS_GNOME == "0" ]; then
  ring-kde $*
  exit $?
elif [ $HAS_KDE == "0" ] && [ $HAS_GNOME == "1" ]; then
  gnome-ring $*
  exit $?
fi

# Both clients installed: run KDE client if KDE wm is running
# else use the Gnome client.
if [ -z "$(ps aux | grep kwin | grep -v grep)" ]; then
  gnome-ring $*
  exit $?
else
  ring-kde $*
  exit $?
fi
