Add extension files
This commit is contained in:
parent
b559216406
commit
79fd107332
3 changed files with 85 additions and 0 deletions
34
batime@martin.zurowietz.de/extension.js
Normal file
34
batime@martin.zurowietz.de/extension.js
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
const ExtensionUtils = imports.misc.extensionUtils;
|
||||
const BaTime = ExtensionUtils.getCurrentExtension();
|
||||
const Lang = imports.lang;
|
||||
const Panel = imports.ui.main.panel;
|
||||
|
||||
var BaTimeExtension = new Lang.Class({
|
||||
Name: 'BaTime',
|
||||
_init: function () {
|
||||
this.aggregateMenu = Panel.statusArea['aggregateMenu'];
|
||||
this.originalIndicator = this.aggregateMenu._power;
|
||||
this.customIndicator = new BaTime.imports.power.Indicator();
|
||||
this.aggregateMenu._indicators.replace_child(
|
||||
this.originalIndicator.indicators,
|
||||
this.customIndicator.indicators
|
||||
);
|
||||
},
|
||||
destroy: function () {
|
||||
this.aggregateMenu._indicators.replace_child(
|
||||
this.customIndicator.indicators,
|
||||
this.originalIndicator.indicators
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
let baTime;
|
||||
|
||||
function enable() {
|
||||
baTime = new BaTimeExtension();
|
||||
}
|
||||
|
||||
function disable() {
|
||||
baTime.destroy();
|
||||
baTime = null;
|
||||
}
|
||||
11
batime@martin.zurowietz.de/metadata.json
Normal file
11
batime@martin.zurowietz.de/metadata.json
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
{
|
||||
"shell-version": ["3.28", "3.30"],
|
||||
"uuid": "batime@martin.zurowietz.de",
|
||||
"url": "https://github.com/mzur/gnome-shell-batime",
|
||||
"settings-schema": "org.gnome.shell.extensions.batime",
|
||||
"gettext-domain": "batime",
|
||||
"version": -1,
|
||||
"name": "Battery Time",
|
||||
"description": "Show the remaining time until fully charged/discharged instead of the battery charge in percent in the panel."
|
||||
}
|
||||
40
batime@martin.zurowietz.de/power.js
Normal file
40
batime@martin.zurowietz.de/power.js
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
const Lang = imports.lang;
|
||||
const UPower = imports.gi.UPowerGlib;
|
||||
|
||||
var Indicator = new Lang.Class({
|
||||
Name: 'PowerIndicator',
|
||||
|
||||
Extends: imports.ui.status.power.Indicator,
|
||||
|
||||
// Adapted from _getStatus of the parent.
|
||||
_getTime() {
|
||||
let seconds = 0;
|
||||
|
||||
if (this._proxy.State == UPower.DeviceState.CHARGING) {
|
||||
seconds = this._proxy.TimeToFull;
|
||||
} else if (this._proxy.State == UPower.DeviceState.DISCHARGING) {
|
||||
seconds = this._proxy.TimeToEmpty;
|
||||
} else {
|
||||
// state is one of PENDING_CHARGING, PENDING_DISCHARGING
|
||||
return _("Estimating…");
|
||||
}
|
||||
|
||||
let time = Math.round(seconds / 60);
|
||||
if (time == 0) {
|
||||
// 0 is reported when UPower does not have enough data
|
||||
// to estimate battery life
|
||||
return _("Estimating…");
|
||||
}
|
||||
|
||||
let minutes = time % 60;
|
||||
let hours = Math.floor(time / 60);
|
||||
|
||||
// Translators: this is <hours>:<minutes>
|
||||
return _("%d\u2236%02d").format(hours, minutes);
|
||||
},
|
||||
|
||||
_sync() {
|
||||
this.parent();
|
||||
this._percentageLabel.clutter_text.set_markup('<span size="smaller">' + this._getTime() + '</span>');
|
||||
},
|
||||
});
|
||||
Loading…
Reference in a new issue