2

我正在尝试:

//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,但我也遇到了错误。

4

2 回答 2

2

你正确,这WNCK是要走的路。 Gdk只能看到您的程序创建的窗口。Wnck使您可以访问由窗口管理器管理的所有窗口。你的方法应该像我在为in 中dock写的一样工作。Puppy LinuxGenie

于 2016-10-03T10:47:55.617 回答
1

I think that with Gdk is imposible. I have tryed (on more time) with Wnck library giving to a C compiler this '-DWNCK_I_KNOW_THIS_IS_UNSTABLE' and works but with a warning: Unhandled action type _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()
于 2016-05-22T23:52:21.543 回答