mirror of
https://github.com/theupriser/steamify-cachyos-dev.git
synced 2026-10-05 12:45:56 +02:00
feat: vmisobuild.sh (ISO build in the VM, package cache per VM), vmisoboot.sh (ISO VM for Calamares), qmpshot.py/qmpclick.py; run.sh VM_CACHE/VM_CPUS/VM_NOGL/VM_PORT
This commit is contained in:
1 parent
fec0ce5b8e
commit
3ccbb62bd2
7 files changed
+173
-7
No files matched your search
@@ -0,0 +1,27 @@
|
||||
# qmpshot.py <qmp socket> <out.png>: screenshot of the VM's screen over QMP
|
||||
# (screendump). Needs a VM without virgl (run.sh with VM_NOGL=1): with
|
||||
# virgl QEMU answers "no surface". Before the guest's desktop is up it shows
|
||||
# whatever is on screen (boot menu, Calamares, ...).
|
||||
import json, os, socket, sys, tempfile
|
||||
|
||||
sock, out = sys.argv[1], sys.argv[2]
|
||||
s = socket.socket(socket.AF_UNIX); s.connect(sock); f = s.makefile("rw"); f.readline()
|
||||
def cmd(c):
|
||||
f.write(json.dumps(c) + "\n"); f.flush()
|
||||
while True:
|
||||
r = json.loads(f.readline())
|
||||
if "event" not in r:
|
||||
return r
|
||||
cmd({"execute": "qmp_capabilities"})
|
||||
ppm = tempfile.mktemp(suffix=".ppm")
|
||||
r = cmd({"execute": "screendump", "arguments": {"filename": ppm, "format": "ppm"}})
|
||||
if "error" in r:
|
||||
raise SystemExit("screendump: %s" % r["error"]["desc"])
|
||||
try:
|
||||
from PIL import Image
|
||||
Image.open(ppm).save(out)
|
||||
os.remove(ppm)
|
||||
except ImportError:
|
||||
os.replace(ppm, os.path.splitext(out)[0] + ".ppm")
|
||||
print("PIL missing: wrote a .ppm instead", file=sys.stderr)
|
||||
print(out)
|
||||
Reference in new issue
Block a user