Redshift
安装
安装 redshift 软件包。或者,安装 redshift-minimalAUR 软件包,以获得依赖项最少的版本。
前端
redshift-gtk 命令随 redshift 软件包一起提供,并提供一个系统托盘图标,用于控制 Redshift。请参阅可选依赖项。
替代方案包括 redshift-qtAUR、redshiftconfAUR 或 plasma5-applets-redshift-control-gitAUR。
用法
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 hooks 和 acpilight 更改屏幕背光,但请参阅 Backlight#xbacklight,因为存在一些限制,您可能需要找到另一种控制背光的方法,具体取决于您的硬件。
您需要在 ~/.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-gtk3。请参阅 redshift issue 363 和 FS#49971。
Redshift 使屏幕在设定的颜色值和默认颜色值之间快速闪烁
确保没有多个 redshift 实例正在运行。
Redshift 作为命令调用时工作正常,但作为 systemd 服务运行时失败
systemd 单元在 redshift.service
文件中有一行,使服务等待 显示管理器 启动 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。
Redshift 在使用某些重置 gamma 值的 wine 应用程序时暂时重置
如果您注意到使用某些 wine 应用程序时,redshift 似乎在启动、调整设置等时暂时重置,那么有一个有用的注册表项似乎可以缓解此问题。请参阅 [5] 和 [6]。使用注册表编辑器设置或创建此字符串值,或以其他方式导入/设置它
HKEY_CURRENT_USER\Software\Wine\X11 Driver
UseXVidMode="N"
在使用 Nvidia 驱动程序时,分辨率超过 1080p 时 Redshift 将屏幕变成绿色
这是 nvidia 驱动程序的一个错误。对此的修复方法是进行以下编辑
/etc/X11/xorg.conf.d/20-nvidia.conf
Section "Device" ... Option "UseNvKmsCompositionPipeline" "false" ... EndSection
有关更多信息,请参阅 redshift issue 587 和 redshift issue 720。
Redshift 不支持切换热键
一种解决方法是在您的桌面环境中创建一个自定义热键,调用命令 pkill -USR1 '^redshift$'
。
有关更多信息,请参阅 [7]。