Skip to content

Commit 086b770

Browse files
committed
feat: add openrc commands
1 parent 46cff2d commit 086b770

1 file changed

Lines changed: 50 additions & 10 deletions

File tree

backend/decky_loader/localplatform/localplatformlinux.py

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def _get_service_manager():
2222
try:
2323
link = os.path.realpath("/sbin/init")
2424
service = os.path.basename(link)
25-
match service:
25+
match service_manager:
2626
case "openrc-init":
2727
return "openrc"
2828
case _:
@@ -153,16 +153,36 @@ def setuid(user : UserType = UserType.HOST_USER):
153153
raise Exception("Unknown user type")
154154

155155
async def service_active(service_name : str) -> bool:
156-
res, _, _ = await run(["systemctl", "is-active", service_name], stdout=DEVNULL, stderr=DEVNULL)
156+
match service_manager:
157+
case "systemd":
158+
cmd = ["systemctl", "is-active", service_name]
159+
case "openrc":
160+
cmd = ["rc-service"]
161+
if _get_effective_user_id() != 0: cmd.append("--user")
162+
cmd.append(service_name)
163+
cmd.append("status")
164+
case _:
165+
return True # Stub unsupported services
166+
167+
res, _, _ = await run(cmd, stdout=DEVNULL, stderr=DEVNULL)
157168
return res.returncode == 0
158169

159170
async def service_restart(service_name : str, block : bool = True) -> bool:
160-
await run(["systemctl", "daemon-reload"])
161-
logger.info("Systemd reload done.")
162-
cmd = ["systemctl", "restart", service_name]
163-
164-
if not block:
165-
cmd.append("--no-block")
171+
match service_manager:
172+
case "systemd":
173+
await run(["systemctl", "daemon-reload"])
174+
logger.info("Systemd reload done.")
175+
cmd = ["systemctl", "restart", service_name]
176+
177+
if not block:
178+
cmd.append("--no-block")
179+
case "openrc":
180+
cmd = ["rc-service"]
181+
if _get_effective_user_id() != 0: cmd.append("--user")
182+
cmd.append(service_name)
183+
cmd.append("restart")
184+
case _:
185+
return True # Stub unsupported services
166186

167187
res, _, _ = await run(cmd, stdout=PIPE, stderr=STDOUT)
168188
return res.returncode == 0
@@ -172,7 +192,17 @@ async def service_stop(service_name : str) -> bool:
172192
# Service isn't running. pretend we stopped it
173193
return True
174194

175-
cmd = ["systemctl", "stop", service_name]
195+
match service_manager:
196+
case "systemd":
197+
cmd = ["systemctl", "stop", service_name]
198+
case "openrc":
199+
cmd = ["rc-service"]
200+
if _get_effective_user_id() != 0: cmd.append("--user")
201+
cmd.append(service_name)
202+
cmd.append("stop")
203+
case _:
204+
return True # Stub unsupported services
205+
176206
res, _, _ = await run(cmd, stdout=PIPE, stderr=STDOUT)
177207
return res.returncode == 0
178208

@@ -181,7 +211,17 @@ async def service_start(service_name : str) -> bool:
181211
# Service is running. pretend we started it
182212
return True
183213

184-
cmd = ["systemctl", "start", service_name]
214+
match service_manager:
215+
case "systemd":
216+
cmd = ["systemctl", "start", service_name]
217+
case "openrc":
218+
cmd = ["rc-service"]
219+
if _get_effective_user_id() != 0: cmd.append("--user")
220+
cmd.append(service_name)
221+
cmd.append("start")
222+
case _:
223+
return True # Stub unsupported services
224+
185225
res, _, _ = await run(cmd, stdout=PIPE, stderr=STDOUT)
186226
return res.returncode == 0
187227

0 commit comments

Comments
 (0)