Xfreerdp jest obsługiwane z wiersza poleceń, można wygodnie używać go w skryptach. Niestety dla ludzi nietechnicznych jest to uciążliwe a niekiedy stanowi wręcz barierę nie do przeskoczenia. Poniżej przedstawiam skrypt, który wykorzystuje zenity do wyświetlenia okienek z pytaniami do użytkownika.
W tym przypadku będziemy pytać o:
#!/bin/bash
xfreerdp /kbd:0x00000415 /cert-ignore \
/size:2560x1440 /scale:140 /f \
/u:$(zenity --entry --title="Użytkownik" --text="Podaj nazwę użytkownika") \
/p:$(zenity --entry --title="Hasło" --text="Podaj hasło" --hide-text) \
/d:$(zenity --entry --title="Domena" --text="Podaj nazwę domeny") \
/v:$(zenity --entry --title="Adres hosta" --text="Podaj adres hosta")
Powyższy skrpyt ustawia dodatkowo klawiaturę na układ "polska programisty" oraz ustawia rodzielczość na pasującą do matrycy 1440p klienta włączają skalowanie pozwalając na wygodną pracę na laptopie.
Poniżej skrypt wyświetlający pojedyncze okno i dający szersze opcje konfiguracji połączenia:
#!/bin/bash
OUTPUT=$(zenity --forms --title="Pulpit zdalny" \
--text="Podaj informacje dotyczące połączenia ze zdalnym pulpitem" \
--separator="," \
--add-entry="Host" \
--add-entry="Port (domyślnie: 3389)" \
--add-entry="Domena (opcjonalnie)" \
--add-entry="Użytkownik" \
--add-password="Hasło" \
--add-combo="Rozdzielczość (domyslnie 1440p)" --combo-values="1920x1080|2560x1440|1600x1050|1024x768|1600x900" \
--add-combo="Skala (domyślnie 140)" --combo-values="100|140") \
OUTPUT_RESULTS=$?
if ((OUTPUT_RESULTS != 0)); then
echo "something went wrong"
exit 1
fi
Blank=""
Server=$(awk -F, '{print $1}' <<<$OUTPUT)
Port=$(awk -F, '{print $2}' <<<$OUTPUT)
Domain=$(awk -F, '{print $3}' <<<$OUTPUT)
Username=$(awk -F, '{print $4}' <<<$OUTPUT)
Password=$(awk -F, '{print $5}' <<<$OUTPUT)
Resolution=$(awk -F, '{print $6}' <<<$OUTPUT)
Scale=$(awk -F, '{print $7}' <<<$OUTPUT)
if [$Port -eq $Blank]
then
Port="3389"
else
Port="$Port"
fi
if [$Resolution -eq $Blank]
then
Resolution="2560x1440"
else
Resolution="$Resolution"
fi
if [$Scale -eq $Blank]
then
Scale="140"
else
Scale="$Scale"
fi
#zenity --info --title="Information Return" --text="$Server $Port $Domain $Username $Password $App"
xfreerdp /kbd:0x00000415 /v:$Server:$Port /d:$Domain /u:$Username /p:$Password /cert-ignore /workarea +clipboard /scale:$Scale /size:$Resolution
Password=""