2016-05-22 15 views
1

Ich versuche, mit:Wie kann ich ein Gdk.Window Task Icon oder Titel bekommen?

//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" 

Aber diese Methoden sind nicht vorhanden. Warum? Ich weiß es nicht. Irgendwelche Vorschläge? Ich habe mit Wnck versucht, aber ich bekomme auch Fehler.

+0

Sie verwenden diese Methoden als Member eines 'TypeHint', der keine Funktionen hat. Das "Gdk.Window" ist wahrscheinlich auch nicht das, was Sie wollen, da das nur dazu dient, ein 'Gtk.Window' zu zeichnen, das das Icon und den Titel selbst behandelt. Sie möchten wirklich Ihr Haupt 'Gtk.Window' nach seinem Symbol und Titel fragen. – oldtechaa

+0

Diese Frage könnte ein [XY-Problem] sein (http://meta.stackexchange.com/a/66378/212851). Was ist das eigentliche Problem, das Sie versuchen zu lösen? –

+0

Entschuldigung, ja ist mein Fehler. Aber ich finde keine Möglichkeit, Icons oder Titel zu bekommen. – txasatonga

Antwort

1

Ich denke, dass mit Gdk unmöglich ist. Ich habe tryed (auf mehr Zeit) mit Wnck Bibliothek dieses ‚-DWNCK_I_KNOW_THIS_IS_UNSTABLE‘ an einen C-Compiler geben und funktioniert, aber mit einer Warnung: Unhandle Aktionstyp _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() 
1

Sie richtig, dass WNCK ist der Weg zu gehen . Gdk kann nur die von Ihrem Programm erstellten Fenster sehen. Wnck gibt Ihnen Zugriff auf alle Fenster, die vom Window Manager verwaltet werden. Ihr Ansatz sollte funktionieren, wie ich das gleiche getan habe mit einem dock Ich schrieb für Puppy Linux in Genie.