Gnome 的内置亮度控制功能非常适合我的笔记本电脑显示器,但我希望它也能改变外接显示器的亮度。我已经弄清楚了如何使用xrandr
来控制外接显示器的亮度¹,我还找到了一种dbus
基于 来控制笔记本电脑显示器亮度² 的方法,这似乎与 Gnome 的方法相对应。
我知道我可以设置自定义键盘快捷键来运行我自己的脚本,但这样一来,当我更改设置时,Gnome 就会显示漂亮的弹出亮度显示,而我却无法看到。实际上,我只想用亮度键来控制两个显示器,而且我能想到很多不同的方法来实现这一点:
- 我可以使用 Gnome 的原生亮度控制注册我的外接显示器,以便它能够同时控制两者吗?
- 否则,我可以在 Gnome 完成后挂接到默认亮度控制来运行我自己的脚本吗?
- 或者,作为最后的手段,是否有一个简单的工具可以触发类似于 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 中运行我们的脚本。