blob: 68e5fab88965bc43af6c9aa7d5c8c652e20ab335 (
plain) (
blame)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
#!/usr/bin/env bash
set -euo pipefail
# Hyprsunset toggle + Waybar status helper
# Phase 1: manual toggle only (no scheduling)
# Icons:
# - Off: bright sun
# - On: sunset icon if available, otherwise a blue sun
#
# Customize via env vars:
# HYPERSUNSET_TEMP default 4500 (K)
# HYPERSUNSET_ICON_MODE sunset|blue (default: sunset)
STATE_FILE="$HOME/.cache/.hyprsunset_state"
TARGET_TEMP="${HYPERSUNSET_TEMP:-4500}"
ICON_MODE="${HYPERSUNSET_ICON_MODE:-sunset}"
ensure_state() {
[[ -f "$STATE_FILE" ]] || echo "off" > "$STATE_FILE"
}
# Render icons using pango markup to allow colorization
icon_off() {
# bright sun when not activated
printf "<span foreground='gold'></span>"
}
icon_on() {
case "$ICON_MODE" in
sunset)
printf "<span foreground='orange'></span>"
;;
blue)
printf "<span foreground='deepskyblue'></span>"
;;
*)
printf "<span foreground='orange'></span>"
;;
esac
}
cmd_toggle() {
ensure_state
state="$(cat "$STATE_FILE" || echo off)"
if [[ "$state" == "on" ]]; then
if command -v hyprsunset >/dev/null 2>&1; then
hyprsunset -r || true
fi
echo off > "$STATE_FILE"
else
if command -v hyprsunset >/dev/null 2>&1; then
hyprsunset -t "$TARGET_TEMP" || true
fi
echo on > "$STATE_FILE"
fi
}
cmd_status() {
ensure_state
state="$(cat "$STATE_FILE" || echo off)"
if [[ "$state" == "on" ]]; then
txt="$(icon_on)"
cls="on"
tip="Night light on @ ${TARGET_TEMP}K"
else
txt="$(icon_off)"
cls="off"
tip="Night light off"
fi
printf '{"text":"%s","class":"%s","tooltip":"%s"}\n' "$txt" "$cls" "$tip"
}
case "${1:-}" in
toggle) cmd_toggle ;;
status) cmd_status ;;
*) echo "usage: $0 [toggle|status]" >&2; exit 2 ;;
esac
|