diff --git a/deck_install.sh b/deck_install.sh new file mode 100755 index 0000000..445fa8c --- /dev/null +++ b/deck_install.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +set -e + +echo "installing tailscale" | logger + +systemctl stop tailscaled.service ||: +systemd-sysext unmerge ||: + +mkdir -p /etc/extensions/tailscale +mkdir -p /home/deck/.local/share/tailscale/steamos +wget -O /home/deck/.local/share/tailscale/steamos/tailscale_sysext_1.24.2.tar.gz https://xena.greedo.xeserv.us/pkg/ts-sysext/tailscale_sysext_1.24.2.tar.gz + +tar xzf /home/deck/.local/share/tailscale/steamos/tailscale_sysext_1.24.2.tar.gz -C /etc/extensions/tailscale +systemd-sysext merge +systemctl start tailscaled.service diff --git a/main.py b/main.py index 857ef66..4347663 100644 --- a/main.py +++ b/main.py @@ -16,7 +16,7 @@ class Plugin: result = subprocess.run(["/bin/sh", "-c", "systemctl status tailscaled.service | grep active"], stdout=subprocess.PIPE) return result.stdout.decode("utf-8").split(": ")[1].strip() - async def _install_state(self): + async def install_state(self): sysext = subprocess.run(["/usr/bin/systemd-sysext", "list", "--json=short"], stdout=subprocess.PIPE) sysexts = json.loads(sysext.stdout.decode("utf-8")) @@ -31,10 +31,8 @@ class Plugin: return "impossible state" - async def install_state(self, *args): - result = await self._install_state() - await self.log("status: " + result) - return result + async def install(self, *args): + subprocess.run(["/home/deck/homebrew/plugins/tailscale/deck_install.sh"]) # Asyncio-compatible long-running code, executed in a task when the plugin is loaded async def _main(self): diff --git a/main_view.html b/main_view.html index 5156a67..9165d49 100644 --- a/main_view.html +++ b/main_view.html @@ -17,21 +17,18 @@ return call_plugin_method("install_state", {}); } + async function doInstall() { + return call_plugin_method("install", {}); + } + async function getStatus() { - await log("getting status"); - let status = document.getElementById("status"); let installStatus = await getInstallState(); + let status = document.getElementById("status"); status.innerText = `${installStatus}`; } - - async function onReady() { - log("test hi here what's up"); - } - log("log message"); -

Hello World

@@ -40,6 +37,10 @@ class="DialogButton _DialogLayout Secondary gamepaddialog_Button_cXzBZ Focusable" onclick="getStatus()" tabindex="0">🔄
+ +