]> glassweightruler.freedombox.rocks Git - waydroid.git/blobdiff - tools/services/user_manager.py
Add iptables as Debian dependency
[waydroid.git] / tools / services / user_manager.py
index 482108d7342e0d4422e9356e3d9097ee2f24f321..b8b985421cfb49679815997c04d051a942b54772 100644 (file)
@@ -4,29 +4,36 @@ import logging
 import os
 import threading
 import tools.config
+import tools.helpers.net
 from tools.interfaces import IUserMonitor
 from tools.interfaces import IPlatform
 
 stopping = False
 
 def start(args, session, unlocked_cb=None):
+    waydroid_data = session["waydroid_data"]
+    apps_dir = session["xdg_data_home"] + "/applications/"
 
     def makeDesktopFile(appInfo):
+        if appInfo is None:
+            return -1
+
         showApp = False
         for cat in appInfo["categories"]:
             if cat.strip() == "android.intent.category.LAUNCHER":
                 showApp = True
         if not showApp:
             return -1
-        
+
         packageName = appInfo["packageName"]
 
-        desktop_file_path = args.apps_dir + "/waydroid." + packageName + ".desktop"
+        desktop_file_path = apps_dir + "/waydroid." + packageName + ".desktop"
         if not os.path.exists(desktop_file_path):
             lines = ["[Desktop Entry]", "Type=Application"]
             lines.append("Name=" + appInfo["name"])
             lines.append("Exec=waydroid app launch " + packageName)
-            lines.append("Icon=" + args.waydroid_data + "/icons/" + packageName + ".png")
+            lines.append("Icon=" + waydroid_data + "/icons/" + packageName + ".png")
+            lines.append("Categories=X-WayDroid-App;")
             lines.append("X-Purism-FormFactor=Workstation;Mobile;")
             lines.append("Actions=app_settings;")
             lines.append("[Desktop Action app_settings]")
@@ -36,16 +43,17 @@ def start(args, session, unlocked_cb=None):
             for line in lines:
                 desktop_file.write(line + "\n")
             desktop_file.close()
-            os.chmod(desktop_file_path, 0o755)
+            os.chmod(desktop_file_path, 0o644)
             return 0
 
     def makeWaydroidDesktopFile(hide):
-        desktop_file_path = args.apps_dir + "/Waydroid.desktop"
+        desktop_file_path = apps_dir + "/Waydroid.desktop"
         if os.path.isfile(desktop_file_path):
             os.remove(desktop_file_path)
         lines = ["[Desktop Entry]", "Type=Application"]
         lines.append("Name=Waydroid")
         lines.append("Exec=waydroid show-full-ui")
+        lines.append("Categories=X-WayDroid-App;")
         lines.append("X-Purism-FormFactor=Workstation;Mobile;")
         if hide:
             lines.append("NoDisplay=true")
@@ -54,19 +62,18 @@ def start(args, session, unlocked_cb=None):
         for line in lines:
             desktop_file.write(line + "\n")
         desktop_file.close()
-        os.chmod(desktop_file_path, 0o755)
+        os.chmod(desktop_file_path, 0o644)
 
     def userUnlocked(uid):
         logging.info("Android with user {} is ready".format(uid))
-        args.waydroid_data = session["waydroid_data"]
-        args.apps_dir = session["xdg_data_home"] + \
-            "/applications/"
+
+        tools.helpers.net.adb_connect(args)
 
         platformService = IPlatform.get_service(args)
         if platformService:
-            if not os.path.exists(args.apps_dir):
-                os.mkdir(args.apps_dir)
-                os.chmod(args.apps_dir, 0o700)
+            if not os.path.exists(apps_dir):
+                os.mkdir(apps_dir)
+                os.chmod(apps_dir, 0o700)
             appsList = platformService.getAppsInfo()
             for app in appsList:
                 makeDesktopFile(app)
@@ -82,7 +89,7 @@ def start(args, session, unlocked_cb=None):
         platformService = IPlatform.get_service(args)
         if platformService:
             appInfo = platformService.getAppInfo(packageName)
-            desktop_file_path = args.apps_dir + "/waydroid." + packageName + ".desktop"
+            desktop_file_path = apps_dir + "/waydroid." + packageName + ".desktop"
             if mode == 0:
                 # Package added
                 makeDesktopFile(appInfo)