Skip to content

Commit

Permalink
New release v19
Browse files Browse the repository at this point in the history
Enable support for GNOME 41
Ship example code for top-level battery indicators, but leave it
disabled for now.
Update README.md
Update prefs.js, silence warning
  • Loading branch information
X3n0m0rph59 committed Nov 10, 2021
1 parent 52a4363 commit 2aba11d
Show file tree
Hide file tree
Showing 4 changed files with 135 additions and 32 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Eruption Profile Switcher

A GNOME 40 Shell extension that can be used to switch between different
A GNOME 4x Shell extension that can be used to switch between different
slots and profiles of the [`Eruption`](https://github.com/X3n0m0rph59/eruption)
Linux input and LED driver for keyboards, mice and other devices.

Expand Down
151 changes: 124 additions & 27 deletions extension.js
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,8 @@ var activeSlot,
savedProfile,
enableSfx, enableNetFxAmbient, brightness = 100,
deviceStatus = [],
status_poll_source;
status_poll_source,
status_poll_source_toplevel;

var settings;

Expand Down Expand Up @@ -764,6 +765,38 @@ var ProfileMenuItem = GObject.registerClass(
}
);

function _batteryLevelIcon(battery_level) {
var icon_name = "battery-missing-symbolic";

if (battery_level !== undefined ) {
if (battery_level >= 100) {
icon_name = "battery-level-100-symbolic";
} else if (battery_level >= 90) {
icon_name = "battery-level-90-symbolic";
} else if (battery_level >= 80) {
icon_name = "battery-level-80-symbolic";
} else if (battery_level >= 70) {
icon_name = "battery-level-70-symbolic";
} else if (battery_level >= 60) {
icon_name = "battery-level-60-symbolic";
} else if (battery_level >= 50) {
icon_name = "battery-level-50-symbolic";
} else if (battery_level >= 40) {
icon_name = "battery-level-40-symbolic";
} else if (battery_level >= 30) {
icon_name = "battery-level-30-symbolic";
} else if (battery_level >= 20) {
icon_name = "battery-level-20-symbolic";
} else if (battery_level >= 10) {
icon_name = "battery-level-10-symbolic";
} else {
icon_name = "battery-empty-symbolic";
}
}

return icon_name;
}

let EruptionMenuButton = GObject.registerClass(
class ProfilesMenuButton extends PanelMenu.Button {
_init() {
Expand Down Expand Up @@ -1157,32 +1190,9 @@ let EruptionMenuButton = GObject.registerClass(
// battery level indicator
if (settings.get_boolean("show-battery-level")) {
const battery_level = device.status["battery-level-percent"];
if (battery_level !== undefined ) {
var icon_name = "battery-missing-symbolic";

if (battery_level >= 100) {
icon_name = "battery-level-100-symbolic";
} else if (battery_level >= 90) {
icon_name = "battery-level-90-symbolic";
} else if (battery_level >= 80) {
icon_name = "battery-level-80-symbolic";
} else if (battery_level >= 70) {
icon_name = "battery-level-70-symbolic";
} else if (battery_level >= 60) {
icon_name = "battery-level-60-symbolic";
} else if (battery_level >= 50) {
icon_name = "battery-level-50-symbolic";
} else if (battery_level >= 40) {
icon_name = "battery-level-40-symbolic";
} else if (battery_level >= 30) {
icon_name = "battery-level-30-symbolic";
} else if (battery_level >= 20) {
icon_name = "battery-level-20-symbolic";
} else if (battery_level >= 10) {
icon_name = "battery-level-10-symbolic";
} else {
icon_name = "battery-empty-symbolic";
}

if (battery_level !== undefined) {
const icon_name = _batteryLevelIcon(device.status["battery-level-percent"]);

const icon = new St.Icon({
icon_name: icon_name,
Expand All @@ -1199,6 +1209,7 @@ let EruptionMenuButton = GObject.registerClass(

indicators += 1;
}

}

if (indicators > 0) {
Expand Down Expand Up @@ -1424,6 +1435,87 @@ let EruptionMenuButton = GObject.registerClass(
}
);

/* let IndicatorMenuButton = GObject.registerClass(
class IndicatorMenuButton extends PanelMenu.Button {
_init() {
this._device = 1;
super._init(0.0, _(`${_getDeviceName()}`));
let hbox = new St.BoxLayout({
style_class: "panel-status-menu-box"
});
const icon = new St.Icon({
icon_name: "battery-missing-symbolic",
style_class: "system-status-icon"
});
const level_label = new St.Label({
style_class: "indicator-item-label",
text: ``,
});
this.icon = icon;
this.label = level_label;
hbox.add_child(icon);
// battery level indicator
//if (settings.get_boolean("show-battery-level") && deviceStatus[this._device] !== undefined) {
if (deviceStatus[this._device] !== undefined) {
const battery_level = deviceStatus[this._device].status["battery-level-percent"];
const icon_name = _batteryLevelIcon(deviceStatus[this._device].status["battery-level-percent"]);
const icon = new St.Icon({
icon_name: icon_name,
style_class: "system-status-icon"
});
const level_label = new St.Label({
style_class: "indicator-item-label",
text: `${battery_level}%`,
});
this.icon = icon;
this.label = level_label;
indicators += 1;
}
//}
this.add_child(hbox);
}
update() {
const battery_level = deviceStatus[this._device].status["battery-level-percent"];
const icon_name = _batteryLevelIcon(deviceStatus[this._device].status["battery-level-percent"]);
this.icon.icon_name = icon_name;
this.label.text = `${battery_level}%`;
}
_getDeviceName() {
return "Device";
}
}
); */

function _placeIndicators() {
// battery level indicator
/* if (settings.get_boolean("show-battery-level")) {
const indicatorMenuButton = new IndicatorMenuButton(1);
Main.panel.addToStatusArea("eruption-indicators", indicatorMenuButton, 2, "right");
let status_poll_source_toplevel = Mainloop.timeout_add(STATUS_POLL_TIMEOUT_MILLIS, () => {
indicatorMenuButton.update();
return true; // keep timer enabled
});
} */
}

class ProfileSwitcherExtension {
constructor() {}

Expand All @@ -1432,9 +1524,14 @@ class ProfileSwitcherExtension {

eruptionMenuButton = new EruptionMenuButton();
Main.panel.addToStatusArea("eruption-menu", eruptionMenuButton, 1, "right");

_placeIndicators();
}

disable() {
Mainloop.source_remove(status_poll_source_toplevel);
status_poll_source_toplevel = null;

Mainloop.source_remove(status_poll_source);
status_poll_source = null;

Expand Down
6 changes: 4 additions & 2 deletions metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@
"settings-schema": "org.gnome.shell.extensions.eruption-profile-switcher",
"shell-version": [
"40.beta",
"40"
"40",
"41",
"41.1"
],
"url": "https://github.com/X3n0m0rph59/eruption-profile-switcher",
"uuid": "eruption-profile-switcher@x3n0m0rph59.org",
"version": 18
"version": 19
}
8 changes: 6 additions & 2 deletions prefs.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,12 +97,16 @@ const MyBuilderScope = GObject.registerClass({
on_show_battery_level_toggled(w) {
settings.set_boolean("show-battery-level", w.get_active());

eruptionMenuButton.populateMenu();
if (eruptionMenuButton) {
eruptionMenuButton.populateMenu();
}
}

on_show_signal_strength_toggled(w) {
settings.set_boolean("show-signal-strength", w.get_active());

eruptionMenuButton.populateMenu();
if (eruptionMenuButton) {
eruptionMenuButton.populateMenu();
}
}
});

0 comments on commit 2aba11d

Please sign in to comment.