mirror of
https://github.com/winapps-org/winapps.git
synced 2025-08-05 18:28:26 +02:00
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
This commit is contained in:
309
bin/winapps
309
bin/winapps
@@ -1,77 +1,74 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [ ! -f "$HOME/.config/winapps/winapps.conf" ] && [ ! -f "$HOME/.winapps" ]; then
|
||||
echo "You need to create a ~/.config/winapps/winapps.conf configuration. Exiting..."
|
||||
exit
|
||||
echo "You need to create a ~/.config/winapps/winapps.conf configuration. Exiting..."
|
||||
exit
|
||||
fi
|
||||
|
||||
DIR="$(dirname "$(readlink -f "$0")")"
|
||||
RUN="$(date)-$RANDOM"
|
||||
|
||||
if [ ! -d "$HOME/.local/share/winapps" ]; then
|
||||
mkdir -p "$HOME/.local/share/winapps"
|
||||
mkdir -p "$HOME/.local/share/winapps"
|
||||
fi
|
||||
|
||||
RDP_SCALE=100
|
||||
|
||||
if [ -f "$HOME/.config/winapps/winapps.conf" ]; then
|
||||
# shellcheck source=/dev/null
|
||||
. "$HOME/.config/winapps/winapps.conf"
|
||||
# shellcheck source=/dev/null
|
||||
. "$HOME/.config/winapps/winapps.conf"
|
||||
else
|
||||
# shellcheck source=/dev/null
|
||||
. "$HOME/.winapps"
|
||||
# shellcheck source=/dev/null
|
||||
. "$HOME/.winapps"
|
||||
fi
|
||||
|
||||
function dprint() {
|
||||
if [ "$DEBUG" = "true" ]; then
|
||||
echo "[$RUN] $1" >>"$HOME/.local/share/winapps/winapps.log"
|
||||
fi
|
||||
if [ "$DEBUG" = "true" ]; then
|
||||
echo "[$RUN] $1" >>"$HOME/.local/share/winapps/winapps.log"
|
||||
fi
|
||||
}
|
||||
|
||||
dprint "START"
|
||||
|
||||
if [ -f "$HOME/.local/share/winapps/run" ]; then
|
||||
LAST_RAN=$(stat -t -c %Y "$HOME/.local/share/winapps/run")
|
||||
dprint "LAST_RAN:${LAST_RAN}"
|
||||
touch "$HOME/.local/share/winapps/run"
|
||||
THIS_RUN=$(stat -t -c %Y "$HOME/.local/share/winapps/run")
|
||||
dprint "THIS_RUN:$THIS_RUN"
|
||||
if ((THIS_RUN - LAST_RAN < 2)); then
|
||||
exit
|
||||
fi
|
||||
LAST_RAN=$(stat -t -c %Y "$HOME/.local/share/winapps/run")
|
||||
dprint "LAST_RAN:${LAST_RAN}"
|
||||
touch "$HOME/.local/share/winapps/run"
|
||||
THIS_RUN=$(stat -t -c %Y "$HOME/.local/share/winapps/run")
|
||||
dprint "THIS_RUN:$THIS_RUN"
|
||||
if ((THIS_RUN - LAST_RAN < 2)); then
|
||||
exit
|
||||
fi
|
||||
else
|
||||
touch "$HOME/.local/share/winapps/run"
|
||||
touch "$HOME/.local/share/winapps/run"
|
||||
fi
|
||||
|
||||
if [ -z "${FREERDP_COMMAND}" ]; then
|
||||
if command -v xfreerdp &> /dev/null
|
||||
then
|
||||
FREERDP_COMMAND="xfreerdp"
|
||||
elif command -v xfreerdp3 &> /dev/null
|
||||
then
|
||||
FREERDP_COMMAND="xfreerdp3"
|
||||
fi
|
||||
elif command -v "$FREERDP_COMMAND" &> /dev/null
|
||||
then
|
||||
dprint "Using custom freerdp command $FREERDP_COMMAND"
|
||||
if command -v xfreerdp &>/dev/null; then
|
||||
FREERDP_COMMAND="xfreerdp"
|
||||
elif command -v xfreerdp3 &>/dev/null; then
|
||||
FREERDP_COMMAND="xfreerdp3"
|
||||
fi
|
||||
elif command -v "$FREERDP_COMMAND" &>/dev/null; then
|
||||
dprint "Using custom freerdp command $FREERDP_COMMAND"
|
||||
else
|
||||
echo "You have supplied a custom FreeRDP command, but the command is not available."
|
||||
exit
|
||||
echo "You have supplied a custom FreeRDP command, but the command is not available."
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ -z "$RDP_IP" ]; then
|
||||
if groups | grep -vq libvirt; then
|
||||
echo "You are not a member of the libvirt group. Run the below then reboot."
|
||||
echo " sudo usermod -a -G libvirt $(whoami)"
|
||||
echo " sudo usermod -a -G kvm $(whoami)"
|
||||
exit
|
||||
fi
|
||||
if ! virsh list --state-running --name | grep -q '^RDPWindows$'; then
|
||||
echo "RDPWindows is not running. Please run:"
|
||||
echo " virsh start RDPWindows"
|
||||
exit
|
||||
fi
|
||||
RDP_IP=$(virsh net-dhcp-leases default | grep "RDPWindows" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}')
|
||||
if groups | grep -vq libvirt; then
|
||||
echo "You are not a member of the libvirt group. Run the below then reboot."
|
||||
echo " sudo usermod -a -G libvirt $(whoami)"
|
||||
echo " sudo usermod -a -G kvm $(whoami)"
|
||||
exit
|
||||
fi
|
||||
if ! virsh list --state-running --name | grep -q '^RDPWindows$'; then
|
||||
echo "RDPWindows is not running. Please run:"
|
||||
echo " virsh start RDPWindows"
|
||||
exit
|
||||
fi
|
||||
RDP_IP=$(virsh net-dhcp-leases default | grep "RDPWindows" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}')
|
||||
fi
|
||||
|
||||
dprint "1:$1"
|
||||
@@ -82,128 +79,128 @@ dprint "@:${@}"
|
||||
|
||||
MULTI_FLAG="+span"
|
||||
if [ "$MULTIMON" = "true" ]; then
|
||||
MULTI_FLAG="/multimon"
|
||||
MULTI_FLAG="/multimon"
|
||||
fi
|
||||
|
||||
# Append additional flags or parameters to FreeRDP
|
||||
if [[ -n "$RDP_FLAGS" ]]; then
|
||||
FREERDP_COMMAND="$FREERDP_COMMAND $RDP_FLAGS"
|
||||
if [[ -n $RDP_FLAGS ]]; then
|
||||
FREERDP_COMMAND="$FREERDP_COMMAND $RDP_FLAGS"
|
||||
fi
|
||||
|
||||
if [ "$1" = "check" ]; then
|
||||
# Open File Explorer
|
||||
dprint "CHECK"
|
||||
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[@]}"
|
||||
# Open File Explorer
|
||||
dprint "CHECK"
|
||||
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 &
|
||||
# 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
|
||||
# Open Specified Application
|
||||
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 &
|
||||
# Open Specified Application
|
||||
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
|
||||
dprint "DIR:${DIR}"
|
||||
if [ -e "${DIR}/../apps/$1/info" ]; then
|
||||
# shellcheck disable=SC1090
|
||||
. "${DIR}/../apps/$1/info"
|
||||
ICON="${DIR}/../apps/$1/icon.svg"
|
||||
elif [ -e "$HOME/.local/share/winapps/apps/$1/info" ]; then
|
||||
# shellcheck disable=SC1090
|
||||
. "$HOME/.local/share/winapps/apps/$1/info"
|
||||
ICON="$HOME/.local/share/winapps/apps/$1/icon.svg"
|
||||
elif [ -e "/usr/local/share/winapps/apps/$1/info" ]; then
|
||||
# shellcheck disable=SC1090
|
||||
. "/usr/local/share/winapps/apps/$1/info"
|
||||
ICON="/usr/local/share/winapps/apps/$1/icon.svg"
|
||||
else
|
||||
echo "You need to run 'installer.sh' first."
|
||||
exit 1
|
||||
fi
|
||||
if [ -n "$2" ]; then
|
||||
dprint "HOME:$HOME"
|
||||
FILE=$(echo "$2" | sed 's|'"$HOME"'|\\\\tsclient\\home|;s|/|\\|g;s|\\|\\\\|g')
|
||||
dprint "FILE:${FILE}"
|
||||
# shellcheck disable=SC2140
|
||||
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
|
||||
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
|
||||
dprint "DIR:${DIR}"
|
||||
if [ -e "${DIR}/../apps/$1/info" ]; then
|
||||
# shellcheck disable=SC1090
|
||||
. "${DIR}/../apps/$1/info"
|
||||
ICON="${DIR}/../apps/$1/icon.svg"
|
||||
elif [ -e "$HOME/.local/share/winapps/apps/$1/info" ]; then
|
||||
# shellcheck disable=SC1090
|
||||
. "$HOME/.local/share/winapps/apps/$1/info"
|
||||
ICON="$HOME/.local/share/winapps/apps/$1/icon.svg"
|
||||
elif [ -e "/usr/local/share/winapps/apps/$1/info" ]; then
|
||||
# shellcheck disable=SC1090
|
||||
. "/usr/local/share/winapps/apps/$1/info"
|
||||
ICON="/usr/local/share/winapps/apps/$1/icon.svg"
|
||||
else
|
||||
echo "You need to run 'installer.sh' first."
|
||||
exit 1
|
||||
fi
|
||||
if [ -n "$2" ]; then
|
||||
dprint "HOME:$HOME"
|
||||
FILE=$(echo "$2" | sed 's|'"$HOME"'|\\\\tsclient\\home|;s|/|\\|g;s|\\|\\\\|g')
|
||||
dprint "FILE:${FILE}"
|
||||
# shellcheck disable=SC2140
|
||||
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
|
||||
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
|
||||
|
||||
dprint "END"
|
||||
|
Reference in New Issue
Block a user