#!/usr/bin/env python

import subprocess
import sys

DEFAULT_TEMPERATURE = 3500

try:
    with open("/tmp/temperature", "r") as temp_file:
        current_temperature = int(temp_file.read())
except FileNotFoundError:
    current_temperature = DEFAULT_TEMPERATURE

# If no argument is given print the current temperature
if len(sys.argv) == 1:
    print(current_temperature)
    sys.exit(0)
elif len(sys.argv) != 2:
    print(
        """
Usage:

  screen-temperature
      print current temperature

  screen-temperature <temperature>
      set screen temperature to <temperature>

  screen-temperature <+|-><temperature>
      increase or decrease screen temperature by <temperature>
"""
    )
    sys.exit(1)

temperature_change = sys.argv[1]

if temperature_change.startswith("+"):
    new_temperature = current_temperature + int(temperature_change[1:])
elif temperature_change.startswith("-"):
    new_temperature = current_temperature - int(temperature_change[1:])
else:
    new_temperature = int(temperature_change)

try:
    subprocess.run(["redshift", "-O", str(new_temperature), "-P"], check=True)
    with open("/tmp/temperature", "w") as temp_file:
        temp_file.write(str(new_temperature) + "\n")
    # Send notification
    subprocess.run(["notify-send", str(new_temperature) + "K"])
except subprocess.CalledProcessError:
    print("Error: could not set screen temperature.")
    sys.exit(1)
