mirror of
https://github.com/winapps-org/winapps.git
synced 2025-06-03 21:57:18 +02:00
Merge pull request #121 from KernelGhost/main
Enhance VM Detection and Improve FreeRDP Command Handling
This commit is contained in:
commit
757931d3ae
105
bin/winapps
105
bin/winapps
@ -4,6 +4,7 @@ if [ ! -f "$HOME/.config/winapps/winapps.conf" ] && [ ! -f "$HOME/.winapps" ]; t
|
|||||||
echo "You need to create a ~/.config/winapps/winapps.conf configuration. Exiting..."
|
echo "You need to create a ~/.config/winapps/winapps.conf configuration. Exiting..."
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
DIR="$(dirname "$(readlink -f "$0")")"
|
DIR="$(dirname "$(readlink -f "$0")")"
|
||||||
RUN="$(date)-$RANDOM"
|
RUN="$(date)-$RANDOM"
|
||||||
|
|
||||||
@ -65,14 +66,12 @@ if [ -z "$RDP_IP" ]; then
|
|||||||
echo " sudo usermod -a -G kvm $(whoami)"
|
echo " sudo usermod -a -G kvm $(whoami)"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if virsh list | grep -vq RDPWindows; then
|
if ! virsh list --state-running --name | grep -q '^RDPWindows$'; then
|
||||||
echo "RDPWindows is not running, run:"
|
echo "RDPWindows is not running. Please run:"
|
||||||
echo " virsh start RDPWindows"
|
echo " virsh start RDPWindows"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RDP_IP=$(virsh net-dhcp-leases default | grep RDPWindows | awk '{print $5}')
|
RDP_IP=$(virsh net-dhcp-leases default | grep "RDPWindows" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}')
|
||||||
RDP_IP=${RDP_IP%%\/*}
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dprint "1:$1"
|
dprint "1:$1"
|
||||||
@ -86,18 +85,64 @@ if [ "$MULTIMON" = "true" ]; then
|
|||||||
MULTI_FLAG="/multimon"
|
MULTI_FLAG="/multimon"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Append additional flags or parameters to FreeRDP
|
||||||
if [[ -n "$RDP_FLAGS" ]]; then
|
if [[ -n "$RDP_FLAGS" ]]; then
|
||||||
FREERDP_COMMAND="$FREERDP_COMMAND $RDP_FLAGS"
|
FREERDP_COMMAND="$FREERDP_COMMAND $RDP_FLAGS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$1" = "windows" ]; then
|
if [ "$1" = "check" ]; then
|
||||||
$FREERDP_COMMAND /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +dynamic-resolution +auto-reconnect +home-drive /wm-class:"Microsoft Windows" /v:"$RDP_IP" 1>/dev/null 2>&1 &
|
# Open File Explorer
|
||||||
elif [ "$1" = "check" ]; then
|
|
||||||
dprint "CHECK"
|
dprint "CHECK"
|
||||||
$FREERDP_COMMAND /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +auto-reconnect +home-drive -wallpaper +dynamic-resolution $MULTI_FLAG /app:program:"explorer.exe" /v:"$RDP_IP"
|
COMMAND=(
|
||||||
|
"${FREERDP_COMMAND}"
|
||||||
|
"/d:${RDP_DOMAIN}"
|
||||||
|
"/u:${RDP_USER}"
|
||||||
|
"/p:${RDP_PASS}"
|
||||||
|
"/scale:${RDP_SCALE}"
|
||||||
|
"+auto-reconnect"
|
||||||
|
"+home-drive"
|
||||||
|
"-wallpaper"
|
||||||
|
"+dynamic-resolution"
|
||||||
|
"${MULTI_FLAG}"
|
||||||
|
"/app:program:explorer.exe"
|
||||||
|
"/v:${RDP_IP}"
|
||||||
|
)
|
||||||
|
"${COMMAND[@]}"
|
||||||
|
elif [ "$1" = "windows" ]; then
|
||||||
|
# Open Virtual Machine
|
||||||
|
dprint "WINDOWS"
|
||||||
|
COMMAND=(
|
||||||
|
"${FREERDP_COMMAND}"
|
||||||
|
"/d:${RDP_DOMAIN}"
|
||||||
|
"/u:${RDP_USER}"
|
||||||
|
"/p:${RDP_PASS}"
|
||||||
|
"/scale:${RDP_SCALE}"
|
||||||
|
"+dynamic-resolution"
|
||||||
|
"+auto-reconnect"
|
||||||
|
"+home-drive"
|
||||||
|
"/wm-class:\"Microsoft Windows\""
|
||||||
|
"/v:${RDP_IP}"
|
||||||
|
)
|
||||||
|
# Run the command in the background, redirecting both stdout and stderr to /dev/null
|
||||||
|
"${COMMAND[@]}" 1>/dev/null 2>&1 &
|
||||||
elif [ "$1" = "manual" ]; then
|
elif [ "$1" = "manual" ]; then
|
||||||
dprint "MANUAL:$2"
|
# Open Specified Application
|
||||||
$FREERDP_COMMAND /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +auto-reconnect +home-drive +dynamic-resolution $MULTI_FLAG /app:program:"$2" /v:"$RDP_IP" 1>/dev/null 2>&1 &
|
dprint "MANUAL:${2}"
|
||||||
|
COMMAND=(
|
||||||
|
"${FREERDP_COMMAND}"
|
||||||
|
"/d:${RDP_DOMAIN}"
|
||||||
|
"/u:${RDP_USER}"
|
||||||
|
"/p:${RDP_PASS}"
|
||||||
|
"/scale:${RDP_SCALE}"
|
||||||
|
"+auto-reconnect"
|
||||||
|
"+home-drive"
|
||||||
|
"+dynamic-resolution"
|
||||||
|
"${MULTI_FLAG}"
|
||||||
|
"/app:program:${2}"
|
||||||
|
"/v:${RDP_IP}"
|
||||||
|
)
|
||||||
|
# Run the command in the background, redirecting both stdout and stderr to /dev/null
|
||||||
|
"${COMMAND[@]}" 1>/dev/null 2>&1 &
|
||||||
elif [ "$1" != "install" ]; then
|
elif [ "$1" != "install" ]; then
|
||||||
dprint "DIR:${DIR}"
|
dprint "DIR:${DIR}"
|
||||||
if [ -e "${DIR}/../apps/$1/info" ]; then
|
if [ -e "${DIR}/../apps/$1/info" ]; then
|
||||||
@ -121,9 +166,43 @@ elif [ "$1" != "install" ]; then
|
|||||||
FILE=$(echo "$2" | sed 's|'"$HOME"'|\\\\tsclient\\home|;s|/|\\|g;s|\\|\\\\|g')
|
FILE=$(echo "$2" | sed 's|'"$HOME"'|\\\\tsclient\\home|;s|/|\\|g;s|\\|\\\\|g')
|
||||||
dprint "FILE:${FILE}"
|
dprint "FILE:${FILE}"
|
||||||
# shellcheck disable=SC2140
|
# shellcheck disable=SC2140
|
||||||
$FREERDP_COMMAND /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +auto-reconnect +clipboard +home-drive -wallpaper +dynamic-resolution $MULTI_FLAG /wm-class:"$FULL_NAME" /app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:"$FULL_NAME",cmd:"\"$FILE\"" /v:"$RDP_IP" 1>/dev/null 2>&1 &
|
COMMAND=(
|
||||||
|
"${FREERDP_COMMAND}"
|
||||||
|
"/d:${RDP_DOMAIN}"
|
||||||
|
"/u:${RDP_USER}"
|
||||||
|
"/p:${RDP_PASS}"
|
||||||
|
"/scale:${RDP_SCALE}"
|
||||||
|
"+auto-reconnect"
|
||||||
|
"+clipboard"
|
||||||
|
"+home-drive"
|
||||||
|
"-wallpaper"
|
||||||
|
"+dynamic-resolution"
|
||||||
|
"${MULTI_FLAG}"
|
||||||
|
"/wm-class:${FULL_NAME}"
|
||||||
|
"/app:program:${WIN_EXECUTABLE},icon:${ICON},name:${FULL_NAME},cmd:\"${FILE}\""
|
||||||
|
"/v:${RDP_IP}"
|
||||||
|
)
|
||||||
|
# Run the command in the background, redirecting both stdout and stderr to /dev/null
|
||||||
|
echo "${COMMAND[@]}" #1>/dev/null 2>&1 &
|
||||||
else
|
else
|
||||||
$FREERDP_COMMAND /d:"$RDP_DOMAIN" /u:"$RDP_USER" /p:"$RDP_PASS" /scale:$RDP_SCALE +auto-reconnect +clipboard +home-drive -wallpaper +dynamic-resolution $MULTI_FLAG /wm-class:"$FULL_NAME" /app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:"$FULL_NAME" /v:"$RDP_IP" 1>/dev/null 2>&1 &
|
COMMAND=(
|
||||||
|
"${FREERDP_COMMAND}"
|
||||||
|
"/d:${RDP_DOMAIN}"
|
||||||
|
"/u:${RDP_USER}"
|
||||||
|
"/p:${RDP_PASS}"
|
||||||
|
"/scale:${RDP_SCALE}"
|
||||||
|
"+auto-reconnect"
|
||||||
|
"+clipboard"
|
||||||
|
"+home-drive"
|
||||||
|
"-wallpaper"
|
||||||
|
"+dynamic-resolution"
|
||||||
|
"${MULTI_FLAG}"
|
||||||
|
"/wm-class:${FULL_NAME}"
|
||||||
|
"/app:program:${WIN_EXECUTABLE},icon:${ICON},name:${FULL_NAME}"
|
||||||
|
"/v:${RDP_IP}"
|
||||||
|
)
|
||||||
|
# Run the command in the background, redirecting both stdout and stderr to /dev/null
|
||||||
|
"${COMMAND[@]}" 1>/dev/null 2>&1 &
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user