Esiste un comando per accedere a uno spazio di lavoro specifico?

21

Sto provando a creare una lista rapida nel launcher di Workspace Switcher che consente di passare rapidamente a un determinato spazio di lavoro. (Il mio amico a volte usa il mio computer e non mi piace le scorciatoie da tastiera, quindi voglio aiutarlo.)

Quindi c'è un comando che si può digitare in un terminale che impone di focalizzare su un determinato spazio di lavoro?

    
posta Leron 07.05.2011 - 23:58

4 risposte

31

Puoi utilizzare wmctrl .

Comandi di base:
wmctrl -d per mostrare tutte le tue aree di lavoro.
wmctrl -s <workspace_name> per passare a uno spazio di lavoro specifico.

Se usi Compiz, dovrai fare un trucco perché Compiz "workspace" sono in realtà Viewport di un singolo Workspace.

Istruzioni per i trucchi

Verifica l'output di wmctrl -d Ad esempio, il mio è:

0  * DG: 4098x2304  VP: 1366,0  WA: 0,23 1366x745  N/A  

Questo significa che in realtà ho uno spazio di lavoro di 4098 x 2304 invece di quello che "penso" di avere (nove "spazi di lavoro", 3 x 3).
Ero a quello che doveva essere "spazio di lavoro" 2, ma in realtà ero a viewport (VP) 1366,0 (4098/3 = 1366), come mostrato dall'output sopra.

Ecco come funziona: prendiamo l'intero spazio di lavoro e dividiamo per il numero di "aree di lavoro" che "pensiamo" che abbiamo. Nel mio caso: 4098/3 = 1366 e 2304/3 = 768.

Se voglio andare al mio "workspace" 1, il comando è:

wmctrl -o 0,0

Quindi, se voglio andare al mio "workspace" 4, il comando è:

wmctrl -o 0,768

Se voglio andare al mio "workspace" 8, il comando è:

wmctrl -o 1366,1536

Se voglio andare al mio "workspace" 9, il comando è:

wmctrl -o 2732,1536

Capito? ; -)

Il flag -o "tronca" i loro valori. In altre parole cambia lo "spazio di lavoro" a cui appartiene il pixel effettivo. I seguenti sono equivalenti:

wmctrl -o 0,0
wmctrl -o 1365,767
    
risposta data desgua 08.05.2011 - 03:34
7

È estremamente semplice ottenere ciò che vuoi con xdotool , che ha più opzioni per la gestione di diversi spazi di lavoro (noti anche come "desktop" nella documentazione del programma). Trovo che sia molto interessante e creativo stringere insieme i comandi da man xdotool ; i comandi che ho formulato sotto potrebbero essere utili negli script.

Nota: con alcuni gestori di finestre o se stai utilizzando compiz , potresti dover utilizzare xdotool comandi come set_desktop_viewport e get_desktop_viewport . Potrebbe essere necessario specificare i comandi in un modo diverso come desgua suggerisce sopra, ma per me set_desktop e% co_de I comandi% si sono dimostrati più utili su un sistema non-compiz.)

( La soluzione è molto utile per gli utenti di Xubuntu / Lubuntu, o per quelli che non eseguono il compiz, ecc. )

Per elencare il numero di spazi di lavoro correnti, inserire

xdotool get_num_desktops

I seguenti comandi funzioneranno solo se hai almeno un altro spazio di lavoro.

Per cambiare lo stato attivo nell'area di lavoro 1, inserisci

xdotool set_desktop 1 

Quindi per tornare allo spazio di lavoro predefinito, inserire

xdotool set_desktop 0

Lo spazio di lavoro deve essere specificato come ultimo valore nel comando (1 o 2 o 3, ecc.).

Per trovare il numero dell'area di lavoro in cui ti trovi attualmente, puoi utilizzare

xdotool get_desktop

Questi comandi potrebbero essere usati negli script e dovrebbero essere molto utili per ottenere ciò che tu.

Per come passare le applicazioni a un desktop particolare, vedere la mia risposta qui:

Per ulteriori opzioni utili disponibili per la commutazione dell'area di lavoro, consulta set_desktop_for_window .

    
risposta data user76204 12.01.2013 - 20:46
1

Ho implementato uno script che fa ciò che vuoi. Eccolo: link

Funziona davvero come descritto nel post di Desgua. Ha anche la capacità di inviare finestre ad altri spazi di lavoro.

    
risposta data Norswap 12.01.2013 - 19:21
0

C'è uno script chiamato compiz-send.py nella wiki di compiz che in parte indirizza la tua domanda: non è uno spazio di lavoro specifico ma puoi arrivare a quello accanto ad esso.

Con questo puoi impartire un comando
./compiz-dbus-send.py put put_viewport_left_key
./compiz-dbus-send.py put put_viewport_right_key
e fai in modo che il viewport vada 1 a sinistra o a destra.

    
risposta data Rinzwind 08.05.2011 - 00:14

Leggi altre domande sui tag