2007年12月21日星期五

Tunet的gtk托盘

为了方便地一键上下线,我给命令行的tunet客户端包装了一个gtk托盘小程序,在ubuntu7.10下测试通过。python代码只有40行。
操作非常简单:左键点击托盘文字切换上下线状态,右键退出托盘小程序。托盘文字显式Off时表示不在线(假设没有运行其他tunet进程),此时点击后上线,托盘文字变为On,此时再点击则下线,文字变回Off。
代码如下:

#!/usr/bin/env python
#usage nohup ./trayTunet.py &
import os
import gtk
import egg.trayicon

class TrayTunet:
   
    def __init__(self):
        self.txt = gtk.Label("Off")
        self.icon = egg.trayicon.TrayIcon("Tray for Tunet")
        self.eventbox = gtk.EventBox()
        self.eventbox.add(self.txt)
    self.eventbox.connect("button-press-event", self.clicked)
        self.icon.add(self.eventbox)
        self.icon.show_all()

    def clicked(self,widget,event):
        if event.button == 1:
            if self.txt.get_text() == "Off":
                self.txt.set_text("On")
                self.getOnline()
            else:
                self.txt.set_text("Off")
                self.getOffline()
        elif event.button == 3:
            os.system("kill " + str (os.getpid()))

    def getOnline(self):
        os.system("/home/todwong/bin/tunet -p /home/todwong/bin/bao-wangyuantao -t o > nul &")

    def getOffline(self):
        os.system("ps -C tunet o pid= | grep -m 1 . | xargs kill")

    def start(self):
        gtk.main()

if __name__ == "__main__":
    tray = TrayTunet()
    tray.start()

没有评论: