PyXfce
サーバをFedoraCore6にアップデートしたついでに、XfceのPythonバインディングである、PyXfceで遊んでみました。
導入は、以下のとおり。(FedoraCore6, i386)
パッケージマネージャでlibxfce*をすべてインストール後、以下のコマンド投入。
wget http://pyxfce.xfce.org/pyxfce-4.4.0.tar.gz tar xzf pyxfce-4.4.0.tar.gz cd pyxfce-4.4.0 ./configure make make install
デフォルトだと、pygtkとかが/usr/bin/python2の方にしか入っていないので、適当にリンクとかはって対処。
で、"Xfce Desktop Environment"のソースで動作を確認してみる。
現在の動作中のプロセスを表示する。Webブラウザを立ち上げたり、ファイルマネージャを立ち上げたりすると、もりもりボタンが増える。
#! /usr/bin/python2 import pygtk pygtk.require("2.0") import gtk from xfce4 import netk screen = netk.screen_get_default() class Tasklist(gtk.VBox): def __init__(self): global screen gtk.VBox.__init__(self) self._wmap = {} self._windows = screen.get_windows() screen.connect("window-opened", self.opened_cb) screen.connect("window-closed", self.closed_cb) for window in self._windows: self.opened_cb(screen, window) def opened_cb(self, screen, window): pid = window.get_pid() if pid == None: pid = 0 name = window.get_name() w = gtk.Button("%d: %s" % (pid, name)) w.show() self._wmap[window] = w self.pack_start(w, True, True) window.connect("name-changed", self.window_name_changed_cb) def window_name_changed_cb(self, window): name = window.get_name() if window in self._wmap: w = self._wmap[window] w.get_children()[0].set_text(name) def closed_cb(self, screen, window): if window in self._wmap: w = self._wmap[window] w.destroy() tl = Tasklist() tl.show() w = gtk.Window() w.add(tl) w.connect("destroy", lambda x: gtk.main_quit()) w.show() gtk.main()
現在は、ドキュメントが少ないですが(本家"Xfce Desktop Environment"にすらない?私が探せていないだけ?)、おもしろい素材なのではないかと思います。