#!/usr/bin/env bash

VERSION=1.1

init(){
    export TEXTDOMAIN="${0##*/}"
    export TEXTDOMAINDIR="${PATH_ROOT}/usr/share/locale"
}

i18n() {
    local key="$1"; shift
    printf "$(gettext -s "$key")" "$@"
}

msg_version="ubclient-xdmcp, version %s
Copyright (C) 2024 UBSoft, Inc.
License GPLv3+: GNU GPL version 3 or later <http://ublinux.ru>"

msg_help="ubclient-xdmcp simple XDMCP client
  Usage:    %s [--h]
    --h  Show a help message"

    PATH_ROOT=
    init

    if [[ $1 == @("--h"|"--help") ]]; then
	echo -e "$(i18n "${msg_version}" "${VERSION}") \n"
	echo -e "$(i18n "${msg_help}" "${0##*/}")"
	exit 0
    elif [[ $1 == @("--V"|"--version") ]]; then
	echo -e "$(i18n "${msg_version}" "${VERSION}")"
	exit 0
    fi
    
    RESOLUTION="800x600,1024x768,1280x720,1366x768,1280x1024,1440x900,1680x1050,1600x1200,1920x1080"
    export YAD_OPTIONS="--window-icon='com.ublinux.ubclient-xdmcp.network-connect'"
    yad --title="$(i18n "XDMCP Client")" \
        --width=300 \
        --image="com.ublinux.ubclient-xdmcp.network" --text="<b>$(i18n "XDMCP Connection Settings")</b>" \
        --form --separator="|" --item-separator="," \
        --field="$(i18n 'Host address')" \
        --field="$(i18n "Port")"  \
        --field="$(i18n "New display"):num"  \
        --field="$(i18n "Screen size"):CBE" \
        --field="$(i18n "Allow window resizing"):chk" \
        --field="$(i18n "Use broadcast"):chk" \
        "${SELECT_LOCALHOST:-localhost}" "${SELECT_PORT:-177}" "${SELECT_DISPLAY:-1}" "${RESOLUTION}" false false \
    | while read LINE; do
        SELECT_LOCALHOST=$(awk -F'|' '{print $1}' <<< ${LINE})
        SELECT_PORT=$(awk -F'|' '{print $2}' <<< ${LINE})
        SELECT_DISPLAY=$(awk -F'|' '{print $3}' <<< ${LINE})
        SELECT_RESOLUTION=$(awk -F'|' '{print $4}' <<< ${LINE})
        SELECT_RESIZEABLE=$(awk -F'|' '{print $5}' <<< ${LINE})
        SELECT_BROADCAST=$(awk -F'|' '{print $6}' <<< ${LINE})
        [[ $(xsel -o -b --display :${SELECT_DISPLAY}) ]] && zenity --error --no-markup --ellipsize --no-wrap --text="$(i18n "Display :%s is busy, select a free display" "${SELECT_DISPLAY}")" --title="$(i18n "XDMCP Client")" && exit 1
        OPTIONS=
        [[ ${SELECT_RESIZEABLE} == "TRUE" ]] && SELECT_RESIZEABLE="-resizeable" || SELECT_RESIZEABLE=
        [[ ${SELECT_BROADCAST} == "TRUE" ]] && SELECT_BROADCAST="-broadcast" || SELECT_BROADCAST=
        SELECT_RESOLUTION="-screen ${SELECT_RESOLUTION}"
        Xephyr -name "Client XDMCP" -title "Client XDMCP ${SELECT_LOCALHOST}  :${SELECT_DISPLAY}" -query ${SELECT_LOCALHOST} -port ${SELECT_PORT} :${SELECT_DISPLAY} ${SELECT_RESOLUTION} ${SELECT_RESIZEABLE} ${SELECT_BROADCAST}
    done