发布于 2022-09-12 11:18:03
格玛步与使用xrandr不同--它更像是红移的替代物。您可以手动设置亮度,但它的目的是保持运行,所以一旦您退出,您的显示器将重置为默认亮度。例如,可以将显示设置为50%的亮度:
gammastep -l 0:0 -o -b 0.5:0.5-l 0:0将lat/lon设置为0,-o告诉它只执行一次操作(所以您不需要正确的lat/lon),-b指定了夜晚:白昼亮度,这两者在这里都是一样的,因为我们只是告诉它做一个一次性设置。您可能会决定要利用白天/夜晚的持续调整,在这种情况下,不要使用-o,并给它适当的lat/lon。
亮丽更接近你想要的东西,但当我运行它时,我无法设置外部显示器的亮度--只有内置的笔记本屏幕:
brightnessctl -l # list displays
brightnessctl -l -c backlight # list displays of class 'backlight'
sudo brightnessctl -d intel_backlight s 25% # set display to 25%灯类似于brightnessctl,包括它无法检测(因而无法控制)我的外部显示。
所有这三个包都在22.04 jammy中可用。
发布于 2023-02-25 06:20:17
因为这是wayland (这只是一个协议),这将取决于您的排字员(例如Kwin表示KDE,Mutter表示GNOME),但现在似乎没有任何类似的东西(2023年2月)。
我深入研究了这个代码,以了解xrandr是如何做到这一点的,相关的代码就在这里:https://gitlab.freedesktop.org/xorg/app/xrandr/-/blob/6f714830da6c8d74f024be6b0bb32c1ea39c1217/xrandr.c#L1469-1494。
下面是相关的片段:
if (output->gamma.red == 0.0)
output->gamma.red = 1.0;
if (output->gamma.green == 0.0)
output->gamma.green = 1.0;
if (output->gamma.blue == 0.0)
output->gamma.blue = 1.0;
gammaRed = 1.0 / output->gamma.red;
gammaGreen = 1.0 / output->gamma.green;
gammaBlue = 1.0 / output->gamma.blue;
for (i = 0; i < size; i++) {
if (gammaRed == 1.0 && output->brightness == 1.0)
crtc_gamma->red[i] = (double)i / (double)(size - 1) * 65535.0;
else
crtc_gamma->red[i] = dmin(pow((double)i/(double)(size - 1),
gammaRed) * output->brightness,
1.0) * 65535.0;
if (gammaGreen == 1.0 && output->brightness == 1.0)
crtc_gamma->green[i] = (double)i / (double)(size - 1) * 65535.0;
else
crtc_gamma->green[i] = dmin(pow((double)i/(double)(size - 1),
gammaGreen) * output->brightness,
1.0) * 65535.0;
if (gammaBlue == 1.0 && output->brightness == 1.0)
crtc_gamma->blue[i] = (double)i / (double)(size - 1) * 65535.0;
else
crtc_gamma->blue[i] = dmin(pow((double)i/(double)(size - 1),
gammaBlue) * output->brightness,
1.0) * 65535.0;
}
XRRSetCrtcGamma(dpy, crtc->crtc.xid, crtc_gamma);XRANDR降低亮度的方法实际上是改变伽马函数,将伽马函数提升到最大值,方法是对RGB通道应用伽马曲线,并使用XRRSetCrtcGamma -- xrandr Set CRTC,其中XRANDR是X.org调整和旋转,而CRTC是CRT (阴极射线管)控制器,尽管有旧的名称,但对于一般的视频控制器来说,它只是一个术语。
由于这种行为是特定的,作曲家本身(例如Kwin或Sway)将不得不实现它,但在此之前,我相信wayland需要实现协议。
所以它需要
xrandr本身已经被特定于作曲家的工具(如kscreen-doctor和桌面环境的GUI系统设置)所取代,因此需要您的桌面环境来提供工具来完成xrandr --brightness在过去所做的事情。
编辑:进一步查看kwin代码,如果您的排字器支持某种类型的夜色(也称为红移),理论上应该可以支持这一点。
Kwin实际上在代码中支持亮度,但是它似乎没有被任何内置插件公开,但是似乎可以编写一个改变亮度的插件。
https://askubuntu.com/questions/1286458
复制相似问题