GdkPixbuf.Pixbuf.new_from_xpm_data

いつのまにか PyGI から

GdkPixbuf.Pixbuf.new_from_xpm_data(str)

が使えるようになっていた。

#! /usr/bin/python
# -*- encoding: utf-8 -*-

from gi.repository import Gtk, Gdk, GLib, GdkPixbuf

ICON = [
"32 32 3 1",
" 	c None",
".	c #000000",
"+	c #FFFFFF",
"                                ",
"   ............                 ",
"   .++++++++++.                 ",
"   .++++++++++. ......          ",
"   .++++++++++. .++++.          ",
"   .++++++++++. .++++.          ",
"   .++++...+++. .++++.          ",
"   .++++....... .++++.          ",
"   .++++.       .++++.          ",
"   .++++.       .++++.          ",
"   .++++.       .++++. ......   ",
"   .++++.       .++++. .++++.   ",
"   .++++.       .++++. .++++.   ",
"   .++++.       .++++. .++++.   ",
"   .++++.       .++++. ......   ",
"   .++++.       .++++.          ",
"   .++++.       .++++. ......   ",
"   .++++.       .++++. .++++.   ",
"   .++++.       .++++. .++++.   ",
"   .++++.       .++++. .++++.   ",
"   .++++.       .++++. .++++.   ",
"   .++++.       .++++. .++++.   ",
"   .++++.       .++++. .++++.   ",
"   .++++.       .++++. .++++.   ",
"   .++++....... .++++. .++++.   ",
"   .++++...+++. .++++. .++++.   ",
"   .++++++++++. .++++. .++++.   ",
"   .++++++++++. .++++. .++++.   ",
"   .++++++++++. .++++. .++++.   ",
"   .++++++++++. .++++. .++++.   ",
"   ............ ...... ......   ",
"                                "]


class XpmWin(Gtk.Window):
    """
        XPM Data Read
    """
    def __init__(self):
        Gtk.Window.__init__(self)
        self.connect("delete-event", Gtk.main_quit)
        # Icon as XPM data
        pixbuf = GdkPixbuf.Pixbuf.new_from_xpm_data(ICON)
        image = Gtk.Image.new_from_pixbuf(pixbuf)
        # ini
        self.add(image)
        self.show_all()

XpmWin()
Gtk.main()

xpmdata

Lubuntu 12.10 でも動くじゃないの。

ちなみに XPM 画像は中身はテキストデータです。
Gimp で画像を XPM にエクスポート(拡張子を xpm に指定する)してテキストエディタで開き上記のように Python の list 中に {} の中身をコピペすればどんな画像もイケる。
ただしテキスト化するのでサイズが巨大になります、アイコンサイズが限界かと。
eog や Shotwell では変換できないのね。

まあとにかく。
前回のクリップボードと合わせコレで clipolix を GTK3 化できる。
早速 GTK3 化してみると Fedora 18, Lubuntu 12.10 共問題なく動作した。

trayicon

のだが。。。

実は Fedora 18 にしてから clipolix はまったく使っていない。
メッセージトレイが GNOME 3.6 で改悪され恐ろしく使いにくくなったので。
マウスカーソルを下端に置いてもラグがあるし出てこない場合も多々ある。

ついでにこのアプリは Unity 初期状態では動かないと今頃知った。
即 Lubuntu に変更してしまったし、月刊 10 程度のアプリだしまあ。

【Ubuntu】 Unityをもっと使いやすく強化する方法 ? Libre Free Gratis! | Libre Free Gratis!

gsettings set com.canonical.Unity.Panel systray-whitelist "['all']"

でイケた。
つかマジで色々と糞だな Unity って、何故使っている人がいるのだ?

とにかく Fedora で使いにくいのはなんとかしたいのだが。
いっそ Gnome Shell エクステンションに変更とかも考えるが…
そうすると GNOME 3 でしか動かないし、Ubuntu には Gjs が入っていないし。

駄目だ、良い案が思い浮かばない。
次の Fedora と Ubuntu に期待して様子見という名の放置かな。