背景:夜间红色较多/蓝色较少
为了在夜间保护眼睛,增加红色和/或减少蓝色,在Windows 10(蓝光过滤器)和 Linux;Gnome 桌面(夜灯)和 Ubuntu Unity 桌面,以及附加组件,例如红移或者勒克斯。
我想知道如何使用 Ubuntu 的内置命令行xrandr <monitor> --gamma 1:1:1
功能实现相同的功能。1:1:1
代表百分比红色的:绿色的:蓝色的。我估计1
= 100%。我不确定上述软件包是增加更多红色 ( 1.2:1:1
) 以增加约 20% 还是减少蓝色 ( 1:1:0.8
) 以减少约 20% 还是两者兼而有之以减少约 40% 的变化。
Gnome Night Light 示例没有帮助
根据天哪,Ubuntu,在 Gnome's Night Light 中您可以使用以下数值:
- 1000 — 最低值(超暖/红色)
- 4000 —默认夜灯开启温度
- 5500 — 平衡夜灯温度
- 6500 —默认夜灯关闭温度
- 10000 — 最高值(超酷/蓝色)
为了测试这些数值,如何转换它们以覆盖默认值--gamma 1:1:1
?
xorg 的文档是怎么说的
Xorg 的文档没有过多谈论--gamma
控制:
−−gamma 红:绿:蓝
- 将指定的浮点值设置为当前连接到此输出的 crtc 上的伽马校正。请注意,您无法为克隆的输出(即共享同一个 crtc)获取两个不同的值,并且将输出切换到另一个 crtc 根本不会改变 crtc 伽马校正。
浮点小数会很有用,因为我想要升级的脚本在黎明和黄昏的 90 到 120 分钟的过渡期内,每分钟缓慢设置xbacklight
一次亮度。我想通过xrandr --brightness
软件支持外部显示器和 OLED 内置显示器以及xrandr --gamma
支持红光/蓝光滤镜来增强脚本。Xorg 没有说明支持多少个小数位,但我认为我会将bc
计算设置为 3 或 4 个小数位,以实现可读性/精度平衡。
概括
我希望模仿微软和 Gnome 的“大佬们”使用“更多红色”和/或“更少蓝色”技术的做法。我还没有深入研究 Wayland,但使用该系统的答案也会受到赞赏,因为它无疑会成为未来的关注点。
--gamma 1:1:1
晚上进行哪些调整比较合适?
答案1
2018 年 12 月 9 日更新 -sct
我找到了一个允许用户设置色温的程序的源代码sct
。它“抄袭了代码”redshift
并提供了红色、绿色和蓝色值的映射:
/* cribbed from redshift, but truncated with 500K steps */
static const struct { float r; float g; float b; } whitepoints[] = {
{ 1.00000000, 0.18172716, 0.00000000, }, /* 1000K */
{ 1.00000000, 0.42322816, 0.00000000, },
{ 1.00000000, 0.54360078, 0.08679949, },
{ 1.00000000, 0.64373109, 0.28819679, },
{ 1.00000000, 0.71976951, 0.42860152, },
{ 1.00000000, 0.77987699, 0.54642268, },
{ 1.00000000, 0.82854786, 0.64816570, },
{ 1.00000000, 0.86860704, 0.73688797, },
{ 1.00000000, 0.90198230, 0.81465502, },
{ 1.00000000, 0.93853986, 0.88130458, },
{ 1.00000000, 0.97107439, 0.94305985, },
{ 1.00000000, 1.00000000, 1.00000000, }, /* 6500K */
{ 0.95160805, 0.96983355, 1.00000000, },
{ 0.91194747, 0.94470005, 1.00000000, },
{ 0.87906581, 0.92357340, 1.00000000, },
{ 0.85139976, 0.90559011, 1.00000000, },
{ 0.82782969, 0.89011714, 1.00000000, },
{ 0.80753191, 0.87667891, 1.00000000, },
{ 0.78988728, 0.86491137, 1.00000000, }, /* 10000K */
{ 0.77442176, 0.85453121, 1.00000000, },
};
上面三列是红色的,绿色的和蓝色的。
2018 年 11 月 4 日更新 - Eyesome
我写了一组 Bash 脚本,叫做令人赏心悦目那逐步调整亮度和伽玛在 90 分钟到 120 分钟的时间内,在黎明和黄昏时分进行。虽然用户可以更改设置,但全亮度设置的良好起点是:
xrandr --output DP-1-1 --gamma 1:1:1 --brightness 1.0
夜间设置(针对三个监视器中的一个)是:
xrandr --output DP-1-1 --gamma 1.0:0.88:0.76 --brightness 0.55
笔记:最多可以定义三个具有单独设置地监视器。
原始答案
终于找到了一个答案:更多 XRANDR 或蓝光照射该脚本如下所示:
#!/bin/sh
night_mode() {
for disp in $(xrandr | sed -n 's/^\([^ ]*\).*\<connected>.*/\1/p'); do
xrandr --output $disp --gamma $1 --brightness $2
done }
case $1 in
off) night_mode 1:1:1 1.0 ;;
*) night_mode 1:1:0.5 0.7 ;;
esac
该脚本可降低所有连接的 Xorg 显示器的蓝光分量和亮度。只需将其保存在您的bin
目录中,chmod +x
然后,如果您愿意,添加cron
作业或键盘快捷键来调用该函数。
工作原理是什么?只需输入脚本名称而不输入任何参数即可减少蓝光。要恢复正常设置,请off
在命令后添加参数。
答案2
您提到的数千个数值是开尔文温度。每个数值都有相应的黑体(恒星或任何发射所有波长光的东西)发射光谱。
因此,如果您选择一条可见光波段(例如红色、绿色或蓝色),然后找到曲线与这些波段的交点,这样就可以得到它们的比例。(注意:图表上的比例是对数的;差异比表面上的要大得多)
我认为 5777K 是我们的太阳(有点白)。请记住,这只是原始发射光,各种大气效应可以在一天中的不同时间弯曲、散射或吸收沿途的光线,具体取决于太阳的角度、大气厚度、大气中的化学物质等。阅读本文以了解有关这些现象的更多信息:室外照明随太阳高度和光污染的变化 。
您绝对不需要所有这些来制作一个好的伽马改变脚本,但最好对您实际尝试模拟的内容有所了解,然后您可以选择好的值。
答案3
redshift
对我来说,通过安装( apt install redshift
) 并将其用作以下任一方式可获得最佳效果:
redshift -oP -O 4500 -b 0.5
温度为 4500 且亮度为 0.5,或与之结合xrandr
(以及可选地xrandr-invert-colors
反转颜色):
xrandr --output eDP-1 --brightness 0.5
xrandr-invert-colors
redshift -o -O 4500
xrandr
请注意,单独调用将取消任何红移效果。-P
选项redshift
还会重置屏幕亮度和颜色,而不是逐步叠加调整。如果与第二种用例-P
结合使用,则需要进行增量调整(无选项) 。xrandr
最后,不使用xrandr-invert-colors
,也可以使用 中的负亮度值xrandr
(但不是在 中redshift
),但结果不太好。