52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
#!/usr/bin/env python
 | 
						|
 | 
						|
import sys
 | 
						|
import subprocess
 | 
						|
 | 
						|
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)
 |