redshift 是一款根据太阳位置(根据你所在的经纬度以及时间来推测)来调整色温(色温是指绝对黑体从绝对零度(-273.15℃)开始加温后所呈现的颜色。黑体在受热后,逐渐由黑变红,转黄,发白,最后发出蓝色光)的应用。
由于有证据表明,显示器发出的蓝光会抑制褪黑素的释放,从而影响夜晚的睡眠质量,因此 redshift 会在判断太阳下山后调低显示器的色温,从而减少光线中蓝光所占的计量。
redshift 在大多数 linux 发行版的仓库中都有,在 archlinux 下可以通过 pacman 来安装
sudo pacman -S redshift --noconfirm
最简单的使用方法就是直接运行 redshift,它会通过 geoclue2 服务自动获取你的经纬度从而判断当前时间是夜晚还是白天,从而调整色温。
但是你也可以通过 -l LAT:LON 选项来指定当前位置的经纬度,这样使用 redshift 就无需再联网了。
比如东莞的经度为 113.75,维度为 23.04,那么可以
redshift -l 23.04:113.75
如果不清楚你所在地的经纬度,那么可以让 redshift 在第一次运行时联网查询,后续再使用这个查询出来的值。
要查看 redshift 自动查询出来的经纬度需要使用 -v 选项让 redshift 显示出执行的详细情况
timeout 1 redshift -v |head
运行结果为:
正在使用服务 geoclue2。
位置:23.12 北纬, 113.25 东经
色温:日间 5500K,夜间 3500K
太阳高度:日间高于 3.0 度,夜间低于 -6.0 度
亮度:1.00:1.00
伽马 (日间):1.000, 1.000, 1.000
伽马 (夜间):1.000, 1.000, 1.000
正在使用模式 randr。
状态:已启用
时段: 日间
默认情况下,redshift 白天的色温设置为 5500K,晚上的色温设置为 3700K,但是你也可以根据自己的偏好进行设置,方法是使用 -t DAY:NIGHT 选项
比如,我想设置白天色温为 5400K,晚上色温为 3600K,那么可以执行
redshift -t 5400:3600
redshift 运行后不会自动退出,而是不断的尝试根据时间来进行色温的调整,而若你不希望让 redshift 一直调整色温,那么可以使用 -o 或者 -O TEMP 来让 redshift 进入 One shot mode
其中 -o 是让 redshift 自动为你调整色温。
redshift -vo
正在使用服务”geoclue2“。
位置:23.12 北纬, 113.25 东经
色温:日间 5500K,夜间 3500K
太阳高度:日间高于 3.0 度,夜间低于 -6.0 度
亮度:1.00:1.00
伽马 (日间):1.000, 1.000, 1.000
伽马 (夜间):1.000, 1.000, 1.000
正在使用模式 ”randr“。
太阳高度:55.714565度
时段: 日间
色温:5500K
亮度:1.00
而 -O TEMP 允许你手工指定色温
redshift -vO 5000
亮度:1.00:1.00
伽马 (日间):1.000, 1.000, 1.000
伽马 (夜间):1.000, 1.000, 1.000
正在使用模式 ”randr“。
色温:5000K
redshift 默认并不会创建配置文件,需要你手工在 ~/.config/ 中创建一个名为 redshift.conf 的文件,文件格式为标准的 INI 格式。
redshift 支持以下配置项
以下配置在 [redshift] section 下
以下配置项在 [manual] section 下
以下是我自己的配置
[redshift]
; 设置色温
temp-day=5500
temp-night=3500
; 渐进地改变色温
transition=1
adjustment-method=randr
; 手工指定经纬度
location-provider=manual
[manual]
lat=23.12
lon=113.25
