This is a late response, but i'm just posting this in case someone else ever looks for left click control over gtkstatusicon.
The direct alternative is
statusicon.connect("activate", left_button_click)
This is a sample for trayicon popup menu working with left click instead of the (common) right click.
#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk class TrayIcon(gtk.StatusIcon): def __init__(self): gtk.StatusIcon.__init__(self) self.set_from_icon_name('help-about') self.set_has_tooltip(True) self.set_visible(True) self.connect("activate", self.on_click) def greetme(self,data=None): msg=gtk.MessageDialog(None, gtk.DIALOG_MODAL,gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "Greetings") msg.run() msg.destroy() def on_click(self,data): event=gtk.get_current_event() btn=event.button #this gets the button value of gtk event. time=gtk.get_current_event_time() # required by menu popup. menu = gtk.Menu() menu_item1 = gtk.MenuItem("First Entry") menu.append(menu_item1) menu_item1.connect("activate", self.greetme) menu_item2 = gtk.MenuItem("Quit") menu.append(menu_item2) menu_item2.connect("activate", gtk.main_quit) menu.show_all() menu.popup(None, None, None, btn, time) #button can be hardcoded (i.e 1) but time must be correct. if __name__ == '__main__': tray = TrayIcon() gtk.main()
Also , there is this alternative :
statusicon.connect("button-press-event", button_click)
Bellow sample code raise the same popup menu in gtktrayicon in BOTH right and left click.
#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk class TrayIcon(gtk.StatusIcon): def __init__(self): gtk.StatusIcon.__init__(self) self.set_from_icon_name('help-about') self.set_has_tooltip(True) self.set_visible(True) self.connect("button-press-event", self.on_click) def greetme(self,data=None): msg=gtk.MessageDialog(None, gtk.DIALOG_MODAL,gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "Greetings") msg.run() msg.destroy() def on_click(self,data,event): #event in this case is sent by the status icon connect. btn=event.button #By controlling this event.button value (1-2-3 for left-middle-right click) you can call other functions. time=gtk.get_current_event_time() # required by the popup. menu = gtk.Menu() menu_item1 = gtk.MenuItem("First Entry") menu.append(menu_item1) menu_item1.connect("activate", self.greetme) menu_item2 = gtk.MenuItem("Quit") menu.append(menu_item2) menu_item2.connect("activate", gtk.main_quit) menu.show_all() menu.popup(None, None, None, btn, time) if __name__ == '__main__': tray = TrayIcon() gtk.main()
Hope above code helps. George V.