summaryrefslogtreecommitdiff
path: root/backend/decky_loader/localplatform
diff options
context:
space:
mode:
authorGio <me@gio.blue>2026-06-07 23:25:20 +0800
committerGitHub <noreply@github.com>2026-06-07 11:25:20 -0400
commit00e866c39e0409561796816244fad8e92416e619 (patch)
tree2fc3f6429c68078a976125ba2e8d6b28c7851839 /backend/decky_loader/localplatform
parent5490961056644712411e467d7f114360be2c2955 (diff)
downloaddecky-loader-00e866c39e0409561796816244fad8e92416e619.tar.gz
decky-loader-00e866c39e0409561796816244fad8e92416e619.zip
feat: add backend Mac support (#913)HEADmain
Adds a Mac localplatform based on the Linux one Signed-off-by: Gianni Spadoni <me@gio.blue>
Diffstat (limited to 'backend/decky_loader/localplatform')
-rw-r--r--backend/decky_loader/localplatform/localplatform.py6
-rw-r--r--backend/decky_loader/localplatform/localplatformmac.py59
2 files changed, 64 insertions, 1 deletions
diff --git a/backend/decky_loader/localplatform/localplatform.py b/backend/decky_loader/localplatform/localplatform.py
index c7085cd1..6cb08982 100644
--- a/backend/decky_loader/localplatform/localplatform.py
+++ b/backend/decky_loader/localplatform/localplatform.py
@@ -1,11 +1,15 @@
import platform, os
ON_WINDOWS = platform.system() == "Windows"
-ON_LINUX = not ON_WINDOWS
+ON_MAC = platform.system() == "Darwin"
+ON_LINUX = not ON_WINDOWS and not ON_MAC
if ON_WINDOWS:
from .localplatformwin import *
from . import localplatformwin as localplatform
+elif ON_MAC:
+ from .localplatformmac import *
+ from . import localplatformmac as localplatform
else:
from .localplatformlinux import *
from . import localplatformlinux as localplatform
diff --git a/backend/decky_loader/localplatform/localplatformmac.py b/backend/decky_loader/localplatform/localplatformmac.py
new file mode 100644
index 00000000..df8a5d16
--- /dev/null
+++ b/backend/decky_loader/localplatform/localplatformmac.py
@@ -0,0 +1,59 @@
+from ..enums import UserType
+import os, sys
+from . import localplatformlinux
+
+# this should be public
+def _get_effective_user_id() -> int:
+ return os.geteuid()
+
+def chown(path : str, user : UserType = UserType.HOST_USER, recursive : bool = True) -> bool:
+ return localplatformlinux.chown(path, user, recursive)
+
+def chmod(path : str, permissions : int, recursive : bool = True) -> bool:
+ return localplatformlinux.chmod(path, permissions, recursive)
+
+def file_owner(path : str) -> UserType|None:
+ return localplatformlinux.file_owner(path)
+
+def get_home_path(user : UserType = UserType.HOST_USER) -> str:
+ return localplatformlinux.get_home_path(user)
+
+def setgid(user : UserType = UserType.HOST_USER):
+ return localplatformlinux.setgid(user)
+
+def setuid(user : UserType = UserType.HOST_USER):
+ return localplatformlinux.setuid(user)
+
+async def service_active(service_name : str) -> bool:
+ return True # Stubbed
+
+async def service_stop(service_name : str) -> bool:
+ return True # Stubbed
+
+async def service_start(service_name : str) -> bool:
+ return True # Stubbed
+
+async def service_restart(service_name : str, block : bool = True) -> bool:
+ return True # Stubbed
+
+def get_effective_username() -> str:
+ return localplatformlinux.get_effective_username()
+
+def get_username() -> str:
+ return localplatformlinux.get_username()
+
+def get_privileged_path() -> str:
+ '''On Mac, privileged_path is equal to unprivileged_path'''
+ return get_unprivileged_path()
+
+def get_unprivileged_path() -> str:
+ return localplatformlinux.get_unprivileged_path()
+
+def get_unprivileged_user() -> str:
+ return localplatformlinux.get_unprivileged_user()
+
+async def restart_webhelper() -> bool:
+ return await localplatformlinux.restart_webhelper()
+
+async def close_cef_socket():
+ return # Stubbed \ No newline at end of file