--- /usr/lib/python3/dist-packages/classicmenu_indicator/cmindicator.py 2016-03-21 09:01:48.000000000 -0400 +++ /src/menu/classicmenu_indicator/cmindicator.py 2017-01-15 01:00:24.152370212 -0500 @@ -43,6 +43,7 @@ from gettext import gettext as _ import gettext +import gobject, dbus, dbus.service def _add_menu_item(title, icon, callback, menu): menu_item = Gtk.ImageMenuItem(title) @@ -63,6 +64,30 @@ menu_item = Gtk.SeparatorMenuItem() menu.append(menu_item) +###################################################################### + +mainmenu = None + +from dbus.mainloop.glib import DBusGMainLoop +DBusGMainLoop(set_as_default=True) + +OPATH = "/de/florian_diesch/classicmenu_indicator" +IFACE = "de.florian_diesch.classicmenu_indicator" +BUS_NAME = "de.florian_diesch.classicmenu_indicator" + +class MonitorDBus(dbus.service.Object): + def __init__(self): + bus = dbus.SessionBus() + bus.request_name(BUS_NAME) + bus_name = dbus.service.BusName(BUS_NAME, bus=bus) + dbus.service.Object.__init__(self, bus_name, OPATH) + + @dbus.service.method(dbus_interface=IFACE + ".OpenMenu", + in_signature="", out_signature="") + def OpenMenu(self): + mainmenu.popup(None, None, None, None, 0, Gtk.get_current_event_time()) + +###################################################################### class ClassicMenuIndicator(object): @@ -84,10 +109,15 @@ AppIndicator3.IndicatorStatus.ACTIVE) self.create_all_trees() - self.indicator.set_menu(self.create_menu()) + self.menu = self.create_menu() + + global mainmenu + mainmenu = self.menu + self.indicator.set_menu(self.menu) def run(self): + monitor = MonitorDBus() try: Gtk.main() except KeyboardInterrupt: @@ -309,7 +339,12 @@ self.update_requested = False if recreate_trees: self.create_all_trees() - self.indicator.set_menu(self.create_menu()) + + new_menu = self.create_menu() + global mainmenu + mainmenu = new_menu + + self.indicator.set_menu(new_menu) return False # Don't run again def request_update(self, recreate_trees=False, delayed=True): --- /dev/null 2017-01-12 10:44:29.764006267 -0500 +++ activate-menu 2017-01-15 00:58:03.248370484 -0500 @@ -0,0 +1,6 @@ +#!/bin/bash + +dbus-send --session --print-reply --type=method_call \ + --dest=de.florian_diesch.classicmenu_indicator \ + /de/florian_diesch/classicmenu_indicator \ + de.florian_diesch.classicmenu_indicator.OpenMenu.OpenMenu