From fb8ad70db61584e63217c2bbaa6935d73d472e05 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Tue, 30 Jul 2013 13:17:00 +0200 Subject: [PATCH] Remove alternative-status-menu extension As part of the new unified status menu, the old status menu was reworked considerably in 3.9.5, and the extension as it was written does not make sense. If hibernation is needed, it should be added (through another extension) in the shutdown dialog. --- README | 6 - configure.ac | 5 +- .../alternative-status-menu/Makefile.am | 4 - .../alternative-status-menu/extension.js | 172 ------------------ .../alternative-status-menu/metadata.json.in | 10 - ...ons.alternative-status-menu.gschema.xml.in | 14 -- .../alternative-status-menu/stylesheet.css | 3 - 7 files changed, 2 insertions(+), 212 deletions(-) delete mode 100644 extensions/alternative-status-menu/Makefile.am delete mode 100644 extensions/alternative-status-menu/extension.js delete mode 100644 extensions/alternative-status-menu/metadata.json.in delete mode 100644 extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in delete mode 100644 extensions/alternative-status-menu/stylesheet.css diff --git a/README b/README index bb41cbf3..d96ff6c2 100644 --- a/README +++ b/README @@ -24,12 +24,6 @@ alternate-tab Lets you use classic Alt+Tab (window-based instead of app-based) in GNOME Shell. -alternative-status-menu - - For those who want a power off item visible at all the time, replaces GNOME Shell -status menu with one featuring separate Suspend and Power Off. Adds the ability to -hibernate as well. - apps-menu Lets you reach an application using gnome 2.x style menu on the panel. diff --git a/configure.ac b/configure.ac index ecf5963b..12aa6538 100644 --- a/configure.ac +++ b/configure.ac @@ -28,7 +28,7 @@ AC_SUBST([SHELL_VERSION]) dnl keep this in alphabetic order CLASSIC_EXTENSIONS="apps-menu places-menu alternate-tab launch-new-instance window-list" -DEFAULT_EXTENSIONS="$CLASSIC_EXTENSIONS alternative-status-menu drive-menu windowsNavigator workspace-indicator" +DEFAULT_EXTENSIONS="$CLASSIC_EXTENSIONS drive-menu windowsNavigator workspace-indicator" ALL_EXTENSIONS="$DEFAULT_EXTENSIONS auto-move-windows example native-window-placement systemMonitor user-theme xrandr-indicator" AC_SUBST(CLASSIC_EXTENSIONS, [$CLASSIC_EXTENSIONS]) AC_SUBST(ALL_EXTENSIONS, [$ALL_EXTENSIONS]) @@ -71,7 +71,7 @@ for e in $enable_extensions; do [AC_MSG_WARN([gnome-desktop-3.0 not found, disabling xrandr-indicator])]) ;; dnl keep this in alphabetic order - alternate-tab|alternative-status-menu|apps-menu|auto-move-windows|drive-menu|example|launch-new-instance|native-window-placement|places-menu|user-theme|window-list|windowsNavigator|workspace-indicator) + alternate-tab|apps-menu|auto-move-windows|drive-menu|example|launch-new-instance|native-window-placement|places-menu|user-theme|window-list|windowsNavigator|workspace-indicator) ENABLED_EXTENSIONS="$ENABLED_EXTENSIONS $e" ;; *) @@ -85,7 +85,6 @@ dnl Please keep this sorted alphabetically AC_CONFIG_FILES([ data/Makefile extensions/alternate-tab/Makefile - extensions/alternative-status-menu/Makefile extensions/apps-menu/Makefile extensions/auto-move-windows/Makefile extensions/drive-menu/Makefile diff --git a/extensions/alternative-status-menu/Makefile.am b/extensions/alternative-status-menu/Makefile.am deleted file mode 100644 index 8823849d..00000000 --- a/extensions/alternative-status-menu/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -EXTENSION_ID = alternative-status-menu - -include ../../extension.mk -include ../../settings.mk diff --git a/extensions/alternative-status-menu/extension.js b/extensions/alternative-status-menu/extension.js deleted file mode 100644 index 4285edd6..00000000 --- a/extensions/alternative-status-menu/extension.js +++ /dev/null @@ -1,172 +0,0 @@ -/* -*- mode: js2 - indent-tabs-mode: nil - js2-basic-offset: 4 -*- */ - -const Gio = imports.gi.Gio; -const GLib = imports.gi.GLib; -const Lang = imports.lang; -const Mainloop = imports.mainloop; -const St = imports.gi.St; - -const BoxPointer = imports.ui.boxpointer; -const Main = imports.ui.main; -const PopupMenu = imports.ui.popupMenu; - -const Gettext = imports.gettext.domain('gnome-shell-extensions'); -const _ = Gettext.gettext; - -const ExtensionUtils = imports.misc.extensionUtils; -const Me = ExtensionUtils.getCurrentExtension(); -const Convenience = Me.imports.convenience; - -const LOCK_ENABLED_KEY = 'lock-enabled'; - -let extension; - -// Need to reimplement here the missing bits from LoginManager - -function loginManager_hibernate() { - if (this._proxy) { - // systemd path - this._proxy.call("Hibernate", - GLib.Variant.new('(b)', [true]), - Gio.DBusCallFlags.NONE, - -1, null, null); - } else { - // Can't do in ConsoleKit - this.emit('prepare-for-sleep', true); - this.emit('prepare-for-sleep', false); - } -} - -function loginManager_canHibernate(asyncCallback) { - if (this._proxy) { - // systemd path - this._proxy.call("CanHibernate", - null, - Gio.DBusCallFlags.NONE, - -1, null, function(proxy, asyncResult) { - let result, error; - - try { - result = proxy.call_finish(asyncResult).deep_unpack(); - } catch(e) { - error = e; - } - - if (error) - asyncCallback(false); - else - asyncCallback(result[0] != 'no'); - }); - } else { - Mainloop.idle_add(Lang.bind(this, function() { - asyncCallback(false); - return false; - })); - } -} - -function statusMenu_updateHaveHibernate() { - loginManager_canHibernate.call(this._loginManager, Lang.bind(this, - function(result) { - this._haveHibernate = result; - this._updateSuspendOrPowerOff(); - })); -} - -function statusMenu_updateSuspendOrPowerOff() { - this._suspendOrPowerOffItem.actor.hide(); - - extension.suspendItem.actor.visible = this._haveSuspend && extension.settings.get_boolean('allow-suspend'); - extension.hibernateItem.actor.visible = this._haveHibernate && extension.settings.get_boolean('allow-hibernate'); - extension.powerOffItem.actor.visible = this._haveShutdown; -} - -function onSuspendActivate(item) { - Main.overview.hide(); - - this.menu.close(BoxPointer.PopupAnimation.NONE); - this._loginManager.suspend(); -} - -function onHibernateActivate(item) { - Main.overview.hide(); - - this.menu.close(BoxPointer.PopupAnimation.NONE); - loginManager_hibernate.call(this._loginManager); -} - -const Extension = new Lang.Class({ - Name: 'AlternativeStatusMenu.Extension', - - _init: function() { - this.suspendItem = null; - this.hibernateItem = null; - this.powerOffItem = null; - - Convenience.initTranslations(); - this.settings = Convenience.getSettings(); - }, - - enable: function() { - let statusMenu = Main.panel.statusArea.userMenu; - - let children = statusMenu.menu._getMenuItems(); - let index = children.length; - - /* find the old entry */ - for (let i = children.length - 1; i >= 0; i--) { - if (children[i] == statusMenu._suspendOrPowerOffItem) { - index = i; - break; - } - } - - /* add the new entries */ - this.suspendItem = new PopupMenu.PopupMenuItem(_("Suspend")); - this.suspendItem.connect('activate', Lang.bind(statusMenu, onSuspendActivate)); - - this.hibernateItem = new PopupMenu.PopupMenuItem(_("Hibernate")); - this.hibernateItem.connect('activate', Lang.bind(statusMenu, onHibernateActivate)); - - this.powerOffItem = new PopupMenu.PopupMenuItem(_("Power Off")); - this.powerOffItem.connect('activate', Lang.bind(statusMenu, function() { - this._session.ShutdownRemote(); - })); - - /* insert the entries at the found position */ - statusMenu.menu.addMenuItem(this.suspendItem, index); - statusMenu.menu.addMenuItem(this.hibernateItem, index + 1); - statusMenu.menu.addMenuItem(this.powerOffItem, index + 2); - - this._openStateChangedId = statusMenu.menu.connect('open-state-changed', function() { - statusMenu_updateHaveHibernate.call(statusMenu); - }); - - this._previousUpdateSuspendOrPowerOff = statusMenu._updateSuspendOrPowerOff; - statusMenu._updateSuspendOrPowerOff = statusMenu_updateSuspendOrPowerOff; - - this._settingsChangedId = this.settings.connect('changed', function() { - statusMenu._updateSuspendOrPowerOff(); - }); - }, - - disable: function() { - let statusMenu = Main.panel.statusArea.userMenu; - - this.suspendItem.destroy(); - this.hibernateItem.destroy(); - this.powerOffItem.destroy(); - - statusMenu.menu.disconnect(this._openStateChangedId); - this.settings.disconnect(this._settingsChangedId); - - statusMenu._updateSuspendOrPowerOff = this._previousUpdateSuspendOrPowerOff; - statusMenu._updateSuspendOrPowerOff(); - }, -}); - -// Put your extension initialization code here -function init(metadata) { - return (extension = new Extension()); -} - diff --git a/extensions/alternative-status-menu/metadata.json.in b/extensions/alternative-status-menu/metadata.json.in deleted file mode 100644 index d0972698..00000000 --- a/extensions/alternative-status-menu/metadata.json.in +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extension-id": "@extension_id@", - "uuid": "@uuid@", - "settings-schema": "@gschemaname@", - "gettext-domain": "@gettext_domain@", - "name": "Alternative Status Menu", - "description": "Replaces GNOME Shell Status Menu with one showing Suspend/Hibernate and Power Off as separate items.", - "shell-version": [ "@shell_current@" ], - "url": "@url@" -} diff --git a/extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in b/extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in deleted file mode 100644 index b6d8f608..00000000 --- a/extensions/alternative-status-menu/org.gnome.shell.extensions.alternative-status-menu.gschema.xml.in +++ /dev/null @@ -1,14 +0,0 @@ - - - - true - <_summary>Enable suspending - <_description>Control the visibility of the Suspend menu item - - - true - <_summary>Enable hibernating - <_description>Control the visibility of the Hibernate menu item - - - diff --git a/extensions/alternative-status-menu/stylesheet.css b/extensions/alternative-status-menu/stylesheet.css deleted file mode 100644 index fd502bc5..00000000 --- a/extensions/alternative-status-menu/stylesheet.css +++ /dev/null @@ -1,3 +0,0 @@ -.popup-alternating-menu-item:alternate { - font-weight: normal !important; -}