gtk.StatusIconとpynotifyをくっつける


トレイアイコン上から吹き出しで通知するように。

#!/usr/bin/env python
#-*- coding:utf-8 -*-
import gtk
import pynotify

def tray_activate(event):
	n.show()

def popup_menu(status, button, time):
	menu.popup(None, None, None, button, time)

def menu_pref_blink(event):
	if tray.get_blinking():
		tray.set_blinking(False)
		event.set_active(False)
	else:
		tray.set_blinking(True)	# トレイを点滅させる
		event.set_active(True)	# サブメニューにチェック

def menu_quit(event):
	gtk.main_quit()

# statusicon
tray = gtk.StatusIcon()
tray.set_from_stock(gtk.STOCK_DIALOG_INFO)
tray.set_tooltip('トレイアイコンのテスト')
tray.connect('activate',  tray_activate)
tray.connect('popup-menu', popup_menu)

# pynotify
pynotify.init("test")
n = pynotify.Notification("テスト", "トレイアイコンからニョキッと", gtk.STOCK_DIALOG_INFO)
n.attach_to_status_icon(tray)	# n を tray へくっつける

# menu
menu = gtk.Menu()
item = gtk.ImageMenuItem(gtk.STOCK_PREFERENCES)
submenu = gtk.Menu()
subitem = gtk.CheckMenuItem("点滅")
submenu.append(subitem)
subitem.connect("activate", menu_pref_blink)
item.set_submenu(submenu)
menu.append(item)
item = gtk.SeparatorMenuItem()
menu.append(item)
item = gtk.ImageMenuItem(gtk.STOCK_QUIT)
menu.append(item)
item.connect("activate", menu_quit)
menu.show_all()

gtk.main()