Hallo,
nach langer Zeit passivem Lesens ist das mein erster Beitrag hier im Forum und er ist auch gleich eine Frage:
Im Moment suche ich (verzweifelt) nach Informationen wie ich mit Python (Linux, Gnome)
- ein externes Programm starten kann (z.B. Evolution)
- danach die Kontrolle über die Anzeigeformen (versteckt/sichtbar) des Programmfensters dieses Programmes erhalten kann.
Wem das bekannt vorkommt: Alltray kann das schon, das Problem ist aber dass ich in einem Programm volle Kontrolle über ein Statusicon (wechselnd je nach Mail-ungelesen-Status) UND Anzeigestatus haben möchte.
Bei bisherigen Recherchen bin ich mittlerweile über Xlib und Xlib.protocol.event.ClientMessage gestolpert, kann aber absolut nichts finden wie man z.B. das externe Programm so starten kann dass man nachfolgend Zugriff auf die Properties hat.
Wäre über jede Hilfe (Denkanstoß, Link, geeignetere Suchbegriffe,...) dankbar.
Viele Grüsse und schönes WE
Programm starten + Kontrolle über Fensterproperties
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Hm,
du solltest dafür am besten die API des entsprechenden Programmes nutzen.
Ansonsten schlage ich dir ooxcb vor, damit kannst du Informationen über Fenster bekommen, sie verschieben und so weiter.
Gruß
du solltest dafür am besten die API des entsprechenden Programmes nutzen.
Ansonsten schlage ich dir ooxcb vor, damit kannst du Informationen über Fenster bekommen, sie verschieben und so weiter.
Gruß
Vielen Dank,
ooxcb kannte ich nicht, werde ich mir mal ansehen, dankeschön
Wie ist das gemeint? Am Fall "Evolution" (oder beliebigen GTK/Gnome-Programmen) - bisher dachte ich dass ich da direkt mit GTK arbeiten sollte?du solltest dafür am besten die API des entsprechenden Programmes nutzen.
ooxcb kannte ich nicht, werde ich mir mal ansehen, dankeschön
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Naja wenn du so Zeug wie Minimierung ins Systray beeinflussen möchtest ist es sinnvoller die entsprechende API-Funktion zu verwenden... ganz einfach weil bei den meisten Programmen zB "Minimieren ins Systray" nicht nur aus "Minimieren ins Systray" besteht, sondern es wird zB das Verhalten des Programmes angepasst. Wenn das Programm aber davon nichts weiß,...
Richtung Xlib war scheinbar gar nicht so verkehrt: http://www.daa.com.au/pipermail/pygtk/2 ... 17186.html.
Ist aber scheinbar nicht so einfach mehr Informationen über die Anwendung in Python zu finden (Minimize/Maximize-Events)...werde weitersuchen
Ist aber scheinbar nicht so einfach mehr Informationen über die Anwendung in Python zu finden (Minimize/Maximize-Events)...werde weitersuchen
Für alle die ein ähnliches Problem haben könnten - bin ein Stück weiter gekommen, mit folgendem Codeschnipsel wird Gedit in die Taskleiste (noch NICHT Notification-Area) minimiert und nach Tastendruck wiederhergestellt (Anwendung: Gedit starten, dann Terminal starten, Script starten):
Jetzt muss ich noch rausfinden wie man das Erscheinen in der Taskleiste abstellt und warum das Ganze nur funktioniert wenn das Terminal+Script erst NACH Gedit gestartet werden...
Code: Alles auswählen
#
import pygtk
pygtk.require('2.0')
import gtk
import wnck
def main():
pattern = "gedit"
root = gtk.gdk.get_default_root_window()
# Process pending gtk+ events so that wnck can find out about existing windows.
while gtk.events_pending():
gtk.main_iteration()
xids = root.property_get("_NET_CLIENT_LIST")[2]
for xid in xids:
w=gtk.gdk.window_foreign_new(long(xid))
if(not w):
continue
name=w.property_get('WM_NAME')[2].lower()
print name
if name.endswith(pattern):
print "FOUND: " + name + " " + str(xid)
try:
w.iconify()
raw_input("Press Enter to terminate")
w.deiconify()
except:
print "ERROR"
if __name__ == '__main__':
main()
Zuletzt geändert von cywhale am Mittwoch 28. Oktober 2009, 20:57, insgesamt 1-mal geändert.