首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wayland的亮度和色温的变化是否相当于xrandr?

Wayland的亮度和色温的变化是否相当于xrandr?
EN

Ask Ubuntu用户
提问于 2020-10-24 05:58:50
回答 5查看 12.5K关注 0票数 22

xrandr可以使用命令行来改变显示亮度。例如,

代码语言:javascript
复制
xrandr --output VGA-1 --brightness 0.4

Wayland不支持xrandr。Wayland中是否有类似的工具可以用来控制亮度和色温?

注意:这不是这个问题的复制,因为这是关于改变分辨率的,我想控制不支持sys/class/backlight的桌面计算机上的亮度,以便像亮度控制器红移这样的前端可以与Wayland一起工作。

EN

回答 5

Ask Ubuntu用户

发布于 2022-09-12 11:18:03

格玛步与使用xrandr不同--它更像是红移的替代物。您可以手动设置亮度,但它的目的是保持运行,所以一旦您退出,您的显示器将重置为默认亮度。例如,可以将显示设置为50%的亮度:

代码语言:javascript
复制
gammastep -l 0:0 -o -b 0.5:0.5

-l 0:0将lat/lon设置为0,-o告诉它只执行一次操作(所以您不需要正确的lat/lon),-b指定了夜晚:白昼亮度,这两者在这里都是一样的,因为我们只是告诉它做一个一次性设置。您可能会决定要利用白天/夜晚的持续调整,在这种情况下,不要使用-o,并给它适当的lat/lon。

亮丽更接近你想要的东西,但当我运行它时,我无法设置外部显示器的亮度--只有内置的笔记本屏幕:

代码语言:javascript
复制
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中可用。

票数 2
EN

Ask Ubuntu用户

发布于 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

下面是相关的片段:

代码语言:javascript
复制
    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需要实现协议。

所以它需要

  1. 有待商定和合并的wayland协议(这里有一个PR,我可以看到:https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_请求/14)
  2. 您的作曲家(kwin、mutter、sway、weston等)来实现这个协议。
  3. 在API中公开伽马更改设置的排序器。
  4. 有人用这个新的API写了一个工具,像xrandr,用伽马曲线来调整亮度。理论上,这也可以由您的排序器完成,它可以公开CLI或图形界面来调整这一点。

xrandr本身已经被特定于作曲家的工具(如kscreen-doctor和桌面环境的GUI系统设置)所取代,因此需要您的桌面环境来提供工具来完成xrandr --brightness在过去所做的事情。

编辑:进一步查看kwin代码,如果您的排字器支持某种类型的夜色(也称为红移),理论上应该可以支持这一点。

Kwin实际上在代码中支持亮度,但是它似乎没有被任何内置插件公开,但是似乎可以编写一个改变亮度的插件。

票数 1
EN

Ask Ubuntu用户

发布于 2023-04-14 23:06:45

在经历了很长一段时间之后,我找到的最好的解决方案就是这个项目侏儒生锈

它只具有调整亮度的功能,但是您需要使用一个试验性分支并在本地安装它才能工作。

有关实验分支的更多信息,请参见本期

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1286458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档