From fb961ca01bb338d32e99b5e08567f31f107bfee7 Mon Sep 17 00:00:00 2001
From: Jiri Kalvoda <jirikalvoda@kam.mff.cuni.cz>
Date: Fri, 2 Feb 2024 23:53:51 +0100
Subject: [PATCH] VM waydroid-run

---
 vm/init-waydroid.sh |  8 ++++++++
 vm/waydroid-run.py  | 38 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+)
 create mode 100755 vm/init-waydroid.sh
 create mode 100644 vm/waydroid-run.py

diff --git a/vm/init-waydroid.sh b/vm/init-waydroid.sh
new file mode 100755
index 0000000..6ce4b1c
--- /dev/null
+++ b/vm/init-waydroid.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+cd "$(dirname "$0")"
+. ../userconfig-lib.sh
+install_begin
+
+confln waydroid-run.py ~/bin/ E
+
+install_ok
diff --git a/vm/waydroid-run.py b/vm/waydroid-run.py
new file mode 100644
index 0000000..827ccf7
--- /dev/null
+++ b/vm/waydroid-run.py
@@ -0,0 +1,38 @@
+#!/bin/python3
+import os, sys, subprocess
+import time, select
+import select
+
+app_name = sys.argv[1] if len(sys.argv) >= 2 else None
+session = None
+
+def init():
+    global session
+    session = subprocess.Popen(["waydroid", "session", "start"], stderr=subprocess.PIPE)
+    time.sleep(0.1)
+    p = subprocess.run(["waydroid", "show-full-ui"])
+
+def clean():
+    subprocess.run(["waydroid", "session", "stop"])
+    session.communicate()
+
+init()
+while True:
+    poll = select.poll()
+    poll.register(session.stderr.fileno(), select.POLLIN)
+    poll.register(sys.stdin.fileno(), select.POLLIN)
+    for fd, event in poll.poll():
+        if fd == sys.stdin.fileno():
+            inp = input()
+            print("STDIN", inp)
+            if inp == "reload":
+                clean()
+                init()
+        if fd == session.stderr.fileno():
+            print("SESSION")
+            l = session.stderr.readline().strip().decode("utf-8")
+            print(l)
+            if l.endswith("Android with user 0 is ready"):
+                if app_name:
+                    p = subprocess.run(["waydroid", "app", "launch", app_name])
+                    p = subprocess.run(["waydroid", "show-full-ui"])
-- 
GitLab