Ubuntu / Gnome: aprire un'applicazione in uno spazio di lavoro specifico

Come si dice che un'applicazione si apra in uno spazio di lavoro specifico?


Ulteriori informazioni:

Mi piace avere il mio ID C ++ nello spazio di lavoro 2, il mio IDE Java nello spazio di lavoro 3 e la mia email, browser e varie nello spazio di lavoro quattro. Utilizzo anche uno script di shell che viene eseguito al momento della logging:

#!/bin/bash gnome-terminal & # WS 1 netbeans-6-9-1 & # WS2 qtcreator-2-0-1 & # WS 3 firefox & # WS 4 thunderbird & # WS 4 

Naturalmente tutto si apre nell'area di lavoro corrente … C'è un modo per specificare quale spazio di lavoro dovrebbe iniziare each command?

Grazie in anticipo!

    È ansible utilizzare devilspie per impostare le regole per le quali andare su quale spazio di lavoro.

    Vedere i documenti per un esempio di esattamente quello.

    Ma MrStatic ha anche un buon suggerimento. Provare prima che tu abbia bisogno del tuo script di shell.

    Se hai bisogno di essere un command che puoi utilizzare in uno script di shell, guarda wmctrl .

    Ho provato lo strumento wmctrl e wmctrl scoperto che la soluzione più semplice che ha funzionato per me è spostare la window con il seguente command:

     wmctrl -r <WindowName> -t <WorkspaceNumber> 

    Si noti che i numbers di spazio di lavoro iniziano da 0. Ultimo ansible passare all'area di lavoro preferita con il command:

     wmctrl -s <WorkspaceNumber> 

    Sono abbastanza sicuro che sia imansible da fare. Il motivo per cui si intende che gli ambienti finali come GNOME prevedono di gestire il software e che i produttori di software si aspettano che gli ambienti di finitura siano in grado di gestire questo problema.

    Devilspie è una buona idea, ma corrisponde il model (ad esempio se nome == 'google-chrome'). Cosa succede se apro due browser? Entrambi si trasferiscono nello stesso spazio di lavoro? Ho 6×3 = 18 aree di lavoro, ognuna con una particolare istanza di cromo. Sarebbe utile se riesco a rinominare questi programmi (cioè "google-chrome1", "google-chrome2" …) ma non riesco a trovare un modo per farlo. Quindi dobbiamo usare wmctrl.

    wmctrl è un po 'più b / c oltre ad utilizzare i titoli delle windows, è ansible anche utilizzare gli ID di window o semplicemente utilizzare la window attualmente evidenziata. Gli ID della window sono un dolore per get b / c non sono immediatamente generati. 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 il controllo non viene restituito alla row di command finché non esce da AFTER gedit. Tutto quello 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 è, 99,999% del tempo, tornato alla row di command PRIMA che i gestori di window lancia la window e non c'è modo di trovare l'ID window. Bisogna impostare una tecnica di ciclo molto complessa per verificare se sono state create nuove windows e per indovinare se sia la window che cerchiamo.

    Controllo della window triggers tramite la bandiera :ACTIVE: ha lo stesso problema, non aspetta che il programma finisca.

    wmctrl mi colpisce come un programma molto strano. Sembra che sia stato progettato per le persone senza un mouse, o non è in grado di trascinare fisicamente i propri programmi in aree di lavoro.