#!/bin/sh
set -eu

main() {
  cmd=""
  case "${1-}" in
    console) cmd="$1";;
    "");;
    *) printf '%s\n' "Invalid argument" >&2; exit 1;;
  esac

  guivm_terminal=i3-sensible-terminal
  domU_terminal=qubes-run-terminal
  domU_console=qvm-console-dispvm
  id="$(xprop -root _NET_ACTIVE_WINDOW)"
  id="${id##* }"
  vm="$(xprop -id "$id" | grep '_QUBES_VMNAME(STRING)')" || true
  if test -z "$vm"; then
    exec "$guivm_terminal"
  fi
  vm="${vm#*\"}"
  vm="${vm%\"*}"

  if test "$cmd" = "console"; then
    exec "$domU_console" -- "$vm"
  fi

  if command -v qrexec-client >/dev/null; then
    exec qrexec-client -e -d "$vm" -- \
      "DEFAULT:QUBESRPC qubes.StartApp+$domU_terminal $vm"
  fi
  exec qvm-run --no-gui --service -- "$vm" qubes.StartApp+"$domU_terminal"
}

main "$@"
