Gnome 3 标准亮度控制与外接显示器

Gnome 3 标准亮度控制与外接显示器

Gnome 的内置亮度控制功能非常适合我的笔记本电脑显示器,但我希望它也能改变外接显示器的亮度。我已经弄清楚了如何使用xrandr来控制外接显示器的亮度¹,我还找到了一种dbus基于 来控制笔记本电脑显示器亮度² 的方法,这似乎与 Gnome 的方法相对应。

我知道我可以设置自定义键盘快捷键来运行我自己的脚本,但这样一来,当我更改设置时,Gnome 就会显示漂亮的弹出亮度显示,而我却无法看到。实际上,我只想用亮度键来控制两个显示器,而且我能想到很多不同的方法来实现这一点:

  1. 我可以使用 Gnome 的原生亮度控制注册我的外接显示器,以便它能够同时控制两者吗?
  2. 否则,我可以在 Gnome 完成后挂接到默认亮度控制来运行我自己的脚本吗?
  3. 或者,作为最后的手段,是否有一个简单的工具可以触发类似于 Gnome 的亮度弹出窗口?

我不需要帮助编写脚本或将这些脚本附加到按键上。我试图弄清楚我不知道如何调整或连接到标准 Gnome 功能。或者如果我不能,是否有一种简单、标准的方式来显示类似于 Gnome 的临时弹出显示。

¹ 我可以通过以下方式控制我的两个显示器,尤其是外接显示器xrandr

xrandr --current --verbose # list all display devices
xrandr --output DP-3 --brightness N # N varies from 0.0 to 1.0, where 0 is literally black

² 我只能使用gdbus命令来控制我的笔记本电脑显示器:

gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Screen.StepUp
gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.Screen.StepDown

答案1

你的第二点可以通过创建 gnome-shell-extension 来实现

否则,我可以在 Gnome 完成后挂接到默认亮度控制来运行我自己的脚本吗?

使用 gnome-shell --version 3.38.1 进行测试

文件内容extension.js如下。注意第 12 行,

Util.spawnCommandLine("bash /home/admin/extmonbri.sh");

将上面一行中的脚本路径从“/home/admin/extmonbri.sh”改为您的脚本路径。

/home/admin/extmonbri.sh文件内容

#!/bin/bash
notify-send 'script is working, make your script as you need it'

extension.js文件内容

const Util = imports.misc.util;

function init () {}

let ORIGINAL = imports.ui.status.brightness.Indicator.prototype._sync;

function _externalMonitorBrightness () {
        let visible = this._proxy.Brightness >= 0;
        this._item.visible = visible;
        if (visible)
            this._changeSlider(this._proxy.Brightness / 100.0);
            Util.spawnCommandLine("bash /home/admin/extmonbri.sh");
    }

function enable () {
imports.ui.status.brightness.Indicator.prototype._sync = _externalMonitorBrightness;
}

function disable () {
imports.ui.status.brightness.Indicator.prototype._sync = ORIGINAL;
}

从源文件中,https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/master/js/ui/status/brightness.js

主意:我们用自定义函数覆盖上述源文件中的原始函数 _sync,以在我们的 gnome-shell-extension 中运行我们的脚本。

当你按下 BrightnessKey 时,脚本运行, 在此处输入图片描述

当你通过点击或滚动更改亮度滑块时,脚本将运行 在此处输入图片描述

相关内容