Files
mesh-catalog/modules/nm-applet/cmd/nm-applet-tools/main.go
T
jochen d0d5546088 Give the remaining tray applets their modules, each with one start
openrazer (the official driver, daemon and library), polychromatic (the
AUR tray, kept as found; its i3 line moves out of the i3 module into its
own node-display-session contribution), forticlient (the AUR VPN client:
its service declared, its configuration never read) and nm-applet (the
desktop half of NetworkManager, apart from the server-side module).

The openrazer daemon fails on both workstations because the account is
not in the openrazer group; openrazer_check names it and the README
carries the one-off step, since the account's user resource is zsh's.

desktop.go learns to tell a program from another sharing its 15-character
command name, so polychromatic's tools never count or end themselves, and
a copies test holds the six carriers to one text.
2026-10-05 15:10:30 +02:00

49 lines
1.9 KiB
Go

// 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() },
},
}
}