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.
64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
import configparser
|
|
import os
|
|
import sys
|
|
import dbus
|
|
from tools.helper import run
|
|
from tools.logger import Logger
|
|
|
|
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():
|
|
cfg = configparser.ConfigParser()
|
|
cfg_file = os.environ.get("WAYDROID_CONFIG", "/var/lib/waydroid/waydroid.cfg")
|
|
if not os.path.isfile(cfg_file):
|
|
Logger.error("Cannot locate waydroid config file, reinit wayland and try again!")
|
|
sys.exit(1)
|
|
cfg.read(cfg_file)
|
|
if "waydroid" not in cfg:
|
|
Logger.error("Required entry in config was not found, Cannot continue!")
|
|
if "mount_overlays" not in cfg["waydroid"]:
|
|
return False
|
|
if cfg["waydroid"]["mount_overlays"]=="True":
|
|
return True
|
|
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()
|
|
|
|
|
|
|