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