多重起動防止をどうするか調べていている。
どうやら atom を使う方法があるようだ、ということで
gtk.gdk.atom_intern
とかでググりまくっていたらこんなのを見つけた。
んーということならデスクトップのプロパティは
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/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 でも問題無いと思う、試していないけど。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #!/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
が得られるんだがコレを上手く使えないかな?いまココ