我正在尝试:
//valac *.gs --pkg gtk+-3.0
init
Gtk.init(ref args)
var ventana= new win()
ventana.inicio()
Gtk.main()
class win:Gtk.Window
def inicio()
var button= new Gtk.Button()
button.clicked.connect(resizer)
this.add(button)
this.show_all()
def resizer()
var a=Gdk.Screen.get_default().get_window_stack()
a.foreach(allwin)
def allwin (w:Gdk.Window)
var a=w.get_type_hint()
if a!= Gdk.WindowTypeHint.DESKTOP
w.resize(200,200)
var iconpix= w.get_icon() //don't exist // [changed]
var title= w.get_title() //don't exist // [changed]
print "window"
但这些方法不存在。为什么?我不知道。 有什么建议?我尝试过Wnck,但我也遇到了错误。
答案 0 :(得分:2)
您认为WNCK
是要走的路。 Gdk
只能看到您的程序创建的窗口。 Wnck
使您可以访问由Window Manager管理的所有窗口。你的方法应该像我在dock
中为Puppy Linux
写的Genie
一样。
答案 1 :(得分:1)
我认为Gdk是不可能的。我已经尝试(在更多时间)Wnck库给C编译器这个'-DWNCK_I_KNOW_THIS_IS_UNSTABLE'并且有效但有警告:未处理的动作类型_OB_WM_ACTION_UNDECORATE
//valac *.gs --pkg gtk+-3.0 --pkg libwnck-3.0 -X '-DWNCK_I_KNOW_THIS_IS_UNSTABLE'
init
Gtk.init(ref args)
var ventana= new win()
ventana.inicio()
ventana.resizer()
Gtk.main()
class win:Gtk.Window
won:weak GLib.List of Wnck.Window
def inicio()
var button= new Gtk.Button()
button.clicked.connect(resizer)
this.add(button)
this.show_all()
def resizer()
won= Wnck.Screen.get_default().get_windows()
won.foreach(allwin)
def allwin(w:Wnck.Window)
if w.is_skip_tasklist() or w.is_skip_pager()
pass
else
print w.get_name()