Ich bin mir ziemlich sicher, dass das unmöglich ist. Der Grund dafür ist, dass Fensterumgebungen wie GNOME erwarten, dass Software dies handhabt, und Softwarehersteller erwarten, dass Fensterumgebungen dies handhaben.
Devilspie ist eine gute Idee, aber es führt einen Mustervergleich durch (dh wenn name == 'google-chrome'). Was passiert also, wenn ich zwei Browser öffne? Sie werden beide in den gleichen Arbeitsbereich verschoben? Ich habe 6x3 = 18 Arbeitsbereiche, jeder mit einer bestimmten Chrominstanz. Es wäre hilfreich, wenn ich diese Programme umbenennen könnte (z. B. "google-chrome1", "google-chrome2" ...), aber ich kann keinen Weg finden, dies zu tun. Also müssen wir wmctrl verwenden.
wmctrl ist ein bisschen besser b / c zusätzlich zur Verwendung von Fenstertiteln. Sie können auch Fenster-IDs verwenden oder einfach das aktuell hervorgehobene Fenster verwenden. Fenster-IDs sind ein Problem, da sie nicht sofort generiert werden. Siehe unten
gedit 1.txt
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
Die Steuerung wird jedoch erst nach dem Beenden von gedit an die Befehlszeile zurückgegeben. Alles, was wir tun müssen, um dies zu umgehen, ist ein &
Zeichen zu setzen
gedit 1.txt &
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
Jetzt wird die Kontrolle in 99,999% der Fälle an die Befehlszeile zurückgegeben, BEVOR die Fenstermanager das Fenster starten und die Fenster-ID nicht gefunden werden kann. Man muss eine sehr komplexe Schleifentechnik einrichten, um zu testen, ob neue Fenster erstellt wurden, und um zu erraten, ob es sich um das gesuchte Fenster handelt.
Das Überprüfen des aktiven Fensters über das Flag :ACTIVE:
hat das gleiche Problem. Es wartet nicht darauf, dass das Programm beendet wird.
wmctrl
scheint mir ein sehr seltsames Programm zu sein. Es scheint, als sei es für Personen ohne Maus konzipiert oder nicht in der Lage, ihre Programme physisch über Arbeitsbereiche zu ziehen.