mirror of
https://github.com/winapps-org/winapps.git
synced 2025-06-03 21:57:18 +02:00
Start fixing alot of stuff
This commit is contained in:
parent
d9a08384d9
commit
7d8ae3ae3e
@ -44,7 +44,6 @@ repos:
|
|||||||
rev: v6.2.1
|
rev: v6.2.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: beautysh
|
- id: beautysh
|
||||||
fail_fast: true
|
|
||||||
additional_dependencies:
|
additional_dependencies:
|
||||||
- setuptools
|
- setuptools
|
||||||
|
|
||||||
|
64
bin/winapps
64
bin/winapps
@ -1,43 +1,45 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
if [ ! -f "${HOME}/.config/winapps/winapps.conf" ] && [ ! -f "${HOME}/.winapps" ]; then
|
if [ ! -f "$HOME/.config/winapps/winapps.conf" ] && [ ! -f "$HOME/.winapps" ]; then
|
||||||
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"
|
||||||
|
|
||||||
if [ ! -d "${HOME}/.local/share/winapps" ]; then
|
if [ ! -d "$HOME/.local/share/winapps" ]; then
|
||||||
mkdir -p "${HOME}/.local/share/winapps"
|
mkdir -p "$HOME/.local/share/winapps"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RDP_SCALE=100
|
RDP_SCALE=100
|
||||||
|
|
||||||
if [ -f "${HOME}/.config/winapps/winapps.conf" ]; then
|
if [ -f "$HOME/.config/winapps/winapps.conf" ]; then
|
||||||
. "${HOME}/.config/winapps/winapps.conf"
|
# shellcheck source=/dev/null
|
||||||
|
. "$HOME/.config/winapps/winapps.conf"
|
||||||
else
|
else
|
||||||
. "${HOME}/.winapps"
|
# shellcheck source=/dev/null
|
||||||
|
. "$HOME/.winapps"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
function dprint() {
|
function dprint() {
|
||||||
if [ "${DEBUG}" = "true" ]; then
|
if [ "$DEBUG" = "true" ]; then
|
||||||
echo "[${RUN}] ${1}" >>"${HOME}/.local/share/winapps/winapps.log"
|
echo "[$RUN] ${1}" >>"$HOME/.local/share/winapps/winapps.log"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
dprint "START"
|
dprint "START"
|
||||||
|
|
||||||
if [ -f "${HOME}/.local/share/winapps/run" ]; then
|
if [ -f "$HOME/.local/share/winapps/run" ]; then
|
||||||
LAST_RAN=$(stat -t -c %Y "${HOME}/.local/share/winapps/run")
|
LAST_RAN=$(stat -t -c %Y "$HOME/.local/share/winapps/run")
|
||||||
dprint "LAST_RAN:${LAST_RAN}"
|
dprint "LAST_RAN:${LAST_RAN}"
|
||||||
touch "${HOME}/.local/share/winapps/run"
|
touch "$HOME/.local/share/winapps/run"
|
||||||
THIS_RUN=$(stat -t -c %Y "${HOME}/.local/share/winapps/run")
|
THIS_RUN=$(stat -t -c %Y "$HOME/.local/share/winapps/run")
|
||||||
dprint "THIS_RUN:${THIS_RUN}"
|
dprint "THIS_RUN:$THIS_RUN"
|
||||||
if ((THIS_RUN - LAST_RAN < 2)); then
|
if ((THIS_RUN - LAST_RAN < 2)); then
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
touch "${HOME}/.local/share/winapps/run"
|
touch "$HOME/.local/share/winapps/run"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "${FREERDP_COMMAND}" ]; then
|
if [ -z "${FREERDP_COMMAND}" ]; then
|
||||||
@ -48,15 +50,15 @@ if [ -z "${FREERDP_COMMAND}" ]; then
|
|||||||
then
|
then
|
||||||
FREERDP_COMMAND="xfreerdp3"
|
FREERDP_COMMAND="xfreerdp3"
|
||||||
fi
|
fi
|
||||||
elif command -v $FREERDP_COMMAND &> /dev/null
|
elif command -v "$FREERDP_COMMAND" &> /dev/null
|
||||||
then
|
then
|
||||||
dprint "Using custom freerdp command ${FREERDP_COMMAND}"
|
dprint "Using custom freerdp command $FREERDP_COMMAND"
|
||||||
else
|
else
|
||||||
echo "You have supplied a custom FreeRDP command, but the command is not available."
|
echo "You have supplied a custom FreeRDP command, but the command is not available."
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "${RDP_IP}" ]; then
|
if [ -z "$RDP_IP" ]; then
|
||||||
if [ ! "$(groups | grep -v libvirt)" ]; then
|
if [ ! "$(groups | grep -v libvirt)" ]; then
|
||||||
echo "You are not a member of the libvirt group. Run the below then reboot."
|
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 libvirt $(whoami)'
|
||||||
@ -74,7 +76,7 @@ if [ -z "${RDP_IP}" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
dprint "1:${1}"
|
dprint "1:${1}"
|
||||||
dprint "2:${2}"
|
dprint "2:$2"
|
||||||
# this is just for debug logging anyways
|
# this is just for debug logging anyways
|
||||||
# shellcheck disable=SC2145
|
# shellcheck disable=SC2145
|
||||||
dprint "@:${@}"
|
dprint "@:${@}"
|
||||||
@ -85,23 +87,23 @@ if [ "${MULTIMON}" = "true" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${1}" = "windows" ]; then
|
if [ "${1}" = "windows" ]; then
|
||||||
$FREERDP_COMMAND ${RDP_FLAGS} /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 &
|
$FREERDP_COMMAND $RDP_FLAGS /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 &
|
||||||
elif [ "${1}" = "check" ]; then
|
elif [ "${1}" = "check" ]; then
|
||||||
dprint "CHECK"
|
dprint "CHECK"
|
||||||
$FREERDP_COMMAND ${RDP_FLAGS} /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}
|
$FREERDP_COMMAND $RDP_FLAGS /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
|
||||||
elif [ "${1}" = "manual" ]; then
|
elif [ "${1}" = "manual" ]; then
|
||||||
dprint "MANUAL:${2}"
|
dprint "MANUAL:$2"
|
||||||
$FREERDP_COMMAND ${RDP_FLAGS} /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 &
|
$FREERDP_COMMAND $RDP_FLAGS /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 &
|
||||||
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
|
||||||
# shellcheck disable=SC1090
|
# shellcheck disable=SC1090
|
||||||
. "${DIR}/../apps/${1}/info"
|
. "${DIR}/../apps/${1}/info"
|
||||||
ICON="${DIR}/../apps/${1}/icon.svg"
|
ICON="${DIR}/../apps/${1}/icon.svg"
|
||||||
elif [ -e "${HOME}/.local/share/winapps/apps/${1}/info" ]; then
|
elif [ -e "$HOME/.local/share/winapps/apps/${1}/info" ]; then
|
||||||
# shellcheck disable=SC1090
|
# shellcheck disable=SC1090
|
||||||
. "${HOME}/.local/share/winapps/apps/${1}/info"
|
. "$HOME/.local/share/winapps/apps/${1}/info"
|
||||||
ICON="${HOME}/.local/share/winapps/apps/${1}/icon.svg"
|
ICON="$HOME/.local/share/winapps/apps/${1}/icon.svg"
|
||||||
elif [ -e "/usr/local/share/winapps/apps/${1}/info" ]; then
|
elif [ -e "/usr/local/share/winapps/apps/${1}/info" ]; then
|
||||||
# shellcheck disable=SC1090
|
# shellcheck disable=SC1090
|
||||||
. "/usr/local/share/winapps/apps/${1}/info"
|
. "/usr/local/share/winapps/apps/${1}/info"
|
||||||
@ -110,13 +112,13 @@ elif [ "${1}" != "install" ]; then
|
|||||||
echo "You need to run 'installer.sh' first."
|
echo "You need to run 'installer.sh' first."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [ -n "${2}" ]; then
|
if [ -n "$2" ]; then
|
||||||
dprint "HOME:${HOME}"
|
dprint "HOME:$HOME"
|
||||||
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}"
|
||||||
$FREERDP_COMMAND ${RDP_FLAGS} /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 &
|
$FREERDP_COMMAND $RDP_FLAGS /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 &
|
||||||
else
|
else
|
||||||
$FREERDP_COMMAND ${RDP_FLAGS} /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 &
|
$FREERDP_COMMAND $RDP_FLAGS /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 &
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
239
installer.sh
239
installer.sh
@ -11,45 +11,47 @@ DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
|||||||
MAKEDEMO=0
|
MAKEDEMO=0
|
||||||
USEDEMO=0
|
USEDEMO=0
|
||||||
|
|
||||||
. "${DIR}/install/inquirer.sh"
|
# shellcheck disable=SC1094
|
||||||
|
. "$DIR/install/inquirer.sh"
|
||||||
|
|
||||||
INSTALLED_EXES=()
|
INSTALLED_EXES=()
|
||||||
|
|
||||||
function waUsage() {
|
function waUsage() {
|
||||||
echo 'Usage:
|
echo "Usage:
|
||||||
./installer.sh --user # Install everything in ${HOME}
|
./installer.sh --user # Install everything in $HOME
|
||||||
./installer.sh --system # Install everything in /usr'
|
./installer.sh --system # Install everything in /usr"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
function waNoSudo() {
|
function waNoSudo() {
|
||||||
echo 'You are attempting to switch from a --system install to a --user install.
|
echo "You are attempting to switch from a --system install to a --user install.
|
||||||
Please run "./installer.sh --system --uninstall" first.'
|
Please run \"./installer.sh --system --uninstall\" first."
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
function waInstall() {
|
function waInstall() {
|
||||||
${SUDO} mkdir -p "${SYS_PATH}/apps"
|
$SUDO mkdir -p "$SYS_PATH/apps"
|
||||||
. "${DIR}/bin/winapps" install
|
. "$DIR/bin/winapps" install
|
||||||
}
|
}
|
||||||
|
|
||||||
function waFindInstalled() {
|
function waFindInstalled() {
|
||||||
echo -n " Checking for installed apps in RDP machine (this may take a while)..."
|
echo -n " Checking for installed apps in RDP machine (this may take a while)..."
|
||||||
if [ $USEDEMO != 1 ]; then
|
if [ $USEDEMO != 1 ]; then
|
||||||
rm -f ${HOME}/.local/share/winapps/installed.bat
|
rm -f "$HOME/.local/share/winapps/installed.bat"
|
||||||
rm -f ${HOME}/.local/share/winapps/installed.tmp
|
rm -f "$HOME/.local/share/winapps/installed.tmp"
|
||||||
rm -f ${HOME}/.local/share/winapps/installed
|
rm -f "$HOME/.local/share/winapps/installed"
|
||||||
rm -f ${HOME}/.local/share/winapps/detected
|
rm -f "$HOME/.local/share/winapps/detected"
|
||||||
cp "${DIR}/install/ExtractPrograms.ps1" ${HOME}/.local/share/winapps/ExtractPrograms.ps1
|
cp "$DIR/install/ExtractPrograms.ps1" "$HOME/.local/share/winapps/ExtractPrograms.ps1"
|
||||||
for F in $(ls "${DIR}/apps"); do
|
for F in "$DIR/apps"; do
|
||||||
. "${DIR}/apps/${F}/info"
|
[[ -e "$F" ]] || break
|
||||||
echo "IF EXIST \"${WIN_EXECUTABLE}\" ECHO ${F} >> \\\\tsclient\\home\\.local\\share\\winapps\\installed.tmp" >>${HOME}/.local/share/winapps/installed.bat
|
. "$DIR/apps/${F}/info"
|
||||||
|
echo "IF EXIST \"${WIN_EXECUTABLE}\" ECHO ${F} >> \\\\tsclient\\home\\.local\\share\\winapps\\installed.tmp" >>"$HOME/.local/share/winapps/installed.bat"
|
||||||
done
|
done
|
||||||
echo "powershell.exe -ExecutionPolicy Bypass -File \\\\tsclient\\home\\.local\\share\\winapps\\ExtractPrograms.ps1 > \\\\tsclient\home\\.local\\share\\winapps\\detected" >>${HOME}/.local/share/winapps/installed.bat
|
echo "powershell.exe -ExecutionPolicy Bypass -File \\\\tsclient\\home\\.local\\share\\winapps\\ExtractPrograms.ps1 > \\\\tsclient\home\\.local\\share\\winapps\\detected" >>"$HOME/.local/share/winapps/installed.bat"
|
||||||
echo "RENAME \\\\tsclient\\home\\.local\\share\\winapps\\installed.tmp installed" >>${HOME}/.local/share/winapps/installed.bat
|
echo "RENAME \\\\tsclient\\home\\.local\\share\\winapps\\installed.tmp installed" >>"$HOME/.local/share/winapps/installed.bat"
|
||||||
$FREERDP_COMMAND /d:"${RDP_DOMAIN}" /u:"${RDP_USER}" /p:"${RDP_PASS}" +auto-reconnect +home-drive -wallpaper +span /app:program:"C:\Windows\System32\cmd.exe",cmd:"/C \\\\tsclient\\home\\.local\\share\\winapps\\installed.bat" /v:${RDP_IP} 1>/dev/null 2>&1 &
|
$FREERDP_COMMAND /d:"${RDP_DOMAIN}" /u:"${RDP_USER}" /p:"${RDP_PASS}" +auto-reconnect +home-drive -wallpaper +span /app:program:"C:\Windows\System32\cmd.exe",cmd:"/C \\\\tsclient\\home\\.local\\share\\winapps\\installed.bat" /v:${RDP_IP} 1>/dev/null 2>&1 &
|
||||||
COUNT=0
|
COUNT=0
|
||||||
while [ ! -f "${HOME}/.local/share/winapps/installed" ]; do
|
while [ ! -f "$HOME/.local/share/winapps/installed" ]; do
|
||||||
sleep 5
|
sleep 5
|
||||||
COUNT=$((COUNT + 1))
|
COUNT=$((COUNT + 1))
|
||||||
if ((COUNT == 15)); then
|
if ((COUNT == 15)); then
|
||||||
@ -69,12 +71,12 @@ function waFindInstalled() {
|
|||||||
done
|
done
|
||||||
if [ $MAKEDEMO = 1 ]; then
|
if [ $MAKEDEMO = 1 ]; then
|
||||||
rm -rf /tmp/winapps_demo
|
rm -rf /tmp/winapps_demo
|
||||||
cp -a ${HOME}/.local/share/winapps /tmp/winapps_demo
|
cp -a "$HOME/.local/share/winapps /tmp/winapps_demo"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
rm -rf ${HOME}/.local/share/winapps
|
rm -rf "$HOME/.local/share/winapps"
|
||||||
cp -a /tmp/winapps_demo ${HOME}/.local/share/winapps
|
cp -a /tmp/winapps_demo "$HOME/.local/share/winapps"
|
||||||
#sleep 3
|
#sleep 3
|
||||||
fi
|
fi
|
||||||
echo " Finished."
|
echo " Finished."
|
||||||
@ -82,16 +84,16 @@ function waFindInstalled() {
|
|||||||
|
|
||||||
function waConfigureApp() {
|
function waConfigureApp() {
|
||||||
if [ -z "${ICON}" ]; then
|
if [ -z "${ICON}" ]; then
|
||||||
ICON=${SYS_PATH}/apps/${1}/icon.${2}
|
ICON=$SYS_PATH/apps/${1}/icon.${2}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
. "${SYS_PATH}/apps/${1}/info"
|
. "$SYS_PATH/apps/${1}/info"
|
||||||
echo -n " Configuring ${NAME}..."
|
echo -n " Configuring $NAME..."
|
||||||
if [ ${USEDEMO} != 1 ]; then
|
if [ $USEDEMO != 1 ]; then
|
||||||
${SUDO} rm -f "${APP_PATH}/${1}.desktop"
|
$SUDO rm -f "$APP_PATH/${1}.desktop"
|
||||||
echo "[Desktop Entry]
|
echo "[Desktop Entry]
|
||||||
Name=${NAME}
|
Name=$NAME
|
||||||
Exec=${BIN_PATH}/winapps ${1} %F
|
Exec=$BIN_PATH/winapps ${1} %F
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Icon=$ICON
|
Icon=$ICON
|
||||||
@ -99,12 +101,11 @@ StartupWMClass=${FULL_NAME}
|
|||||||
Comment=${FULL_NAME}
|
Comment=${FULL_NAME}
|
||||||
Categories=${CATEGORIES}
|
Categories=${CATEGORIES}
|
||||||
MimeType=${MIME_TYPES}
|
MimeType=${MIME_TYPES}
|
||||||
" | ${SUDO} tee "${APP_PATH}/${1}.desktop" >/dev/null
|
" | $SUDO tee "$APP_PATH/${1}.desktop" >/dev/null
|
||||||
${SUDO} rm -f "${BIN_PATH}/${1}"
|
$SUDO rm -f "$BIN_PATH/${1}"
|
||||||
echo "#!/usr/bin/env bash
|
echo "#!/usr/bin/env bash $BIN_PATH/winapps ${1} $*
|
||||||
${BIN_PATH}/winapps ${1} $@
|
" | $SUDO tee "$BIN_PATH/${1}" >/dev/null
|
||||||
" | ${SUDO} tee "${BIN_PATH}/${1}" >/dev/null
|
$SUDO chmod a+x "$BIN_PATH/${1}"
|
||||||
${SUDO} chmod a+x "${BIN_PATH}/${1}"
|
|
||||||
fi
|
fi
|
||||||
echo " Finished."
|
echo " Finished."
|
||||||
|
|
||||||
@ -113,8 +114,8 @@ ${BIN_PATH}/winapps ${1} $@
|
|||||||
|
|
||||||
function waConfigureApps() {
|
function waConfigureApps() {
|
||||||
APPS=()
|
APPS=()
|
||||||
for F in $(cat "${HOME}/.local/share/winapps/installed" | sed 's/\r/\n/g'); do
|
for F in $(cat "$HOME/.local/share/winapps/installed" | sed 's/\r/\n/g'); do
|
||||||
. "${DIR}/apps/${F}/info"
|
. "$DIR/apps/${F}/info"
|
||||||
APPS+=("${FULL_NAME} (${F})")
|
APPS+=("${FULL_NAME} (${F})")
|
||||||
INSTALLED_EXES+=("$(echo "${WIN_EXECUTABLE##*\\}" | tr '[:upper:]' '[:lower:]')")
|
INSTALLED_EXES+=("$(echo "${WIN_EXECUTABLE##*\\}" | tr '[:upper:]' '[:lower:]')")
|
||||||
done
|
done
|
||||||
@ -129,93 +130,93 @@ function waConfigureApps() {
|
|||||||
fi
|
fi
|
||||||
if [ "${APP_INSTALL}" = "Select which pre-configured applications to set up" ]; then
|
if [ "${APP_INSTALL}" = "Select which pre-configured applications to set up" ]; then
|
||||||
checkbox_input "Which pre-configured apps would you like to set up?" APPS SELECTED_APPS
|
checkbox_input "Which pre-configured apps would you like to set up?" APPS SELECTED_APPS
|
||||||
echo "" >"${HOME}/.local/share/winapps/installed"
|
echo "" >"$HOME/.local/share/winapps/installed"
|
||||||
for F in "${SELECTED_APPS[@]}"; do
|
for F in "${SELECTED_APPS[@]}"; do
|
||||||
APP="${F##*(}"
|
APP="${F##*(}"
|
||||||
APP="${APP%%)}"
|
APP="${APP%%)}"
|
||||||
echo "${APP}" >>"${HOME}/.local/share/winapps/installed"
|
echo "${APP}" >>"$HOME/.local/share/winapps/installed"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
${SUDO} cp "${DIR}/bin/winapps" "${BIN_PATH}/winapps"
|
$SUDO cp "$DIR/bin/winapps" "$BIN_PATH/winapps"
|
||||||
COUNT=0
|
COUNT=0
|
||||||
if [ "${APP_INSTALL}" != "Do not set up any pre-configured applications" ]; then
|
if [ "${APP_INSTALL}" != "Do not set up any pre-configured applications" ]; then
|
||||||
for F in $(cat "${HOME}/.local/share/winapps/installed" | sed 's/\r/\n/g'); do
|
for F in $(cat "$HOME/.local/share/winapps/installed" | sed 's/\r/\n/g'); do
|
||||||
COUNT=$((COUNT + 1))
|
COUNT=$((COUNT + 1))
|
||||||
${SUDO} cp -r "apps/${F}" "${SYS_PATH}/apps"
|
$SUDO cp -r "apps/${F}" "$SYS_PATH/apps"
|
||||||
waConfigureApp "${F}" svg
|
waConfigureApp "${F}" svg
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
rm -f "${HOME}/.local/share/winapps/installed"
|
rm -f "$HOME/.local/share/winapps/installed"
|
||||||
rm -f "${HOME}/.local/share/winapps/installed.bat"
|
rm -f "$HOME/.local/share/winapps/installed.bat"
|
||||||
if (($COUNT == 0)); then
|
if (($COUNT == 0)); then
|
||||||
echo " No configured applications."
|
echo " No configured applications."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function waConfigureAppsAllOfficiallySupported(){
|
function waConfigureAppsAllOfficiallySupported(){
|
||||||
${SUDO} cp "${DIR}/bin/winapps" "${BIN_PATH}/winapps"
|
$SUDO cp "$DIR/bin/winapps" "$BIN_PATH/winapps"
|
||||||
COUNT=0
|
COUNT=0
|
||||||
for F in $(cat "${HOME}/.local/share/winapps/installed" | sed 's/\r/\n/g'); do
|
for F in $(cat "$HOME/.local/share/winapps/installed" | sed 's/\r/\n/g'); do
|
||||||
COUNT=$((COUNT + 1))
|
COUNT=$((COUNT + 1))
|
||||||
${SUDO} cp -r "apps/${F}" "${SYS_PATH}/apps"
|
$SUDO cp -r "apps/${F}" "$SYS_PATH/apps"
|
||||||
waConfigureApp "${F}" svg
|
waConfigureApp "${F}" svg
|
||||||
done
|
done
|
||||||
rm -f "${HOME}/.local/share/winapps/installed"
|
rm -f "$HOME/.local/share/winapps/installed"
|
||||||
rm -f "${HOME}/.local/share/winapps/installed.bat"
|
rm -f "$HOME/.local/share/winapps/installed.bat"
|
||||||
if (($COUNT == 0)); then
|
if (($COUNT == 0)); then
|
||||||
echo " No configured applications."
|
echo " No configured applications."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function waConfigureDetectedApps() {
|
function waConfigureDetectedApps() {
|
||||||
if [ -f "${HOME}/.local/share/winapps/detected" ]; then
|
if [ -f "$HOME/.local/share/winapps/detected" ]; then
|
||||||
sed -i 's/\r//g' "${HOME}/.local/share/winapps/detected"
|
sed -i 's/\r//g' "$HOME/.local/share/winapps/detected"
|
||||||
. "${HOME}/.local/share/winapps/detected"
|
. "$HOME/.local/share/winapps/detected"
|
||||||
APPS=()
|
APPS=()
|
||||||
for I in "${!NAMES[@]}"; do
|
for I in "${!NAMES[@]}"; do
|
||||||
EXE=${EXES[$I]##*\\}
|
EXE=${EXES[$I]##*\\}
|
||||||
EXE_LOWER=$(echo "${EXE}" | tr '[:upper:]' '[:lower:]')
|
EXE_LOWER=$(echo "$EXE" | tr '[:upper:]' '[:lower:]')
|
||||||
if (
|
if (
|
||||||
dlm=$'\x1F'
|
dlm=$'\x1F'
|
||||||
IFS="$dlm"
|
IFS="$dlm"
|
||||||
[[ "$dlm${INSTALLED_EXES[*]}$dlm" != *"$dlm${EXE_LOWER}$dlm"* ]]
|
[[ "$dlm${INSTALLED_EXES[*]}$dlm" != *"$dlm${EXE_LOWER}$dlm"* ]]
|
||||||
); then
|
); then
|
||||||
APPS+=("${NAMES[$I]} (${EXE})")
|
APPS+=("${NAMES[$I]} ($EXE)")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
IFS=$'\n' APPS=($(sort <<<"${APPS[*]}"))
|
IFS=$'\n' APPS=("$(sort <<<"${APPS[*]}")")
|
||||||
unset IFS
|
unset IFS
|
||||||
OPTIONS=("Set up all detected applications" "Select which applications to set up" "Do not set up any applications")
|
OPTIONS=("Set up all detected applications" "Select which applications to set up" "Do not set up any applications")
|
||||||
menuFromArr APP_INSTALL "How would you like to handle other detected applications?" "${OPTIONS[@]}"
|
menuFromArr APP_INSTALL "How would you like to handle other detected applications?" "${OPTIONS[@]}"
|
||||||
if [ "${APP_INSTALL}" = "Select which applications to set up" ]; then
|
if [ "${APP_INSTALL}" = "Select which applications to set up" ]; then
|
||||||
checkbox_input "Which other apps would you like to set up?" APPS SELECTED_APPS
|
checkbox_input "Which other apps would you like to set up?" APPS SELECTED_APPS
|
||||||
echo "" >"${HOME}/.local/share/winapps/installed"
|
echo "" >"$HOME/.local/share/winapps/installed"
|
||||||
for F in "${SELECTED_APPS[@]}"; do
|
for F in "${SELECTED_APPS[@]}"; do
|
||||||
EXE="${F##*(}"
|
EXE="${F##*(}"
|
||||||
EXE="${EXE%%)}"
|
EXE="${EXE%%)}"
|
||||||
APP="${F% (*}"
|
APP="${F% (*}"
|
||||||
echo "${EXE}|${APP}" >>"${HOME}/.local/share/winapps/installed"
|
echo "$EXE|${APP}" >>"$HOME/.local/share/winapps/installed"
|
||||||
done
|
done
|
||||||
elif [ "${APP_INSTALL}" = "Set up all detected applications" ]; then
|
elif [ "${APP_INSTALL}" = "Set up all detected applications" ]; then
|
||||||
for I in "${!EXES[@]}"; do
|
for I in "${!EXES[@]}"; do
|
||||||
EXE=${EXES[$I]##*\\}
|
EXE=${EXES[$I]##*\\}
|
||||||
echo "${EXE}|${NAMES[$I]}" >>"${HOME}/.local/share/winapps/installed"
|
echo "$EXE|${NAMES[$I]}" >>"$HOME/.local/share/winapps/installed"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
COUNT=0
|
COUNT=0
|
||||||
if [ -f "${HOME}/.local/share/winapps/installed" ]; then
|
if [ -f "$HOME/.local/share/winapps/installed" ]; then
|
||||||
while read LINE; do
|
while read -r LINE; do
|
||||||
EXE="${LINE%|*}"
|
EXE="${LINE%|*}"
|
||||||
NAME="${LINE#*|}"
|
NAME="${LINE#*|}"
|
||||||
for I in "${!NAMES[@]}"; do
|
for I in "${!NAMES[@]}"; do
|
||||||
if [ "${NAME}" = "${NAMES[$I]}" ] && [[ "${EXES[$I]}" == *"\\${EXE}" ]]; then
|
if [ "$NAME" = "${NAMES[$I]}" ] && [[ "${EXES[$I]}" == *"\\$EXE" ]]; then
|
||||||
EXE=$(echo "${EXE}" | tr '[:upper:]' '[:lower:]')
|
EXE=$(echo "$EXE" | tr '[:upper:]' '[:lower:]')
|
||||||
${SUDO} mkdir -p "${SYS_PATH}/apps/${EXE}"
|
$SUDO mkdir -p "$SYS_PATH/apps/$EXE"
|
||||||
echo "# GNOME shortcut name
|
echo "# GNOME shortcut name
|
||||||
NAME=\"${NAME}\"
|
NAME=\"$NAME\"
|
||||||
|
|
||||||
# Used for descriptions and window class
|
# Used for descriptions and window class
|
||||||
FULL_NAME=\"${NAME}\"
|
FULL_NAME=\"$NAME\"
|
||||||
|
|
||||||
# The executable inside windows
|
# The executable inside windows
|
||||||
WIN_EXECUTABLE=\"${EXES[$I]}\"
|
WIN_EXECUTABLE=\"${EXES[$I]}\"
|
||||||
@ -225,17 +226,17 @@ CATEGORIES=\"WinApps\"
|
|||||||
|
|
||||||
# GNOME mimetypes
|
# GNOME mimetypes
|
||||||
MIME_TYPES=\"\"
|
MIME_TYPES=\"\"
|
||||||
" | sudo tee "${SYS_PATH}/apps/${EXE}/info" >/dev/null
|
" | sudo tee "$SYS_PATH/apps/$EXE/info" >/dev/null
|
||||||
echo "${ICONS[$I]}" | base64 -d | sudo tee "${SYS_PATH}/apps/${EXE}/icon.ico" >/dev/null
|
echo "${ICONS[$I]}" | base64 -d | sudo tee "$SYS_PATH/apps/$EXE/icon.ico" >/dev/null
|
||||||
waConfigureApp "${EXE}" ico
|
waConfigureApp "$EXE" ico
|
||||||
COUNT=$((COUNT + 1))
|
COUNT=$((COUNT + 1))
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done <"${HOME}/.local/share/winapps/installed"
|
done <"$HOME/.local/share/winapps/installed"
|
||||||
rm -f "${HOME}/.local/share/winapps/installed"
|
rm -f "$HOME/.local/share/winapps/installed"
|
||||||
fi
|
fi
|
||||||
rm -f "${HOME}/.local/share/winapps/installed.bat"
|
rm -f "$HOME/.local/share/winapps/installed.bat"
|
||||||
if (($COUNT == 0)); then
|
if ((COUNT == 0)); then
|
||||||
echo " No configured applications."
|
echo " No configured applications."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -243,60 +244,64 @@ MIME_TYPES=\"\"
|
|||||||
|
|
||||||
function waConfigureWindows() {
|
function waConfigureWindows() {
|
||||||
echo -n " Configuring Windows..."
|
echo -n " Configuring Windows..."
|
||||||
if [ ${USEDEMO} != 1 ]; then
|
if [ $USEDEMO != 1 ]; then
|
||||||
${SUDO} rm -f "${APP_PATH}/windows.desktop"
|
$SUDO rm -f "$APP_PATH/windows.desktop"
|
||||||
${SUDO} mkdir -p "${SYS_PATH}/icons"
|
$SUDO mkdir -p "$SYS_PATH/icons"
|
||||||
${SUDO} cp "${DIR}/icons/windows.svg" "${SYS_PATH}/icons/windows.svg"
|
$SUDO cp "$DIR/icons/windows.svg" "$SYS_PATH/icons/windows.svg"
|
||||||
echo "[Desktop Entry]
|
echo "[Desktop Entry]
|
||||||
Name=Windows
|
Name=Windows
|
||||||
Exec=${BIN_PATH}/winapps windows %F
|
Exec=$BIN_PATH/winapps windows %F
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
Icon=${SYS_PATH}/icons/windows.svg
|
Icon=$SYS_PATH/icons/windows.svg
|
||||||
StartupWMClass=Microsoft Windows
|
StartupWMClass=Microsoft Windows
|
||||||
Comment=Microsoft Windows
|
Comment=Microsoft Windows
|
||||||
" | ${SUDO} tee "${APP_PATH}/windows.desktop" >/dev/null
|
" | $SUDO tee "$APP_PATH/windows.desktop" >/dev/null
|
||||||
${SUDO} rm -f "${BIN_PATH}/windows"
|
$SUDO rm -f "$BIN_PATH/windows"
|
||||||
echo "#!/usr/bin/env bash
|
echo "#!/usr/bin/env bash
|
||||||
${BIN_PATH}/winapps windows
|
$BIN_PATH/winapps windows
|
||||||
" | ${SUDO} tee "/${BIN_PATH}/windows" >/dev/null
|
" | $SUDO tee "/$BIN_PATH/windows" >/dev/null
|
||||||
${SUDO} chmod a+x "${BIN_PATH}/windows"
|
$SUDO chmod a+x "$BIN_PATH/windows"
|
||||||
fi
|
fi
|
||||||
echo " Finished."
|
echo " Finished."
|
||||||
}
|
}
|
||||||
|
|
||||||
function waUninstallUser() {
|
function waUninstallUser() {
|
||||||
rm -f "${HOME}/.local/bin/winapps"
|
rm -f "$HOME/.local/bin/winapps"
|
||||||
rm -rf "${HOME}/.local/share/winapps"
|
rm -rf "$HOME/.local/share/winapps"
|
||||||
for F in $(grep -l -d skip "bin/winapps" "${HOME}/.local/share/applications/"* -s); do
|
grep -l -d skip "bin/winapps" "$HOME/.local/share/applications/"* -s | while IFS= read -r F
|
||||||
echo -n " Removing ${F}..."
|
do
|
||||||
${SUDO} rm ${F}
|
echo -n " Removing $F..."
|
||||||
|
"$SUDO" rm "$F"
|
||||||
echo " Finished."
|
echo " Finished."
|
||||||
done
|
done
|
||||||
for F in $(grep -l -d skip "bin/winapps" "${HOME}/.local/bin/"* -s); do
|
grep -l -d skip "bin/winapps" "$HOME/.local/bin/"* -s | while IFS= read -r F
|
||||||
echo -n " Removing ${F}..."
|
do
|
||||||
${SUDO} rm ${F}
|
echo -n " Removing $F..."
|
||||||
|
"$SUDO" rm "$F"
|
||||||
echo " Finished."
|
echo " Finished."
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function waUninstallSystem() {
|
function waUninstallSystem() {
|
||||||
${SUDO} rm -f "/usr/local/bin/winapps"
|
"$SUDO" rm -f "/usr/local/bin/winapps"
|
||||||
${SUDO} rm -rf "/usr/local/share/winapps"
|
"$SUDO" rm -rf "/usr/local/share/winapps"
|
||||||
for F in $(grep -l -d skip "bin/winapps" "/usr/share/applications/"* -s); do
|
grep -l -d skip "bin/winapps" "/usr/share/applications/"* -s | while IFS= read -r F
|
||||||
if [ -z "${SUDO}" ]; then
|
do
|
||||||
|
if [ -z "$SUDO" ]; then
|
||||||
waNoSudo
|
waNoSudo
|
||||||
fi
|
fi
|
||||||
echo -n " Removing ${F}..."
|
echo -n " Removing $F..."
|
||||||
${SUDO} rm ${F}
|
"$SUDO" rm "$F"
|
||||||
echo " Finished."
|
echo " Finished."
|
||||||
done
|
done
|
||||||
for F in $(grep -l -d skip "bin/winapps" "/usr/local/bin/"* -s); do
|
grep -l -d skip "bin/winapps" "/usr/local/bin/"* -s | while IFS= read -r F
|
||||||
if [ -z "${SUDO}" ]; then
|
do
|
||||||
|
if [ -z "$SUDO" ]; then
|
||||||
waNoSudo
|
waNoSudo
|
||||||
fi
|
fi
|
||||||
echo -n " Removing ${F}..."
|
echo -n " Removing $F..."
|
||||||
${SUDO} rm ${F}
|
"$SUDO" rm "$F"
|
||||||
echo " Finished."
|
echo " Finished."
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@ -304,29 +309,29 @@ function waUninstallSystem() {
|
|||||||
if [ -z "${1}" ]; then
|
if [ -z "${1}" ]; then
|
||||||
OPTIONS=(User System)
|
OPTIONS=(User System)
|
||||||
menuFromArr INSTALL_TYPE "Would you like to install for the current user or the whole system?" "${OPTIONS[@]}"
|
menuFromArr INSTALL_TYPE "Would you like to install for the current user or the whole system?" "${OPTIONS[@]}"
|
||||||
elif [ "${1}" = '--user' ]; then
|
elif [ "$1" = '--user' ]; then
|
||||||
INSTALL_TYPE='User'
|
INSTALL_TYPE='User'
|
||||||
elif [ "${1}" = '--system' ]; then
|
elif [ "$1" = '--system' ]; then
|
||||||
INSTALL_TYPE='System'
|
INSTALL_TYPE='System'
|
||||||
else
|
else
|
||||||
waUsage
|
waUsage
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${INSTALL_TYPE}" = 'User' ]; then
|
if [ "$INSTALL_TYPE" = 'User' ]; then
|
||||||
SUDO=""
|
SUDO=""
|
||||||
BIN_PATH="${HOME}/.local/bin"
|
BIN_PATH="$HOME/.local/bin"
|
||||||
APP_PATH="${HOME}/.local/share/applications"
|
APP_PATH="$HOME/.local/share/applications"
|
||||||
SYS_PATH="${HOME}/.local/share/winapps"
|
SYS_PATH="$HOME/.local/share/winapps"
|
||||||
mkdir -p $BIN_PATH
|
mkdir -p "$BIN_PATH"
|
||||||
mkdir -p $APP_PATH
|
mkdir -p "$APP_PATH"
|
||||||
mkdir -p $SYS_PATH
|
mkdir -p "$SYS_PATH"
|
||||||
if [ -n "${2}" ]; then
|
if [ -n "$2" ]; then
|
||||||
if [ "${2}" = '--uninstall' ]; then
|
if [ "$2" = '--uninstall' ]; then
|
||||||
# Uninstall
|
# Uninstall
|
||||||
echo "Uninstalling..."
|
echo "Uninstalling..."
|
||||||
waUninstallUser
|
waUninstallUser
|
||||||
exit
|
exit
|
||||||
elif [ "${2}" = '--setupAllOfficiallySupportedApps' ]; then
|
elif [ "$2" = '--setupAllOfficiallySupportedApps' ]; then
|
||||||
echo "Setting up All Officially Supported Apps "
|
echo "Setting up All Officially Supported Apps "
|
||||||
echo "Removing any old configurations..."
|
echo "Removing any old configurations..."
|
||||||
waUninstallUser
|
waUninstallUser
|
||||||
@ -340,19 +345,19 @@ if [ "${INSTALL_TYPE}" = 'User' ]; then
|
|||||||
usage
|
usage
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
elif [ "${INSTALL_TYPE}" = 'System' ]; then
|
elif [ "$INSTALL_TYPE" = 'System' ]; then
|
||||||
SUDO="sudo"
|
SUDO="sudo"
|
||||||
sudo ls >/dev/null
|
sudo ls >/dev/null
|
||||||
BIN_PATH="/usr/local/bin"
|
BIN_PATH="/usr/local/bin"
|
||||||
APP_PATH="/usr/share/applications"
|
APP_PATH="/usr/share/applications"
|
||||||
SYS_PATH="/usr/local/share/winapps"
|
SYS_PATH="/usr/local/share/winapps"
|
||||||
if [ -n "${2}" ]; then
|
if [ -n "$2" ]; then
|
||||||
if [ "${2}" = '--uninstall' ]; then
|
if [ "$2" = '--uninstall' ]; then
|
||||||
# Uninstall
|
# Uninstall
|
||||||
echo "Uninstalling..."
|
echo "Uninstalling..."
|
||||||
waUninstallSystem
|
waUninstallSystem
|
||||||
exit
|
exit
|
||||||
elif [ "${2}" = '--setupAllOfficiallySupportedApps' ]; then
|
elif [ "$2" = '--setupAllOfficiallySupportedApps' ]; then
|
||||||
echo "Setting up All Officially Supported Apps "
|
echo "Setting up All Officially Supported Apps "
|
||||||
echo "Removing any old configurations..."
|
echo "Removing any old configurations..."
|
||||||
waUninstallUser
|
waUninstallUser
|
||||||
|
Loading…
x
Reference in New Issue
Block a user