// The nm-applet module's Go tools bundle (novox/hq ADR 0188, ADR 0193, ADR 0208): NetworkManager's // tray applet in the operator's session, served by the node's runtime as the operator account. The // module holds no seat, so every tool is its own. NetworkManager itself is the networkmanager module's. package main import ( "fmt" "os" stdio "git.novox.be/novox/mesh-sdk/go" ) func main() { if err := stdio.Serve("", tools()); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } } var machine = NewMachine() func tools() []stdio.Tool { return []stdio.Tool{ { Name: "nm_applet_status", Description: "NetworkManager's applet: whether it runs (pid, since, and the unit or session scope it " + "runs in), the installed version, what starts it at login, its notification switches, and " + "NetworkManager's overall state (state, connectivity, Wi-Fi and networking on or off; never a " + "connection, a network, a secret or an address). (r)", Run: func(map[string]any) (any, error) { return machine.Status() }, }, { Name: "nm_applet_restart", Description: "End the applet (asked first, then forced after 5 s) and start it again in the " + "operator's desktop session, under the account's service manager. NetworkManager and its " + "connections are not touched. Needs someone logged in to the desktop. (a)", Run: func(map[string]any) (any, error) { return machine.Restart() }, }, { Name: "nm_applet_check", Description: "Check what the module promises and relies on: the package is installed; the applet has " + "exactly one start (the package's XDG autostart entry, which the session's dex runs; no " + "window-manager exec); it runs once in a desktop session; and NetworkManager runs (the " + "networkmanager module's). Answers ok and each finding with what to do. (r)", Run: func(map[string]any) (any, error) { return machine.Check() }, }, } }