在我的系统上由于某种原因,亮度指示器无法改变亮度。虽然xbacklight确实可以改变亮度。
我写了一个扩展来运行xbacklight,只要它改变了亮度。有用。虽然它没有禁用(不是我需要它,但我希望有良好的代码)。我不确定如何正确禁用扩展。这是所有代码。
const Main = imports.ui.main;
const Lang = imports.lang;
const Util = imports.misc.util;
const Brightness = imports.ui.status.brightness;
const BrightnessIndicator = new Lang.Class({
Name : 'BrightnessIndicator',
Extends : Brightness.Indicator,
_sync : function () {
let visible = this._proxy.Brightness >= 0;
this._item.actor.visible = visible;
if (visible) {
this._slider.setValue(this._proxy.Brightness / 100.0);
}
let percent = this._proxy.Brightness.toString();
Util.spawn(['xbacklight', '-set', percent]);
}
});
function init() {
}
function enable() {
var indicator = new BrightnessIndicator();
Main.panel.statusArea.aggregateMenu._brightness = indicator;
}
function disable() {
delete indicator;
Main.panel.statusArea.aggregateMenu._brightness = null;
}
我还尝试在enable()中添加一个变量来保存旧的_brightness,然后将_brightness重置为disable()代码中的那个。
这两种方法对我都没有用,所以任何帮助都会受到赞赏。
答案 0 :(得分:0)
首先,我总是检查GS扩展问题是GitHub中的代码。在这种情况下,BrightnessIndicator扩展panelMenu.SystemIndicator,它不会为你提供任何东西,所以从那里开始继承,直到找到,例如ClutterActor.destroy()。然后我想只是实例化一个新的BrightnessIndicator就像它在panel.js中完成的那样。
需要注意的一点是,桌面锁定时也会调用disable()。