У меня тоже была эта проблема. Redshift - это инструмент с открытым исходным кодом с функциями f.lux и возможностью ручной настройки цветовой температуры.
f.lux изменит цветовую температуру только в том случае, если он считает, что ночью вы находитесь, поэтому я также написал скрипт на python, чтобы обманным путем заставить f.lux работать днем. Он вычисляет противоположную точку на земном шаре и дает потоки этих координат.
Чтобы использовать его, вам нужно сохранить этот код в файле, например, flux.py
в вашем домашнем каталоге. Затем откройте терминал и запустите файл с помощью python ~/flux.py
.
#!/usr/bin/env python # encoding: utf-8 """ Run flux (http://stereopsis.com/flux/) with the addition of default values and support for forcing flux to run in the daytime. """ import argparse import subprocess import sys def get_args(): """ Get arguments from the command line. """ parser = argparse.ArgumentParser( description="Run flux (http://stereopsis.com/flux/)\n" + "with the addition of default values and\n" + "support for forcing flux to run in the daytime.", formatter_class=argparse.RawTextHelpFormatter) parser.add_argument("-lo", "--longitude", type=float, default=0.0, help="Longitude\n" + "Default : 0.0") parser.add_argument("-la", "--latitude", type=float, default=0.0, help="Latitude\n" + "Default : 0.0") parser.add_argument("-t", "--temp", type=int, default=3400, help="Color temperature\n" + "Default : 3400") parser.add_argument("-b", "--background", action="store_true", help="Let the xflux process go to the background.\n" + "Default : False") parser.add_argument("-f", "--force", action="store_true", help="Force flux to change color temperature.\n" "Default : False\n" "Note : Must be disabled at night.") args = parser.parse_args() return args def opposite_long(degree): """ Find the opposite of a longitude. """ if degree > 0: opposite = abs(degree) - 180 else: opposite = degree + 180 return opposite def opposite_lat(degree): """ Find the opposite of a latitude. """ if degree > 0: opposite = 0 - abs(degree) else: opposite = 0 + degree return opposite def main(args): """ Run the xflux command with selected args, optionally calculate the antipode of current coords to trick xflux into running during the day. """ if args.force == True: pos_long, pos_lat = (opposite_long(args.longitude), opposite_lat(args.latitude)) else: pos_long, pos_lat = args.longitude, args.latitude if args.background == True: background = '' else: background = ' -nofork' xflux_cmd = 'xflux -l -g -k ' subprocess.call(xflux_cmd.format( pos_lat=pos_lat, pos_long=pos_long, temp=args.temp, background=background), shell=True) if __name__ == '__main__': try: main(get_args()) except KeyboardInterrupt: sys.exit()