#! /bin/bash
#
#	Rdesktop GUI for AUSTRUMI
#	Writen by Andrejs Meinerts <inni96@inbox.lv>
#
#	gtkrdesktop v.0.1 23/12/2009
#211018 sfs (gtk3)

# Multilanguage support
export TEXTDOMAIN=systemtools
	M0=`gettext "Terminal Server Client"`
	M1=`gettext "General|Display|Local Resources|Programs|Performance"`
	M2=`gettext "Logon Settings"`
	M3=`gettext "Type the name of the computer" # or choosw a computer from the drop-down list."`
	M4=`gettext "Computer			"`
	M5=`gettext "Protocol				"`
	M6=`gettext "User Name			"`
	M7=`gettext "Password			"`
	M8=`gettext "Domain				"`
	M9=`gettext "Client Hostname		"`
	M10=`gettext "Protocol File			"`
	N0=`gettext "Remote Desktop Size"`
	N1=`gettext "Use default screen size								"`
	N2=`gettext "Use specified screen size"`
	N3=`gettext "Operate in full screen mode"`
	N4=`gettext "Use alternate full screen switch (-F)"`
	N5=`gettext "Colors"`
	N6=`gettext "Use default color depth								"`
	N7=`gettext "Use specified color depth"`
	O0=`gettext "Remote Computer Sound"`
	O1=`gettext "On the local computer								"`
	O2=`gettext "On the remote computer"`
	O3=`gettext "Do not play"`
	O4=`gettext "Keyboard"`
	O5=`gettext "Apply Windows key combinations (for example ALT+TAB) (unsuported)"`
	O6=`gettext "Use the following keyboard language (2 char keycode)"`
	O7=`gettext "Remotely map your disk drive"`
	O8=`gettext "Add my local drive to the remote computer				"`
	O9=`gettext "Available partitions"`
	O10=`gettext "Name|Size (Mb)|File system"`
	P0=`gettext "Start a Program"`
	P1=`gettext "Start the following program on connection				"`
	P2=`gettext "Program path and filename"`
	P3=`gettext "Start in the following folder"`
	R0=`gettext "Optimize Performance"`
	R1=`gettext "Options available for optimizing performance"`
	R2=`gettext "Enable bitmap caching"`
	R3=`gettext "Do not send motion events"`
	R4=`gettext "Enable window manager's key bindings"`
	R5=`gettext "Hide window manager's decorations"`
	R6=`gettext "Attach to console"`
	INFO=`gettext "Computer name is empty"`

#confdir=~/.config/$0; mkdir -p $confdir
confdir=~/.config/gtkrdp; mkdir -p $confdir
PIXMAPS="<pixmap><input file>/usr/share/pixmaps/gtkrdesktop/"

RDPSERVERS="$(ls -1b $confdir | while read rdp; do
	echo "<item>$rdp</item>"
done)"


f_info() {
export INFO='<window title="'$M0'" icon-name="gtkrdesktop"><vbox>
<hbox>'$PIXMAPS'computer.png</input></pixmap>
<text><label>'$INFO'</label></text></hbox>
<hbox><button ok></button></hbox></vbox></window>'
gtkdialog --program=INFO --center
}

export RDESKTOP='
<window title="'$M0'" icon-name="gtkrdesktop">
<vbox>
	'$PIXMAPS'banner-en.png</input></pixmap>
	<notebook labels="'$M1'">
<frame '$M2'>
	<hbox>
		'$PIXMAPS'computer.png</input></pixmap>
		<text><label>'$M3'</label></text><text><label>"				"</label></text>
	</hbox>
	<hbox><text><label>'$M4'</label></text>
	<comboboxentry><variable>COMPUTER</variable>'$RDPSERVERS'</comboboxentry>
	</hbox>
	<hbox><text><label>'$M5'</label></text>
		<comboboxentry>
		<item>RDPv5</item>
		<item>RDPv4</item>
		<variable>PROTOCOL</variable><default>RDPv5</default>
		</comboboxentry>
	</hbox>
	<hbox>
		<text><label>"			"</label></text><text><label>'$M6'</label></text>
		<entry><variable>USERNAME</variable><default>administrator</default></entry>
	</hbox>
	<hbox>
		<text><label>"			"</label></text><text><label>'$M7'</label></text>
		<entry><variable>PASSWORD</variable></entry>
	</hbox>
	<hbox>
		<text><label>"			"</label></text><text><label>'$M8'</label></text>
		<entry><variable>DOMAIN</variable></entry>
	</hbox>
	<hbox>
		<text><label>"			"</label></text><text><label>'$M9'</label></text>
		<entry><variable>C_HOSTNAME</variable></entry>
	</hbox>
	<hbox>
		<text><label>"			"</label></text><text><label>'$M10'</label></text>
		<entry><variable>PROTOCOL_F</variable></entry>
	</hbox>
</frame>
<vbox>
<frame '$N0'>
	<hbox>
		<vbox>'$PIXMAPS'size.png</input></pixmap>
		<text><label>""</label></text></vbox>
    <vbox>
      <radiobutton>
        <label>'$N1'</label><variable>SIZE_D</variable>
		<action>Disable:SIZE</action><action>Disable:SIZE_A</action>
      </radiobutton>
      <radiobutton>
        <label>'$N2'</label><variable>SIZE_S</variable>
		<action>Enable:SIZE</action><action>Disable:SIZE_A</action>
      </radiobutton>
		<comboboxentry>
			<item>640x480</item>
			<item>800x600</item>
			<item>1024x768</item>
			<item>1152x864</item>
			<item>1280x960</item>
			<item>1400x1050</item>
			<variable>SIZE</variable>
			<visible>disabled</visible>
		</comboboxentry>
      <radiobutton>
        <label>'$N3'</label><variable>SIZE_F</variable>
		<action>Disable:SIZE</action><action>Enable:SIZE_A</action>
      </radiobutton>
      <checkbox>
        <label>'$N4'</label><visible>disabled</visible><variable>SIZE_A</variable>
      </checkbox>
    </vbox>
	</hbox>
</frame>
<frame '$N5'>
	<hbox>
		<vbox>'$PIXMAPS'colors.png</input></pixmap>
		<text><label>""</label></text></vbox>
    <vbox>
      <radiobutton>
        <label>'$N6'</label><variable>COLORS_D</variable>
		<action>Disable:COLORS</action>
      </radiobutton>
      <radiobutton>
        <label>'$N7'</label><variable>COLORS_S</variable>
		<action>Enable:COLORS</action>
      </radiobutton>
		<comboboxentry>
			<item>8</item>
			<item>15</item>
			<item>16</item>
			<item>24</item>
			<variable>COLORS</variable>
			<visible>disabled</visible>
		</comboboxentry>
    </vbox>
	</hbox>
</frame>
</vbox>
<vbox>
<frame '$O0'>
	<hbox>
		<vbox>'$PIXMAPS'sound.png</input></pixmap>
		<text><label>""</label></text></vbox>
    <vbox>
      <radiobutton>
        <label>'$O1'</label><variable>SOUND_L</variable><visible>disabled</visible>
      </radiobutton>
      <radiobutton>
        <label>'$O2'</label><variable>SOUND_R</variable><visible>disabled</visible>
      </radiobutton>
      <radiobutton>
        <label>'$O3'</label><variable>SOUND_N</variable><visible>disabled</visible><default>true</default>
      </radiobutton>
    </vbox>
	</hbox>
</frame>
<frame '$O4'>
	<hbox>
		<vbox>'$PIXMAPS'keyboard.png</input></pixmap>
		<text><label>""</label></text></vbox>
    <vbox>
        <hbox><text><label>'$O5'</label></text><text><label>"	"</label></text></hbox>
		<comboboxentry>
			<item>On the local computer</item>
			<variable>KEYBOARD</variable>
			<visible>disabled</visible>
		</comboboxentry>
        <hbox><text><label>'$O6'</label></text><text><label>"	"</label></text></hbox>
		<comboboxentry>
			<item>en-us</item>
			<item>ru</item>
			<item>us</item>
			<variable>KEYCODE</variable>
		</comboboxentry>
    </vbox>
	</hbox>
</frame>
<frame '$O7'>
	<hbox>
		<vbox>'$PIXMAPS'harddrive.png</input></pixmap>
		<text><label>""</label></text></vbox>
		<vbox>
		<checkbox>
			<label>'$O8'</label><variable>DISK</variable>
			<action>if true enable:DISK_P</action><action>if true enable:DISK_F</action>
			<action>if false disable:DISK_P</action><action>if false disable:DISK_F</action>
		</checkbox>
		<text><label>'$O9'</label><variable>DISK_P</variable><visible>disabled</visible></text>
		<tree><width>150</width><height>60</height>
			<label>'$O10'</label><input>detect partitions</input>
			<variable>DISK_F</variable><visible>disabled</visible>
		</tree>
		</vbox>
	</hbox>
</frame>
</vbox>
<frame '$P0'>
	<hbox>
		<vbox>'$PIXMAPS'program.png</input></pixmap>
		<text><label>""</label></text></vbox>
    <vbox>
      <checkbox>
        <label>'$P1'</label><variable>PROGRAM</variable>
		<action>if true enable:PROGRAM_P</action><action>if true enable:PROGRAM_F</action>
		<action>if false disable:PROGRAM_P</action><action>if false disable:PROGRAM_F</action>
      </checkbox>
	<text><label>'$P2'</label></text>
	<entry><variable>PROGRAM_P</variable><visible>disabled</visible></entry>
    <text><label>'$P3'</label></text>
	<entry><variable>PROGRAM_F</variable><visible>disabled</visible></entry>
	</vbox>
	</hbox>
</frame>
<frame '$R0'>
	<hbox>
		<vbox>'$PIXMAPS'perform.png</input></pixmap>
		<text><label>""</label></text></vbox>
    <vbox>
		<hbox><text><label>"				"</label></text><text><label>"									"</label></text></hbox>
		<hbox><text><label>'$R1'</label></text><text><label>"	"</label></text></hbox>
		<text><label>""</label></text>
		<checkbox><label>'$R2'</label><variable>PERF_1</variable><default>true</default></checkbox>
		<checkbox><label>'$R3'</label><variable>PERF_2</variable></checkbox>
		<checkbox><label>'$R4'</label><variable>PERF_3</variable></checkbox>
		<checkbox><label>'$R5'</label><variable>PERF_4</variable></checkbox>
		<checkbox><label>'$R6'</label><variable>PERF_4</variable></checkbox>
	</vbox>
	</hbox>
</frame>
  </notebook>
  <hbox>
    <button cancel></button>
    <button ok></button>
  </hbox>
</vbox>
</window>'

gtkdialog --program=RDESKTOP >$confdir/tmp
#exit
. $confdir/tmp
if [ "$EXIT" = "OK" ]; then 
if [ $COMPUTER ]; then mv -f $confdir/tmp $confdir/$COMPUTER

X(){
	if [ "$USERNAME" ]; then USERNAME="-u$USERNAME"; fi
	if [ "$SOUND_L" = "true" ]; then SOUND=local
		elif [ "$SOUND_R" = "true" ]; then SOUND=remote
		elif [ "$SOUND_N" = "true" ]; then SOUND=off; fi
[ "$KEYCODE" ] &&	KEYCODE="-k$KEYCODE"
	if [ "$DISK" = "true" ]; then
		if [ "$DISK_F" != "" ]; then DISK_F="-rdisk:$DISK_F=/mnt/$DISK_F"; fi
		else DISK_F=""; fi
	if [ "$SIZE_D" = "true" ]; then SIZE=""
		elif [ "$SIZE_S" = "true" ]; then SIZE="-g$SIZE"
		elif [ "$SIZE_F" = "true" ]; then SIZE="-f"; fi
	if [ "$COLORS_D" = "true" ]; then COLORS=""
		elif [ "$COLORS_S" = "true" ]; then COLORS="-a$COLORS"; fi
[ "$PROTOCOL" ] &&	PROTOCOL="-$(echo $PROTOCOL | tr -d 'A-z')"
	PERF1=""; PERF2=""; PERF3=""; PERF4=""; PERF5="";
	if [ "$PERF_1" = "true" ]; then PERF1="-P"; fi
	if [ "$PERF_2" = "true" ]; then PERF2="-m"; fi
	if [ "$PERF_3" = "true" ]; then PERF3="-K"; fi
	if [ "$PERF_4" = "true" ]; then PERF4="-D"; fi
	if [ "$PERF_5" = "true" ]; then PERF5="-0"; fi
[ "$DOMAIN" ] 	&& DOMAIN="-d$DOMAIN"
[ "$PASSWORD" ] && PASSWORD="-p$PASSWORD"
#	rdesktop -T"$COMPUTER - Terminal Server Client" -rsound:$SOUND $USERNAME $SIZE $COLORS $KEYCODE $PERF1 $PERF2 $PERF3 $PERF4 $PERF5 $DISK_F -$PROTOCOL $COMPUTER
#	echo "rdesktop -T'$COMPUTER - Terminal Server Client' -rsound:$SOUND $USERNAME $SIZE $COLORS $KEYCODE $PERF1 $PERF2 $PERF3 $PERF4 $PERF5 $DISK_F $PROTOCOL $COMPUTER" >rrr
#	rdesktop "$PASSWORD" -T"$COMPUTER - Terminal Server Client" -rsound:$SOUND $USERNAME $DOMAIN $SIZE $COLORS $KEYCODE $PERF1 $PERF2 $PERF3 $PERF4 $PERF5 $DISK_F $PROTOCOL $COMPUTER
#	r="rdesktop "$PASSWORD" -T\"$COMPUTER - Terminal Server Client\" -rsound:$SOUND $USERNAME $DOMAIN $SIZE $COLORS $KEYCODE $PERF1 $PERF2 $PERF3 $PERF4 $PERF5 $DISK_F $PROTOCOL $COMPUTER"
	r="rdesktop "${PASSWORD}"  -rsound:$SOUND $USERNAME $DOMAIN $SIZE $COLORS $KEYCODE $PERF1 $PERF2 $PERF3 $PERF4 $PERF5 $DISK_F $PROTOCOL $COMPUTER"
	echo "$r" >rrr
	urxvt -e $r 
}
gtkrdp $confdir/$COMPUTER
#	$0
else
	f_info; $0
fi
fi

rm -rf $confdir/tmp
exit 0
