Menu
cosmic-mobile
publicLatest change cb68227a325db6add2ab97a789a6c02933414d37 - Add VM capture and correct cloud root partition by AkurAI Build
#!/usr/bin/env python3
"""Local VM screenshot/input; Unix socket only."""
import json
import socket
import sys
from pathlib import Path
with socket.socket(socket.AF_UNIX) as sock:
sock.settimeout(15)
sock.connect(str(Path(__file__).resolve().parent / 'runtime/qmp.sock'))
stream = sock.makefile('rwb')
def call(name, args=None):
stream.write((json.dumps({'execute': name, 'arguments': args or {}})+'\n').encode())
stream.flush()
while True:
reply = json.loads(stream.readline())
if 'error' in reply:
raise RuntimeError(reply['error'])
if 'return' in reply:
return reply['return']
json.loads(stream.readline())
call('qmp_capabilities')
if sys.argv[1] == 'shot':
print(call('screendump', {'filename': str(Path(sys.argv[2]).resolve()), 'format': 'png'}))
elif sys.argv[1] == 'key':
print(call('human-monitor-command', {'command-line': 'sendkey '+sys.argv[2]}))
elif sys.argv[1] == 'status':
print(call('query-status'))
elif sys.argv[1] == 'stop':
print(call('quit'))
else:
raise SystemExit('shot PATH | key QCODE | status | stop')