多重起動防止をどうするか調べていている。
どうやら atom を使う方法があるようだ、ということで
gtk.gdk.atom_intern
とかでググりまくっていたらこんなのを見つけた。
んーということならデスクトップのプロパティは
#!/usr/bin/env python #-*- coding:utf-8 -*- import gtk # デスクトップ取得 w = gtk.gdk.get_default_root_window() # 得られるプロパティのリスト取得 p = gtk.gdk.atom_intern("_NET_SUPPORTED") a = w.property_get(p)[2] # ループで丸ごと表示 for r in a: p = gtk.gdk.atom_intern(r) print r print w.property_get(p)
とすればどのキーワードでどのプロパティが取れるか全部表示できて解りやすい。
とりあえず出力されるタプルの3番目がリストか文字列になっている。
None でないのを展開、又は文字列ならそのまま表示させれば情報が手に入る。
freedesktop.org だから KDE でも問題無いと思う、試していないけど。
#!/usr/bin/env python #-*- coding:utf-8 -*- import gtk # デスクトップ取得 w = gtk.gdk.get_default_root_window() # ディスプレイサイズ p = gtk.gdk.atom_intern("_NET_DESKTOP_GEOMETRY") print "ディスプレイ幅",w.property_get(p)[2][0] print "ディスプレイ高さ",w.property_get(p)[2][1] # ワークエリア p = gtk.gdk.atom_intern("_NET_WORKAREA") area = w.property_get(p) print "ワークエリア:Left",w.property_get(p)[2][0] print "ワークエリア:Top",w.property_get(p)[2][1] print "ワークエリア:Width",w.property_get(p)[2][2] print "ワークエリア:Height",w.property_get(p)[2][3] # 仮想デスクトップの数 p = gtk.gdk.atom_intern("_NET_NUMBER_OF_DESKTOPS") print "仮想デスクトップの数",w.property_get(p)[2][0] # 現在の仮想デスクトップ位置 p = gtk.gdk.atom_intern("_NET_CURRENT_DESKTOP") print "現在の仮想デスクトップ位置",w.property_get(p)[2][0] # 現在の仮想デスクトップ名 p = gtk.gdk.atom_intern("_NET_DESKTOP_NAMES") print "現在の仮想デスクトップ名",w.property_get(p)[2],"\n"
_NET_CLIENT_LIST で表示されているウインドウ ID
_NET_ACTIVE_WINDOW でアクティブウインドウ ID
が得られるんだがコレを上手く使えないかな?いまココ