@@ -9,43 +9,39 @@ const Shell = imports.gi.Shell;
99
1010const Clutter = imports . gi . Clutter
1111
12- const VOLTAGE_NOW = "/sys/class/power_supply/BAT0/voltage_now" ;
13- const CURRENT_NOW = "/sys/class/power_supply/BAT0/current_now" ;
14- const STATUS = "/sys/class/power_supply/BAT0/status" ;
12+ const POWER_NOW = "/sys/class/power_supply/BAT0/power_now" ;
1513const WINDOW_SIZE = 100 ;
1614
1715let meta ;
18- let wattmeter ;
16+ let tp_wattmeter ;
1917let label ;
2018let interval ;
2119
22- var WattMeter = class WattMeter extends PanelMenu . Button {
20+ var TPWattMeter = class TPWattMeter extends PanelMenu . Button {
2321 constructor ( meta ) {
2422 super ( ) ;
2523 this . meta = meta ;
2624 }
2725 _init ( ) {
2826 super . _init ( St . Align . START ) ;
2927 this . mainBox = null ;
30- this . buttonText = new St . Label ( { text : _ ( "(...)" ) , y_align : Clutter . ActorAlign . CENTER } ) ;
28+ this . buttonText = new St . Label ( {
29+ text : _ ( "?W" ) ,
30+ y_align : Clutter . ActorAlign . CENTER ,
31+ style_class : 'tp_wattmeter_lbl' ,
32+ } ) ;
3133 this . actor . add_actor ( this . buttonText ) ;
3234 this . powerWindows = [ ] ;
33- this . lastStatus = 'unknown ' ;
35+ this . lastStatus = '?W ' ;
3436 }
3537
3638 _measure ( ) {
37- this . lastStatus = getStatus ( ) . trim ( ) ;
38- if ( this . lastStatus !== 'Discharging' ) {
39+ const power = getPower ( ) ;
40+ if ( power < 0 ) {
3941 this . powerWindows = [ ] ;
4042 return true ;
4143 }
42- const current = getCurrent ( ) ;
43- const voltage = getVoltage ( ) ;
44- if ( current < 0 || voltage < 0 ) {
45- this . powerWindows = [ ] ;
46- return true ;
47- }
48- const power = current * voltage ;
44+
4945 this . powerWindows . push ( power ) ;
5046 if ( this . powerWindows . length >= WINDOW_SIZE ) {
5147 this . powerWindows . shift ( ) ;
@@ -60,17 +56,17 @@ var WattMeter = class WattMeter extends PanelMenu.Button {
6056 power_text = this . lastStatus != null ? this . lastStatus : 'N/A' ;
6157 } else {
6258 let avg = this . powerWindows . reduce ( ( acc , elem ) => acc + elem , 0.0 ) / this . powerWindows . length ;
63- power_text = avg . toFixed ( 2 ) + ' W'
59+ power_text = avg . toFixed ( 2 ) + 'W'
6460 }
6561
6662 temp . set_text ( power_text ) ;
6763 return true ;
6864 }
6965
7066 _enable ( ) {
71- this . measure = GLib . timeout_add ( GLib . PRIORITY_DEFAULT , 50 ,
67+ this . measure = GLib . timeout_add ( GLib . PRIORITY_DEFAULT , 250 ,
7268 Lang . bind ( this , this . _measure ) ) ;
73- this . interval = GLib . timeout_add ( GLib . PRIORITY_DEFAULT , 1000 ,
69+ this . interval = GLib . timeout_add ( GLib . PRIORITY_DEFAULT , 5000 ,
7470 Lang . bind ( this , this . _refresh ) ) ;
7571 }
7672
@@ -84,24 +80,15 @@ const Config = imports.misc.config;
8480let shellMinorVersion = parseInt ( Config . PACKAGE_VERSION . split ( '.' ) [ 1 ] ) ;
8581
8682if ( shellMinorVersion > 30 ) {
87- WattMeter = GObject . registerClass (
88- { GTypeName : 'WattMeter ' } ,
89- WattMeter
83+ TPWattMeter = GObject . registerClass (
84+ { GTypeName : 'TPWattMeter ' } ,
85+ TPWattMeter
9086 ) ;
9187}
9288
93- function getStatus ( ) {
94- return readFileSafely ( STATUS , "Unknown" ) ;
95- }
96-
97- function getVoltage ( ) {
98- const voltage = parseFloat ( readFileSafely ( VOLTAGE_NOW , - 1 ) ) ;
99- return voltage === - 1 ? voltage : voltage / 1000000 ;
100- }
101-
102- function getCurrent ( ) {
103- const current = parseFloat ( readFileSafely ( CURRENT_NOW , - 1 ) ) ;
104- return current === - 1 ? current : current / 1000000 ;
89+ function getPower ( ) {
90+ const power = parseFloat ( readFileSafely ( POWER_NOW ) , - 1 ) ;
91+ return power === - 1 ? power : power / 1000000 ;
10592}
10693
10794function readFileSafely ( filePath , defaultValue ) {
@@ -128,13 +115,13 @@ function init(metadata) {
128115}
129116
130117function enable ( ) {
131- wattmeter = new WattMeter ( meta ) ;
132- wattmeter . _enable ( ) ;
133- Main . panel . addToStatusArea ( 'wattmeter ' , wattmeter ) ;
118+ tp_wattmeter = new TPWattMeter ( meta ) ;
119+ tp_wattmeter . _enable ( ) ;
120+ Main . panel . addToStatusArea ( 'tp_wattmeter ' , tp_wattmeter , - 1 ) ; //, 'right' );
134121}
135122
136123function disable ( ) {
137- wattmeter . _disable ( ) ;
138- wattmeter . destroy ( ) ;
139- wattmeter = null ;
124+ tp_wattmeter . _disable ( ) ;
125+ tp_wattmeter . destroy ( ) ;
126+ tp_wattmeter = null ;
140127}
0 commit comments