From f9a2f1f9b6bb223dd1f52cf78392c2dd640730f3 Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Mon, 31 May 2021 16:40:10 +0200 Subject: waybar: various updates * add extension to config file * covid: use tail vs head for historical data * remove network.vpn * gamma: change name from gammastep --- .config/waybar/modules/covid.sh | 2 +- .config/waybar/modules/gamma.go | 76 ++++++++++++++++++++++++++++++ .config/waybar/modules/gammastep.go | 94 ------------------------------------- .config/waybar/modules/weather.sh | 3 +- 4 files changed, 79 insertions(+), 96 deletions(-) create mode 100644 .config/waybar/modules/gamma.go delete mode 100644 .config/waybar/modules/gammastep.go (limited to '.config/waybar/modules') diff --git a/.config/waybar/modules/covid.sh b/.config/waybar/modules/covid.sh index 558c2c5..9f1860c 100755 --- a/.config/waybar/modules/covid.sh +++ b/.config/waybar/modules/covid.sh @@ -71,7 +71,7 @@ tooltip=" last update: ${last_update} history (${trend_arrow}): -$(awk -F, '{print $1 " " $2}' ${HISTFILE} | head -n10) +$(awk -F, '{print $1 " " $2}' ${HISTFILE} | tail -n10) " jq -nr \ diff --git a/.config/waybar/modules/gamma.go b/.config/waybar/modules/gamma.go new file mode 100644 index 0000000..2a91cdb --- /dev/null +++ b/.config/waybar/modules/gamma.go @@ -0,0 +1,76 @@ +// usage: +// go build -o waybar-gammastep gammastep.go +package main + +import ( + "encoding/json" + "log" + "os" + "os/exec" + "os/signal" + "strings" + + . "syscall" +) + +func main() { + var ( + update = make(chan os.Signal, 1) + cancel = make(chan os.Signal, 1) + ) + signal.Notify(update, SIGUSR1, SIGUSR2, SIGHUP) + signal.Notify(cancel, SIGTERM, SIGINT) + + // could use golang.org/x/sys/unix.Prctl here + // but I want to avoid the dependency + if _, _, e := Syscall6(SYS_PRCTL, + uintptr(PR_SET_PDEATHSIG), + uintptr(SIGTERM), + 0, 0, 0, 0); e != 0 { + log.Printf("error: %v", e) + os.Exit(1) + } + + lookup() + for { + select { + case sig := <-update: + switch sig { + case SIGUSR1: + printJson("day") + case SIGUSR2: + printJson("night") + case SIGHUP: + lookup() + } + case <-cancel: + log.Printf("%v exiting\n", os.Args[0]) + os.Exit(0) + } + } +} + +func printJson(phase string) { + _ = json.NewEncoder(os.Stdout).Encode(map[string]interface{}{ + "class": phase, + "alt": phase, + "tooltip": "gamma: " + phase, + "text": phase, + }) +} + +func lookup() { + cmdEnv, ok := os.LookupEnv("GAMMA_COMMAND") + if !ok { + printJson("unknown") + return + } + log.Println(cmdEnv) + b, err := exec.Command("bash", "-c", cmdEnv).Output() + if err != nil { + log.Printf("error: %v", err) + return + } + phase := strings.TrimSpace(string(b)) + printJson(phase) +} diff --git a/.config/waybar/modules/gammastep.go b/.config/waybar/modules/gammastep.go deleted file mode 100644 index c855e1b..0000000 --- a/.config/waybar/modules/gammastep.go +++ /dev/null @@ -1,94 +0,0 @@ -// usage: -// go build -o waybar-gammastep gammastep.go -package main - -import ( - "encoding/json" - "log" - "os" - "os/exec" - "os/signal" - "strings" - - . "syscall" -) - -func main() { - var ( - update = make(chan os.Signal, 1) - cancel = make(chan os.Signal, 1) - ) - signal.Notify(update, SIGUSR1, SIGUSR2, SIGHUP) - signal.Notify(cancel, SIGTERM, SIGINT) - - // could use golang.org/x/sys/unix.Prctl here - // but I want to avoid the dependency - if _, _, e := Syscall6(SYS_PRCTL, - uintptr(PR_SET_PDEATHSIG), - uintptr(SIGTERM), - 0, 0, 0, 0); e != 0 { - log.Printf("error: %v", e) - os.Exit(1) - } - // if err := Prctl(PR_SET_PDEATHSIG, - // SIGTERM, - // 0, 0, 0); err != nil { - // fmt.Fprintln(os.Stderr, err) - // os.Exit(1) - // } - - lookup() - for { - select { - case sig := <-update: - switch sig { - case SIGUSR1: - // redshift off - printJson("day", "day") - case SIGUSR2: - // redshift on - printJson("night", "night") - case SIGHUP: - lookup() - } - case <-cancel: - log.Printf("%v exiting\n", os.Args[0]) - os.Exit(0) - } - } -} - -func printJson(state, tooltip string) { - _ = json.NewEncoder(os.Stdout).Encode(map[string]interface{}{ - "class": state, - "alt": state, - "tooltip": "gammastep: " + tooltip, - "text": state, - }) -} - -func lookup() { - b, err := exec.Command("gammastep", "-p").CombinedOutput() - if err != nil { - log.Printf("error: %v", err) - return - } - var period string - var fds = strings.Fields(string(b)) - for idx, f := range fds { - if f == "Period:" { - period = fds[idx+1] - break - } - } - switch period { - case "Night": - printJson("night", "night") - case "Transition": - printJson("night", "transition") - case "Daytime": - printJson("day", "day") - default: - printJson("unknown", "unknown") - } -} diff --git a/.config/waybar/modules/weather.sh b/.config/waybar/modules/weather.sh index 0b83de1..929732b 100755 --- a/.config/waybar/modules/weather.sh +++ b/.config/waybar/modules/weather.sh @@ -5,7 +5,8 @@ set -e loc=$1 if [ -z "${loc}" ]; then # use /etc/localtime - loc=$(basename "$(readlink -f /etc/localtime)") + # loc=$(basename "$(readlink -f /etc/localtime)") + loc="${HOME_LAT},${HOME_LON}" fi if [ -n "$REPORT" ]; then -- cgit 1.4.1