よく考えたら半年以上もアプリの更新をしていなかった。
ということで前回の適用を行い clipolix を clipoli と名前を変えて更新!
せっかくなので PyGI 化だけでなく気になっていた部分をチマチマ。
・Windows 版と名前を変える必要は無かったということでで名前変更
・GNOME はドットファイルをヤメたいようなので ~/.config に設定位置変更
・GLib.spawn_command_line_async はチルダを展開しないので自力変換
・GTK+ 必須なのだから gvfs を遠慮なく利用
それと Python の open や subprocess ではなく全部 GLib, Gio で処理。
そうしておけば Vala,Gjs 等の gir を利用する他の言語からでも参考にできるはず。
例の Unity の糞みたいなパネル追加制限は以下のように回避
UNITY = "com.canonical.Unity.Panel" APPNAME = "appname" if UNITY in Gio.Settings.list_schemas(): setting = Gio.Settings.new(UNITY) value = setting.get_strv("systray-whitelist") if not "all" in value: if not APPNAME in value: value.append(APPNAME) setting.set_strv("systray-whitelist", value)
GStrv は PyGI では list のごとく append で文字列を追加できるようです。
こんなにアッサリと制限突破が可能だしまったく無意味だと思う。
つか Unity のためだけにこんな処理を入れるのメンドイぞ!
ついでに。
GtkMenu って for-in 文で GtkMenuItem を取り出せるのね。
#! /usr/bin/python # -*- encoding: utf-8 -*- from gi.repository import Gtk menu = Gtk.Menu() for label in ("HAYABUSA1300", "ZZR1400", "VMAX"): menuitem = Gtk.MenuItem.new_with_label(label) menu.append(menuitem) #for menuitem in menu.get_children(): for menuitem in menu: print menuitem.get_label()
menu.get_children() と結果は同じなのでそうバインドしているのだろう。
実際にアプリケーションを作ってみないと気がつかないことって多いなと。
ということで追加機能とかは何もない。
GNOME3 で使いにくいのは GNOME 3.8 に期待で済ませることにする…