如何禁用覆盖系统指示器的gnome-shell扩展

时间:2017-05-26 01:51:21

标签: javascript gnome-shell gnome-3

在我的系统上由于某种原因,亮度指示器无法改变亮度。虽然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()代码中的那个。

这两种方法对我都没有用,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

首先,我总是检查GS扩展问题是GitHub中的代码。在这种情况下,BrightnessIndicator扩展panelMenu.SystemIndicator,它不会为你提供任何东西,所以从那里开始继承,直到找到,例如ClutterActor.destroy()。然后我想只是实例化一个新的BrightnessIndicator就像它在panel.js中完成的那样。

需要注意的一点是,桌面锁定时也会调用disable()。