Sono abbastanza certo che sia impossibile farlo. Il motivo è che gli ambienti di finestre come GNOME si aspettano che il software gestisca questo, e i produttori di software si aspettano che gli ambienti di finestre gestiscano questo.
Devilspie è una buona idea, ma fa corrispondere i modelli (ad es. Se name == 'google-chrome'). Quindi cosa succede se apro due browser? Entrambi vengono spostati nello stesso spazio di lavoro? Ho 6x3 = 18 aree di lavoro, ognuna con una particolare istanza di chrome. Sarebbe utile se potessi rinominare questi programmi (ad esempio "google-chrome1", "google-chrome2" ...) ma non riesco a trovare un modo per farlo. Quindi dobbiamo usare wmctrl.
wmctrl è un po 'meglio b / c oltre a usare i titoli delle finestre, puoi anche usare gli ID delle finestre o semplicemente usare la finestra attualmente evidenziata. Gli ID finestra sono una seccatura per ottenere b / c e non vengono generati immediatamente. Vedi sotto
gedit 1.txt
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
ma poi il controllo non viene restituito alla riga di comando fino a quando AFTER non viene chiuso. Tutto ciò che dobbiamo fare per aggirare questo è mettere un &
segno
gedit 1.txt &
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1
ma ora il controllo è, il 99,999% delle volte, restituito alla riga di comando PRIMA che i gestori delle finestre avviino la finestra e non c'è modo di trovare l'id della finestra. Bisogna impostare una tecnica di loop molto complessa per verificare se sono state create nuove finestre e per indovinare se è la finestra che stiamo cercando.
Il controllo della finestra attiva tramite il flag :ACTIVE:
presenta lo stesso problema, non attende il completamento dell'esecuzione del programma.
wmctrl
mi sembra un programma molto strano. Sembra che sia stato progettato per le persone senza mouse o incapaci di trascinare fisicamente i loro programmi nelle aree di lavoro.