hcra/server/backends/saas.py
Samuel Sloniker 92337cb000 Add SaaS backend
This backend works just like the X11 backend, except it starts HamClock
on its own rather than relying on an existing instance. As the name
implies, it is intended for SaaS environments where multiple HamClocks
may be running on a single machine, and running unused instances would
be a significant waste of resources.
2021-07-10 18:51:15 -07:00

39 lines
996 B
Python

import os
import subprocess
import threading
import time
def _long_touch(x, y):
os.environ['DISPLAY'] = config['display']
subprocess.run(['xdotool', 'mousemove', str(x), str(y), 'mousedown', '1'])
time.sleep(2)
subprocess.run(['xdotool', 'mouseup', '1'])
def get_img():
os.environ['DISPLAY'] = config['display']
xwd = subprocess.Popen(['xwd', '-root', '-silent'], stdout=subprocess.PIPE)
convert = subprocess.Popen(['convert', 'xwd:-', 'bmp:img.bmp'], stdin=xwd.stdout)
convert.wait()
return 'img.bmp'
def touch(x, y, is_long):
os.environ['DISPLAY'] = config['display']
if is_long:
threading.Thread(target=_long_touch, args=(x, y,)).start()
else:
subprocess.run(['xdotool', 'mousemove', str(x), str(y), 'click', '1'])
def connect():
global _hamclock
os.environ['DISPLAY'] = config['display']
_hamclock = subprocess.Popen(config['hamclock_bin'])
def disconnect():
_hamclock.terminate()
_hamclock.wait()