clipoli 2.0.0

よく考えたら半年以上もアプリの更新をしていなかった。
ということで前回の適用を行い 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 に期待で済ませることにする…