diff --git a/README.md b/README.md index cd20e67..87e18df 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Gnome Shell Extension Inhibit Applet is a gnome shell extension that gives you t This was forked from Raphael Kimmig's Gnome-Presentation-Mode, in hopes to improve it and add more translations. I don't take an credit for the work that he has done on this extension so far. -![Screenshot1](https://github.com/Mystro256/gnome-shell-extension-inhibit-applet/raw/master/Screenshot power.png)![Screenshot2](https://github.com/Mystro256/gnome-shell-extension-inhibit-applet/raw/master/Screenshot a11y.png) +![Screenshot](https://github.com/Mystro256/gnome-shell-extension-inhibit-applet/raw/master/Screenshot.png) ## Installation instructions: Go onto https://extensions.gnome.org and find the extension. It's much easier to install it through that website than manually. diff --git a/Screenshot a11y.png b/Screenshot a11y.png deleted file mode 100644 index 76b2083..0000000 Binary files a/Screenshot a11y.png and /dev/null differ diff --git a/Screenshot power.png b/Screenshot power.png deleted file mode 100644 index 4352b13..0000000 Binary files a/Screenshot power.png and /dev/null differ diff --git a/Screenshot.png b/Screenshot.png new file mode 100644 index 0000000..92670d6 Binary files /dev/null and b/Screenshot.png differ diff --git a/inhibit-applet@alexjnewt.hotmail.com/extension.js b/inhibit-applet@alexjnewt.hotmail.com/extension.js index db2c764..2284728 100644 --- a/inhibit-applet@alexjnewt.hotmail.com/extension.js +++ b/inhibit-applet@alexjnewt.hotmail.com/extension.js @@ -4,7 +4,7 @@ const Lang = imports.lang; const St = imports.gi.St; const Main = imports.ui.main; -const Mainloop = imports.mainloop; +const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; const GnomeSession = imports.misc.gnomeSession; const UserMenu = imports.ui.userMenu; @@ -19,69 +19,67 @@ const SessionIface = { { name: "Uninhibit", inSignature: "u", outSignature: "" } ] }; + let SessionProxy = DBus.makeProxyClass(SessionIface); +let indicationmenu; + +//Icon variables for easy editing/customization: +let DisabledIcon = 'preferences-desktop-screensaver-symbolic'; +let EnabledIcon = 'system-run-symbolic'; +////An alternative icon could be: +//let EnabledIcon = 'action-unavailable-symbolic'; function init(extensionMeta) { - parentMenu = undefined; //Initialize to undefined imports.gettext.bindtextdomain("gnome-shell-extension-inhibitapplet", extensionMeta.path + "/locale"); } +function InhibitMenu() { + this._init.apply(this, arguments); +} + function enable() { - if(parentMenu == undefined){ //Hack to fix issue #1, refresh after 5 seconds - Mainloop.timeout_add_seconds(5, Lang.bind(this, function() { - this.disable(); - this.enable();})); - } - //Check if battery menu is invisible - if(!Main.panel._statusArea.battery.actor.get_paint_visibility()) - { //check for no battery or power device, i.e. no battery menu - if(Main.panel._statusArea.a11y != null) - { //check for no a11y (such as from noa11y extension) - parentMenu = Main.panel._statusArea.a11y; - } - else { //else wise, resort to using the user menu - parentMenu = Main.panel._statusArea.userMenu; - } - } - else { //If all else is good, the battery menu is fine - parentMenu = Main.panel._statusArea.battery; - } - //Add the Inhibit Option - parentMenu._itemSeparator = new PopupMenu.PopupSeparatorMenuItem(); - parentMenu.menu.addMenuItem(parentMenu._itemSeparator); - parentMenu._inhibitswitch = new PopupMenu.PopupSwitchMenuItem(_("Inhibit Suspend"), false); - parentMenu.menu.addMenuItem(parentMenu._inhibitswitch); - parentMenu._inhibit = undefined; - parentMenu._sessionProxy = new SessionProxy(DBus.session, 'org.gnome.SessionManager', '/org/gnome/SessionManager'); + indicationmenu = new InhibitMenu(); + Main.panel.addToStatusArea('inhibit-menu', indicationmenu); +} - parentMenu._onInhibit = function(cookie) { - parentMenu._inhibit = cookie; - }; +InhibitMenu.prototype = { + __proto__: PanelMenu.SystemStatusButton.prototype, - parentMenu._inhibitswitch.connect('toggled', Lang.bind(parentMenu, function() { - if(parentMenu._inhibit) { - parentMenu._sessionProxy.UninhibitRemote(parentMenu._inhibit); - parentMenu._inhibit = undefined; - } else { - try { - parentMenu._sessionProxy.InhibitRemote("inhibitor", - 0, - "inhibit mode", - 9, - Lang.bind(parentMenu, parentMenu._onInhibit)); - } catch(e) { - // + _init: function() { + PanelMenu.SystemStatusButton.prototype._init.call(this, DisabledIcon); + + //Add the Inhibit Option + this._inhibitswitch = new PopupMenu.PopupSwitchMenuItem(_("Inhibit Suspend"), false); + this.menu.addMenuItem(this._inhibitswitch); + this._inhibit = undefined; + this._sessionProxy = new SessionProxy(DBus.session, 'org.gnome.SessionManager', '/org/gnome/SessionManager'); + + this._onInhibit = function(cookie) { + this._inhibit = cookie; + }; + + this._inhibitswitch.connect('toggled', Lang.bind(this, function() { + if(this._inhibit) { + this._sessionProxy.UninhibitRemote(this._inhibit); + this._inhibit = undefined; + this.setIcon(DisabledIcon); + } else { + try { + this._sessionProxy.InhibitRemote("inhibitor", + 0, + "inhibit mode", + 9, + Lang.bind(this, this._onInhibit)); + this.setIcon(EnabledIcon); + } catch(e) { + // + } } - } - })); -} + })); + }, +}; function disable() { - parentMenu._inhibitswitch.destroy(); - parentMenu._itemSeparator.destroy(); - if(parentMenu._inhibit) { - parentMenu._sessionProxy.UninhibitRemote(parentMenu._inhibit); - parentMenu._inhibit = undefined; - } + indicationmenu.destroy(); } diff --git a/inhibit-applet@alexjnewt.hotmail.com/metadata.json b/inhibit-applet@alexjnewt.hotmail.com/metadata.json index 134fa16..03f15bb 100644 --- a/inhibit-applet@alexjnewt.hotmail.com/metadata.json +++ b/inhibit-applet@alexjnewt.hotmail.com/metadata.json @@ -3,5 +3,6 @@ "uuid": "inhibit-applet@alexjnewt.hotmail.com", "name": "Inhibit Applet", "description": "Adds the ability to inhibit suspend/screensaver", -"url": "https://github.com/Mystro256/gnome-shell-extension-inhibit-applet" +"url": "https://github.com/Mystro256/gnome-shell-extension-inhibit-applet", +"version": 5 }