You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
import re
|
|
import dbus
|
|
from tools.helper import run
|
|
|
|
def DBusContainerService(object_path="/ContainerManager", intf="id.waydro.ContainerManager"):
|
|
return dbus.Interface(dbus.SystemBus().get_object("id.waydro.Container", object_path), intf)
|
|
|
|
def DBusSessionService(object_path="/SessionManager", intf="id.waydro.SessionManager"):
|
|
return dbus.Interface(dbus.SessionBus().get_object("id.waydro.Session", object_path), intf)
|
|
|
|
def use_dbus():
|
|
try:
|
|
DBusContainerService()
|
|
except:
|
|
return False
|
|
return True
|
|
|
|
def use_overlayfs():
|
|
# with open("/var/lib/waydroid/waydroid.cfg") as f:
|
|
# cont=f.read()
|
|
# if re.search("mount_overlays[ \t]*=[ \t]*True", cont):
|
|
# return True
|
|
# return False
|
|
return False
|
|
|
|
def get_session():
|
|
return DBusContainerService().GetSession()
|
|
|
|
def stop():
|
|
if use_dbus():
|
|
session = DBusContainerService().GetSession()
|
|
if session:
|
|
DBusContainerService().Stop(False)
|
|
else:
|
|
run(["waydroid", "container", "stop"])
|
|
|
|
def start(*session):
|
|
if use_dbus() and session:
|
|
DBusContainerService().Start(session[0])
|
|
else:
|
|
run(["systemctl", "restart", "waydroid-container.service"])
|
|
|
|
def is_running():
|
|
if use_dbus():
|
|
if DBusContainerService().GetSession():
|
|
return True
|
|
return False
|
|
else:
|
|
return "Session:\tRUNNING" in run(["waydroid", "status"]).stdout.decode()
|
|
|
|
|
|
|