]> git.wh0rd.org - home.git/blobdiff - .bin/redshift-check
pinentry: switch to x11 as gtk-2 is dead
[home.git] / .bin / redshift-check
index a74940625eb7b9a873313b817fd8c52638ace259..b90eadb0c4b23b2896e0ab856b1e7e3aec9ac839 100755 (executable)
@@ -1,8 +1,68 @@
-#!/bin/sh
-h=$(date +%H)
-if [ ${h#0} -lt 10 -o ${h#0} -ge 21 ]; then
-       (pgrep -f /usr/bin/redshift >/dev/null 2>&1 || DISPLAY=:0 exec /usr/bin/redshift -l 42:-71) &
-else
-       killall -q redshift
-fi
-:
+#!/bin/bash
+
+usage() {
+       cat <<-EOF
+       Usage: ${0##*/} [options]
+
+       Options:
+         -x, --reset    reset display to no redshift
+       EOF
+
+       if [[ $# -eq 0 ]] ; then
+               exit 0
+       else
+               printf '\nERROR: %s\n' "$*" >&2
+               exit 1
+       fi
+}
+
+rs() {
+       exec redshift -m randr "$@"
+}
+
+main() {
+       cd /
+       export DISPLAY=:0
+
+       local auth="${HOME}/.Xauthority"
+       if [[ -e ${auth} ]]; then
+               export XAUTHORITY=${auth}
+       fi
+
+       while [[ $# -gt 0 ]] ; do
+               case $1 in
+               -x|--reset) rs -x ;;
+               -h|--help) usage ;;
+               *) usage "Unknown option: $1" ;;
+               esac
+       done
+
+       h=$(date +%H)
+
+       declare -A temps
+       local min=2000
+       temps=(
+               [20]=$(( min + 2000 ))
+               [21]=$(( min + 1500 ))
+               [22]=$(( min + 1000 ))
+               [23]=$(( min + 500 ))
+               [00]=$(( min ))
+               [01]=$(( min ))
+               [02]=$(( min ))
+               [03]=$(( min ))
+               [04]=$(( min ))
+               [05]=$(( min ))
+               [06]=$(( min + 500 ))
+               [07]=$(( min + 1000 ))
+               [08]=$(( min + 1500 ))
+               [09]=$(( min + 2000 ))
+       )
+
+       t=${temps[${h}]}
+       if [[ -z ${t} ]]; then
+               rs -x
+       else
+               rs -O ${t}k
+       fi
+}
+main "$@"