起動している自ウインドウを見つける

多重起動防止でまだ詰まっております。
C 言語での方法はボチボチ見つかるけど Python に書き換えると上手くいかない。

色々調べると wnck なんていうモジュールがあることが解った。

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env python
#-*- coding:utf-8 -*-
 
import wnck
 
# デスクトップ取得
w = wnck.screen_get_default()
 
# ディスプレイサイズ
 
print "ディスプレイ幅",w.get_width()
 
print "ディスプレイ高さ",w.get_height()

なんてコトができるというのが解った。
が PyGtk のヘルプにも Python のヘルプにも wnck の項目が見つからない…

GNOME Library – 開発者

Gnome のヘルプ内で Libwnck というのがやっと見つかった。
Opera のページ内検索は便利だね、ドットを押すだけだし。
いや、肝心の検索バーが Linux 版はたまに入力不能になるので…まあこれはいい。
後は man と dir(wnck) と USA Google を使って地味に調べてみた。

PyGTK FAQ Entry

ほーこんなことができるんだ。
ということは

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env python
#-*- coding:utf-8 -*-
 
import gtk
import wnck
 
screen = wnck.screen_get_default()
 
while gtk.events_pending():
    gtk.main_iteration()
 
for window in screen.get_windows():
    name = window.get_name()
    if name.endswith("Y901x"):
        print "起動しています"
        break

なんてコードで現在 Y901x が起動しているかどうかは確認できるわけだ。
同じ名前が存在していたら困るけどまず無いだろう。
とはいえいつのまにか全然違うコードになるかもしれないんだけど…

とにかく後はウインドウに URI を渡す処理だけだ、もう少し。