# Maintainer: aur.chaotic.cx

_pkgname="waydroid"
pkgname="$_pkgname-alt"
pkgver=1.6.3
pkgrel=2
pkgdesc="A container-based Android system - with desktop menu creation disabled"
url="https://github.com/waydroid/waydroid"
license=('GPL-3.0-or-later')
arch=('any')

depends=(
  'dbus-python'
  'dnsmasq'
  'gtk3'
  'lxc'
  'nftables'
  'pulse-native-provider'
  'python'
  'python-dbus'
  'python-gbinder'
  'python-gobject'
)
makedepends=(
  'git'
)

provides=("$_pkgname=$pkgver")
conflicts=("$_pkgname")

_pkgsrc="$_pkgname"
source=(
  "$_pkgsrc"::"git+$url.git#tag=$pkgver"
  '0001-disable-launchers.patch'
  '0002-add-show-command.patch'
)
sha256sums=(
  '7a769457d08f3d12694a4c02c3fb4888b6537c68f0b5ad8be461f16f73b4bfa6'
  'e161c641aa02c2c3e3fbf8b9883abd46cf325eece2f572862f6abcde097081fe'
  '64d66c53c4e9cd7eb71dd692811b5e6b43163c0a6d78c0afa833a5b344949ff0'
)

prepare() {
  local src
  for src in "${source[@]}"; do
    src="${src%%::*}"
    src="${src##*/}"
    src="${src%.zst}"
    if [[ $src == *.patch ]]; then
      printf '\nApplying patch: %s\n' "$src"
      patch -d "$_pkgsrc" -Np1 -F100 -i "${srcdir:?}/$src"
    fi
  done
}

package() {
  # specify python version to prevent untracked pyc files
  local _pyver_major _pyver_minor
  _pyver_major=$(python -c 'import sys; print(sys.version_info.major)')
  _pyver_minor=$(python -c 'import sys; print(sys.version_info.minor)')

  eval "depends+=(
    'python>=${_pyver_major}.${_pyver_minor}'
    'python<${_pyver_major}.$((_pyver_minor + 1))'
  )"

  cd "$_pkgsrc"
  make install DESTDIR="$pkgdir" USE_NFTABLES=1

  # create pyc files
  python -m compileall -o0 -o1 -f -p / -s "$pkgdir" "$pkgdir/"

  # launchers
  rm -rf "$pkgdir"/usr/share/applications/*.desktop

  install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/waydroid-show.desktop" << END
[Desktop Entry]
Type=Application
Name=${_pkgname^} (show-full-ui)
Exec=waydroid-show
Comment=${pkgdesc% - *}
Icon=$_pkgname
StartupWMClass=Waydroid
Categories=Utility;
X-Purism-FormFactor=Workstation;Mobile;
Actions=StopSession;StopContainer;

[Desktop Action StopSession]
Name=Stop Waydroid Session
Exec=waydroid session stop

[Desktop Action StopContainer]
Name=Stop Waydroid Container
Exec=systemctl stop waydroid-container.service
END

  # script to show gui and stop session after gui closed
  install -Dm755 /dev/stdin "$pkgdir/usr/bin/waydroid-show" << END
#!/usr/bin/env bash

if [ "\${EUID:-\$(id -u)}" -eq 0 ]; then
  echo "Do not run as root user."
  exit 1
fi

_count=\$(pgrep -f 'bash \S+waydroid-show' | wc -l)
if ((_count >2)); then
  echo "waydroid-show is already running."
  exit 1
fi

waydroid show-full-ui &

while true; do
  sleep 10
  _session=\$(waydroid status | grep -m1 '^Session:')
  _container=\$(waydroid status | grep -m1 '^Container:')
  if grep -q RUN <<< "\$_session"; then
    if grep -q STOP <<< "\$_container"; then
      waydroid session stop
      break
    fi
  else
    break
  fi
done
END

  # unwanted
  rm -rf "$pkgdir/usr/share/metainfo/"
}
