qusal/salt/dom0/files/bin/qvm-terminal
Ben Grande bdd4c789c1
fix: avoid echo usage
Echo can interpret operand as an option and checking every variable to
be echoed is troublesome while with printf, if the format specifier is
present before the operand, printing as string can be enforced.
2024-08-06 18:15:24 +02:00

53 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
# SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
set -eu
me="${0##*/}"
usage(){
printf '%s\n' "Usage: ${me} [QVM-RUN_OPTIONS] <QUBE>
Examples:
${me} --dispvm=<DVM_TEMPLATE>
${me} -u root <QUBE>
${me} <QUBE>
The application to open can be specified with environment variables:
QVM_TERMINAL=xterm ${me} -u root <QUBE>
QVM_FILE_MANAGER=thunar ${me} -u root <QUBE>" >&2
exit "${1-"1"}"
}
case "${me}" in
*-terminal) service="${QVM_TERMINAL:-"qubes-run-terminal"}";;
*-file-manager) service="${QVM_FILE_MANAGER:-"qubes-open-file-manager"}";;
*) printf '%s\n' "Invalid script name: ${me}" exit 1 ;;
esac
case "${1-}" in
-h|--help)
usage 1
;;
"")
## Try to run on focused window, if Dom0 is focused, it will prompt you to
## select a qube window.
id="$(xdotool getwindowfocus)"
qube="$(xprop -id "${id}" -notype _QUBES_VMNAME | awk -F'"' '{print $2}')"
if test -n "${qube}"; then
exec qvm-run --service -- "${qube}" "qubes.StartApp+${service}"
fi
printf '%s\n' "Select a qube window ..."
id="$(xdotool selectwindow)"
qube="$(xprop -id "${id}" -notype _QUBES_VMNAME | awk -F'"' '{print $2}')"
if test -n "${qube}"; then
qvm-run --service -- "${qube}" "qubes.StartApp+${service}"
fi
;;
*)
qvm-run --service "${@}" -- "qubes.StartApp+${service}"
;;
esac