#!/bin/bash
-cd
-export DISPLAY=:0
-
-case $1 in
---reset) exec redshift -x ;;
-esac
-
-h=$(date +%H)
-
-declare -A temps
-temps=(
- [20]=5000
- [21]=4500
- [22]=4000
- [23]=3500
- [00]=3000
- [01]=3000
- [02]=3000
- [03]=3000
- [04]=3000
- [05]=3000
- [06]=3500
- [07]=4000
- [08]=4500
- [09]=5000
-)
-
-t=${temps[${h}]}
-if [[ -z ${t} ]]; then
- exec redshift -x
-else
- exec redshift -O ${t}k
-fi
+
+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 "$@"