Redshift
安装
安装 redshift 包。或者,安装 redshift-minimalAUR 包,这是依赖项最少的一个版本。
前端
redshift-gtk 命令包含在 redshift 包中,并提供了一个系统托盘图标来控制 Redshift。请参阅可选依赖项。
替代方案是 redshift-qtAUR 或 redshiftconfAUR。
用法
Redshift 至少需要您的位置信息才能启动(除非使用了 -O 选项),即您所在位置的纬度和经度。Redshift 采用多种例程来获取您的位置。如果它们都不起作用(例如,未安装任何使用的辅助程序),您需要手动输入您的位置。
快速入门
要使其正常运行并进行基本设置,请执行
$ redshift -l LATITUDE:LONGITUDE
其中 LATITUDE 是纬度,LONGITUDE 是您所在位置的经度。
要立即调整屏幕的色温,请使用
$ redshift -P -O TEMPERATURE
其中 TEMPERATURE 是所需的 色温(介于 1000 到 25000 之间)。
自启动
有几种选项可以使 Redshift 自动启动
- 当
redshift-gtk或plasma5-applets-redshift-control已启动时,右键单击系统托盘图标并选择“自动启动”。 - 将 Redshift 的 桌面条目 放在
~/.config/autostart/中,或将redshift添加到您的窗口管理器或桌面环境的 自动启动 方法中。 - 使用提供的 用户单元:
redshift.service和redshift-gtk.service。根据是否需要系统托盘图标,只激活其中一个。
- Redshift 服务文件包含
Restart=always,因此它们会无限重启。请参阅 systemd.service(5)。 - 使用 systemd 用户服务时,Xorg 必须在服务执行之前启动,而如果没有 显示管理器,则情况并非如此。否则,您将收到
RANDR Query Version' returned error -1和Initialization of randr failed。这已经在上面的 systemd/User 方法中考虑了,该方法包含After=display-manager.service。
切换
Redshift 会以固定的间隔持续更新色温。可以选择一次性模式,如果您只想进行一次调整。可以通过发送 USR1 信号来临时启用或禁用 Redshift 所做的颜色调整。
$ pkill -USR1 redshift
配置
Redshift 读取配置文件 ~/.config/redshift/redshift.conf [2](如果存在)。但是,Redshift 不会创建该配置文件,因此您可能需要手动创建它。请参阅 redshift.conf.sample。
手动指定位置
Redshift 根据地理坐标计算日出和日落时间。可以使用 manual 位置提供程序手动指定,例如巴黎:
~/.config/redshift/redshift.conf
[redshift] ... location-provider=manual ... [manual] lat=48.864716 lon=2.349014
基于 GeoClue 的自动定位
Redshift 默认使用 geoclue2 位置提供程序。它需要一个 GeoClue 代理在后台运行。它应该无需进一步配置即可工作,但如果您遇到问题,请参阅 #无法连接到 GeoClue。
基于 GPSD 的自动定位
您还可以使用 gpsd 自动确定您的 GPS 位置,并将其用作 Redshift 的输入。创建以下脚本并将 $lat 和 $lon 传递给 redshift -l $lat:$lon。
#!/bin/bash date #gpsdata=$( gpspipe -w -n 10 | grep -m 1 lon ) gpsdata=$( gpspipe -w | grep -m 1 TPV ) lat=$( echo "$gpsdata" | jsawk 'return this.lat' ) lon=$( echo "$gpsdata" | jsawk 'return this.lon' ) alt=$( echo "$gpsdata" | jsawk 'return this.alt' ) dt=$( echo "$gpsdata" | jsawk 'return this.time' ) echo "$dt" echo "You are here: $lat, $lon at $alt"
有关更多信息,请参阅 此 论坛帖子。
使用真实屏幕亮度
Redshift 具有亮度调整设置,但它的工作方式可能与大多数人预期的不同。实际上,这是一种伪造的亮度调整,通过操纵 gamma 曲线来实现,这意味着它不会降低屏幕的背光。 [3]
通过 redshift 挂钩和 acpilightAUR 可以改变屏幕背光,但有一些限制,您可能需要根据您的硬件找到另一种控制背光的方法。
您需要创建一个文件在 ~/.config/redshift/hooks 目录中并使其可执行。您可以使用并编辑以下示例:
~/.config/redshift/hooks/brightness.sh
#!/bin/sh
# Set brightness via xbrightness when redshift status changes
# Set brightness values for each status.
# Range from 1 to 100 is valid
brightness_day=85
brightness_transition=50
brightness_night=30
# Set fps for smoooooth transition
fps=1000
# Adjust this grep to filter only the backlights you want to adjust
backlights=($(xbacklight -list | grep ddcci*))
set_brightness() {
for backlight in "${backlights[@]}"
do
xbacklight -set $1 -fps $fps -ctrl $backlight &
done
}
if [ "$1" = period-changed ]; then
case $3 in
night)
set_brightness $brightness_night
;;
transition)
set_brightness $brightness_transition
;;
daytime)
set_brightness $brightness_day
;;
esac
fi
使其 可执行 并 重启 redshift.service 以应用更改。
检查服务状态,它应该 **不** 包含以下消息:
redshift[..]: No outputs have backlight property
故障排除
无法连接到 GeoClue
如果在运行 $ redshift 时收到
Unable to obtain GeoClue client path: Timeout was reached.
请确保 GeoClue 代理正在运行。GNOME Shell 提供自己的代理。对于其他桌面环境,一个演示代理 (/usr/lib/geoclue-2.0/demos/agent) 会被 自动启动。您可以通过检查 /usr/lib/geoclue-2.0/demos/where-am-i 命令的输出来检查 GeoClue 是否正常工作。
如果您使用的桌面环境不支持 XDG Autostart,那么您需要手动启动演示代理,或者您可以创建一个 systemd 单元文件,包含以下配置:
~/.config/systemd/user/geoclue-agent.service
[Unit] Description=redshift needs to get a (geo)clue [Service] ExecStart=/usr/lib/geoclue-2.0/demos/agent [Install] WantedBy=default.target
然后 启动/启用 geoclue-agent.service 用户单元。
找不到屏幕 1
在您的发行版中找到名为 "redshift.conf" 的配置文件,并将 "screen 1" 改为 "screen 0"。
点击托盘图标无效
安装 libappindicator。请参阅 redshift issue 363 和 FS#49971。
Redshift 使屏幕在设定颜色值和默认颜色值之间快速闪烁
确保没有运行多个 Redshift 实例。
Redshift 作为命令运行时正常,但作为 systemd 服务运行时失败
redshift.service 文件中的 systemd 单元有一行,该行使服务在 显示管理器 启动 display-manager.service 单元后才调用 redshift。如果您不使用显示管理器,请 编辑 redshift.service 用户服务,并删除 After=display-manager.service 行。运行 daemon-reload 后,服务应该可以正常初始化。
Redshift-gtk 服务导致核心转储
请参考上一个问题以及 [4]。
Redshift 未出现在系统托盘中
如果运行 $ redshift-gtk 命令未在系统托盘中启动,而是收到以下输出:
$ redshift-gtk
Traceback (most recent call last):
File "/usr/bin/redshift-gtk", line 26, in <module>
from redshift_gtk.statusicon import run
File "/usr/lib/python3.8/site-packages/redshift_gtk/statusicon.py", line 31, in <module>
gi.require_version('Gtk', '3.0')
AttributeError: module 'gi' has no attribute 'require_version'
您需要安装 python-gobject。
在使用 Nvidia 驱动时,分辨率高于 1080p 时 Redshift 将屏幕变为绿色
这是 Nvidia 驱动的一个 bug。修复方法是进行以下编辑:
/etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device"
...
Option "UseNvKmsCompositionPipeline" "false"
...
EndSection
有关更多信息,请参阅 redshift issue 587 和 redshift issue 720。
Redshift 不支持用于切换的热键
一种解决方法是在您的桌面环境中创建自定义热键,调用命令 pkill -USR1 '^redshift$'。
有关更多信息,请参阅 [5]。