我注意到,redshift
在装有 Linux Mint 21.3 的机器上,该功能不再起作用。我确信大约半年前它仍在运行(尽管在 Linux Mint 21.2 下可能如此)。尝试调试它时,我发现问题一定出在geoclue
:
$ redshift
Trying location provider `geoclue2'...
Using provider `geoclue2'.
Could not connect to wayland display, exiting.
Failed to start adjustment method wayland.
Trying next method...
Using method `randr'.
Waiting for initial location to become available...
^Cpoll: Interrupted system call
Unable to get location from provider.
(我不知道为什么它谈到了 Wayland,它不是一个 Wayland 会话。)
/usr/libexec/geoclue-2.0/demos/where-am-i
从包执行geoclue-2-demo
一段时间后就会超时,没有任何输出或错误。(有时它确实会产生一些关于缺少某些内容的错误消息,但我无法可靠地重现它。)
状态如下geoclue.service
:
$ systemctl status geoclue.service | cat
● geoclue.service - Location Lookup Service
Loaded: loaded (/lib/systemd/system/geoclue.service; static)
Active: active (running) since Sat 2024-06-15 13:53:51 CEST; 7min ago
Main PID: 2434 (geoclue)
Tasks: 4 (limit: 18810)
Memory: 19.1M
CPU: 424ms
CGroup: /system.slice/geoclue.service
└─2434 /usr/libexec/geoclue
Jun 15 13:53:51 Alexey-InfinityBook-Mint systemd[1]: Started Location Lookup Service.
Jun 15 13:54:12 Alexey-InfinityBook-Mint geoclue[2434]: Failed to query location: Not Found
Jun 15 13:54:17 Alexey-InfinityBook-Mint geoclue[2434]: Failed to query location: Not Found
[...]
谷歌搜索“geoclue.service 查询位置未找到失败”并未在搜索结果顶部返回任何相关信息。
我在 LMDE 6 (Linux Mint Debian 版本) 下遇到了同样的问题(至少看起来一样)。
任何帮助将不胜感激。
根本问题是 Redshift 依赖GeoClue获取有关机器位置的信息,以确定应在何时应用夜间模式。GeoClue 通过向位置服务发出 Web 请求来获取此信息。默认情况下,它使用 Mozilla 位置服务,该服务已于 2024 年 4 月停用。它尝试查询的 URL(https://location.services.mozilla.com/v1/geolocate)此时返回状态
404 Not Found
,这就是您在日志文件中看到的错误的原因。GeoClue 错误跟踪器上有一个关于此问题的错误报告,但到目前为止尚未解决。展望未来,有两种方法可以解决这个问题:
为 GeoClue 配置不同的位置提供商
您可以在配置文件中为 GeoClue 设置自定义位置提供程序
/etc/geoclue/geoclue.conf
。目前,Mozilla 位置服务和Google 地理位置 API似乎受支持。由于第一个已经退役,目前似乎只有 Google 选项才是可行的替代方案。查看文档,您需要获取 Google API 密钥。在我看来,这似乎是一项付费服务,我还没有测试过。
在 Redshift 配置中手动配置位置
Redshift接受一个配置文件,您可以使用它来设置静态位置。他们提供了一个示例配置文件,其中包含所有可能的选项。您需要将行更改为
lat
您lon
自己的纬度和经度。注意:如果您使用的是 AppArmor(这似乎是 Linux Mint 中的默认设置),那么Redshift 的 AppArmor 配置文件中目前存在错误
~/.config/redshift.conf
。为了使 Redshift 能够读取您的配置文件,必须将其放置在而不是~/.config/redshift/redshift.conf
,如 Redshift 文档所建议的那样。