2017-05-26 94 views
2

由於某些原因,在我的系統上亮度指示燈無法改變亮度。雖然xbacklight確實可以改變亮度。如何禁用覆蓋系統指示燈的gnome-shell擴展

我寫了一個擴展來運行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; 
} 

我還試圖加入從啓用的變量()持有該禁止()碼舊_brightness然後正在重置_brightness了這一點。

這兩種方法都不適合我,所以任何幫助將不勝感激。

回答

0

首先我總是檢查GS擴展的問題是GitHub中的代碼。在這種情況下,BrightnessIndicator擴展了panelMenu.SystemIndicator,它不會提供任何東西,所以從此繼承繼承,直到找到爲止,例如ClutterActor.destroy()。那麼我想只是實例化一個新的BrightnessIndicator,就像它在panel.js中完成的一樣。

有一點需要注意的是,disable()也會在桌面被鎖定時調用。