initial commit
This commit is contained in:
61
launcher/actions.py
Normal file
61
launcher/actions.py
Normal file
@@ -0,0 +1,61 @@
|
||||
import subprocess
|
||||
import shutil
|
||||
|
||||
class ActionDispatcher:
|
||||
def dispatch(self, service_type, target):
|
||||
print(f"Executing action -> Type: {service_type}, Target: {target}")
|
||||
|
||||
if service_type == "browser":
|
||||
self._launch_app_browser(target)
|
||||
elif service_type == "rdp":
|
||||
## Refactor required to pass 'config' through to this level
|
||||
self._launch_xfreerdp(config)
|
||||
elif service_type == "command":
|
||||
self._run_command(target.split())
|
||||
elif service_type == "power":
|
||||
self._handle_power_action(target)
|
||||
else:
|
||||
print(f"Service type: {service_type}, not known")
|
||||
|
||||
def _launch_app_browser(self, url):
|
||||
browser_candidates = [
|
||||
"chromium",
|
||||
"chromium-browser",
|
||||
"brave-browser",
|
||||
"google-chrome",
|
||||
"microsoft-edge",
|
||||
"vivaldi"
|
||||
]
|
||||
browser_bin = None
|
||||
for candidate in browser_candidates:
|
||||
if shutil.which(candidate):
|
||||
browser_bin = candidate
|
||||
break
|
||||
|
||||
if not browser_bin:
|
||||
print("Error: No supported chromium based browser found in PATH,")
|
||||
return
|
||||
|
||||
cmd = [browser_bin, f"--app={url}", "--start-maximized", "--incognito"]
|
||||
print(f"Launching browser command: {' '.join(cmd)}")
|
||||
self._run_command(cmd)
|
||||
|
||||
def _launch_xfreerdp(self, config):
|
||||
# Read config and build xfreerdp command before passing to _run_command
|
||||
return
|
||||
|
||||
def _handle_power_action(self, action):
|
||||
if action == "shutdown":
|
||||
print("Initiating system shutdown")
|
||||
self._run_command(["systemctl", "poweroff"])
|
||||
elif action == "reboot":
|
||||
print("Initiating system reboot...")
|
||||
self._run_command(["systemctl", "reboot"])
|
||||
else:
|
||||
print(f"Unknown power action: {action}")
|
||||
|
||||
def _run_command(self, cmd):
|
||||
try:
|
||||
subprocess.Popen(cmd)
|
||||
except Exception as e:
|
||||
print(f"Failed to execute cmd: {cmd}: {e}")
|
||||
Reference in New Issue
Block a user