#!/bin/bash

########################################################################
#
#PROJECT:      Unified Sessions Manager
#AUTHOR:       Arno-Can Uestuensoez - acue@UnifiedSessionsManager.org
#MAINTAINER:   Arno-Can Uestuensoez - acue_sf1@sourceforge.net
#SHORT:        ctys
#CALLFULLNAME: Commutate To Your Session
#LICENCE:      GPL3
#VERSION:      01_02_007a17
#
########################################################################
#
# Copyright (C) 2007 Arno-Can Uestuensoez (UnifiedSessionsManager.org)
#
########################################################################

_myPKGNAME_X11_SESSION="${BASH_SOURCE}"
_myPKGVERS_X11_SESSION="01.01.001a01"
hookInfoAdd $_myPKGNAME_X11_SESSION $_myPKGVERS_X11_SESSION
_myPKGBASE_X11_SESSION="`dirname ${_myPKGNAME_X11_SESSION}`"

_X11_SESSION="${_myPKGNAME_X11_SESSION}"




#FUNCBEG###############################################################
#NAME:
#  startSessionX11
#
#TYPE:
#  bash-function
#
#DESCRIPTION:
#
#EXAMPLE:
#
#PARAMETERS:
#  $1:  <label>
#  $2:  <cmd>
#  $3:  <shell>
#  $4:  <callopts>
#  $5:  <xopts>
#
#OUTPUT:
#  RETURN:
#
#  VALUES:
#
#FUNCEND###############################################################
function startSessionX11 () {
    printVerboseDebug ${DBG_LVL_MAINT} $LINENO $BASH_SOURCE "$FUNCNAME:\$@=$@"
    printVerboseDebug ${DBG_LVL_MAINT} $LINENO $BASH_SOURCE "$FUNCNAME:\$1=$1"
    printVerboseDebug ${DBG_LVL_MAINT} $LINENO $BASH_SOURCE "$FUNCNAME:\$2=$2"
    printVerboseDebug ${DBG_LVL_MAINT} $LINENO $BASH_SOURCE "$FUNCNAME:\$3=$3"
    printVerboseDebug ${DBG_LVL_MAINT} $LINENO $BASH_SOURCE "$FUNCNAME:\$4=$4"
    printVerboseDebug ${DBG_LVL_MAINT} $LINENO $BASH_SOURCE "$FUNCNAME:\$5=$5"
    local _label=${1:-DEFAULT-$DATETIME};
    local _xclient=${2};
    local _xclientsh=${3};
    local _copts=${4};
    local _xopts=${5};

    checkUniqueness4Label ${_label};
    if [ $? -eq 0 ];then
	local _unique=1
    else
	if [ -z "${CTRL_ALLOWAMBIGIOUS}" ];then
	    ABORT=2
	    printERR $LINENO $BASH_SOURCE ${ABORT} "${FUNCNAME}:Ambigious <session-label>:${_label}"
	    gotoHell ${ABORT}

	else 
	    printWNG $LINENO $BASH_SOURCE ${RET} "${FUNCNAME}:Label is ambigious:${_label}"
	fi
    fi

    #xopts
    _xopts="${_xopts:-$X11_DEFAULT_OPTS}"
    _xopts="${_xopts} ${CTRL_GEOMETRY:+ ${_xp}geometry $CTRL_GEOMETRY} "
    if [ "${_xp}" == "-"  ];then
	_xopts="${_xopts} ${_xp}title ${_label} "
    else
	_xopts="${_xopts} ${_xp}title=${_label} "
    fi
    printVerboseDebug ${DBG_LVL_MAINT} $LINENO $BASH_SOURCE "$FUNCNAME:_xopts=\"${_xopts}\""

    #xclient

    printVerboseDebug ${DBG_LVL_MAINT} $LINENO $BASH_SOURCE "_xclient=\"${_xclient}\""
    #missing xclient, this means a shell execution within an XTerm 
    if [ -z "${_xclient}" ];then
	_xclient=${X11_XTERM_DEFAULT}
	_xclientsh=${_xclientsh:-$X11_XTERM_SHELL_DEFAULT} 

	_xclient="${_xclient} ${_xopts} -e \"${_xclientsh} ${_copts}\""
    else
	_xclient="${_xclient} ${_xopts} -e \"${_xclientsh} ${_copts}\""
    fi
    printVerboseDebug ${DBG_LVL_MAINT} $LINENO $BASH_SOURCE "_xclient=\"${_xclient}\""
    [ -z "${CTRL_NOEXEC}" ]&&eval ${_xclient}
}

