之前我在使用macOS的时候,非常喜欢使用灰度显示界面。到底是什么原因让我有这么“变态”的需求。 下面听听我的故事,当时不重要,可以跳过。
是这样的,因为我是程序员,算上电脑+手机,一天但用屏幕的时候超过10小时。我的眼睛经常出现疲劳的情况。有这么一阵子,我的眼皮一直在跳,连接跳了两个多月,让我心神不宁。我知道肯定是用眼过度导致的,但是我又没有什么办法。毕竟我的工作就是这样。
退而求其次,我就想购买一款比较护眼的显示器。提到护眼,大家可能会想到墨水屏的电纸书。我找了一下,市面上很少有墨水屏的显示器。就算有,我也担心自己会适应不了,黑白屏的效果。所以我就尝试把我的显示器调整成黑白的(灰度),来模拟墨水屏的效果,起初的目的只是为了,测试我是否能适应黑白屏。
刚开始从彩色屏切换到黑白屏时,真的不习惯。后来慢慢的我就习惯了,奇妙的事情就发生了。使用了一周黑白屏后,我的眼睛舒适了,眼睛酸涩感明显减轻。眼皮连接跳动2个月的症状也消失了。
macOS/iOS启用黑白显示比较简单,系统设置中就有。找到色彩滤镜就行了。因为写这篇文章的时候,手头没有macOS的电脑,我截图了iOS的设置。两者基本相同。
我使用的是archlinux,我以它为例。 参考: https://wiki.archlinux.org/title/Picom#Grayscale
安装picompacman -S picom
创建glsl文件
我的路径是/home/itkey/.soft/shader/file.glsl
内容如下:
uniform float opacity;
uniform bool invert_color;
uniform sampler2D tex;
void main() {
vec4 c = texture2D(tex, gl_TexCoord[0].xy);
float g = 0.2126 * c.r + 0.7152 * c.g + 0.0722 * c.b; // CIELAB luma, based on human tristimulus.
c = vec4(vec3(g), c.a);
if (invert_color)
c = vec4(vec3(c.a, c.a, c.a) - vec3(c), c.a);
c *= opacity;
gl_FragColor = c;
}
显示灰度
picom --backend glx --glx-fshader-win "$(cat /home/itkey/.soft/shader/file.glsl)"
执行完这个代码以后显示器的所有画面就是黑白显示了。
这种方式跟macOS有一点小的区别。黑白模式如果截图,截图下来的内容也是黑白的。而macOS中只是你看到的是黑白的,截图依然是彩色的。
还有一个问题,当快速切换窗口时,会出现淡入淡出的效果。
变回彩色当我们需要截图或者要临时调色时,如何切换到彩色呢?其实结束进程就可以了。
killall -q picom
shell脚本
能否把这能的内容合并成一个shell脚本呢?以下是我的脚本仅供参考 。
#!/usr/bin/env bash
GRAYSCALE=$(cat /home/itkey/.soft/log/picom.log 2>&1 &
else
nohup picom "$@" > /home/itkey/.soft/log/picom.log 2>&1 &
fi
使用方法 : 启用灰度
MODE=grayscale picom.sh
禁用灰度
MODE=normal picom.sh
在i3wm中设置 快捷键开启黑白显示
#切换到黑白显示
bindsym $mod+Shift+g exec MODE=grayscale /home/itkey/.soft/bin/picom.sh
每次点击可以切换 。 参考了:https://raw.githubusercontent.com/kantord/compton-grayscale-reading-mode/master/compton.sh
参考https://github.com/kantord/compton-grayscale-reading-mode