summaryrefslogtreecommitdiff
path: root/internal/tmux/status.go
blob: 4e1f9e4419f9d3d4d433e76521a1175881cb2843 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package tmux

import (
    "os"
    "os/exec"
    "strings"
)

// Enabled reports whether tmux status updates are enabled via env (default: on).
func Enabled() bool {
    v := strings.TrimSpace(os.Getenv("HEXAI_TMUX_STATUS"))
    if v == "" { return true }
    v = strings.ToLower(v)
    return v == "1" || v == "true" || v == "yes" || v == "on"
}

// SetUserOption sets a global tmux user option like @hexai_status to value.
func SetUserOption(key, value string) error {
    if !Enabled() || !HasBinary() || !InSession() { return nil }
    k := strings.TrimPrefix(strings.TrimSpace(key), "@")
    if k == "" { return nil }
    // Use set-option -g so it appears for all windows
    return exec.Command("tmux", "set-option", "-g", "@"+k, value).Run()
}

// SetStatus is a convenience for setting @hexai_status.
func SetStatus(value string) error { return SetUserOption("hexai_status", value) }