~/.fehbg stops pointing into the predecessor's tree; the session's xinitrc slot runs it once; Go tools set (for the session) and current.
54 lines
1.7 KiB
Go
54 lines
1.7 KiB
Go
// feh's Go tools bundle (novox/hq ADR 0188, ADR 0193, ADR 0208): the wallpaper's tools, served by the
|
|
// node's runtime as the operator account.
|
|
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)
|
|
}
|
|
}
|
|
|
|
func tools() []stdio.Tool {
|
|
return []stdio.Tool{
|
|
{
|
|
Name: "feh_set",
|
|
Description: "Set the wallpaper in the operator's session: one image for every monitor, or one per " +
|
|
"monitor in the X screen order, filled, centred, scaled to fit, stretched or tiled. Lasts until the " +
|
|
"next session start, when the declared wallpaper returns; the declared one is untouched.",
|
|
Input: map[string]any{
|
|
"type": "object",
|
|
"properties": map[string]any{
|
|
"images": map[string]any{"type": "array", "items": map[string]any{"type": "string"}, "description": "image files on this machine, absolute or under the account's home; one per monitor, or one for all"},
|
|
"mode": map[string]any{"type": "string", "enum": modes, "description": "default fill"},
|
|
},
|
|
"required": []string{"images"},
|
|
},
|
|
Run: func(args map[string]any) (any, error) {
|
|
images, err := texts(args, "images")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
mode, err := text(args, "mode", false)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return Set(images, mode)
|
|
},
|
|
},
|
|
{
|
|
Name: "feh_current",
|
|
Description: "The wallpaper: the declared one the session start sets (images and mode, read from " +
|
|
"~/.fehbg), and the one feh_set put up in this session, if any.",
|
|
Run: func(map[string]any) (any, error) { return Current() },
|
|
},
|
|
}
|
|
}
|