Come far girare applicazioni grafiche nel sottosistema di Windows 10 per Linux (WSL2)
Premessa
Il web è pieno di informazioni, di guide e di tutorial su come installare e far funzionare il sottosistema per Linux in Windows 10 (WSL2), e su come eseguire con esso anche programmi con interfaccia grafica (GUI). Io non sono un esperto nel campo e, quindi, ho poco da aggiungere a quanto si può già facilmente reperire tramite i comuni motori di ricerca.
D’altra parte, leggendo e seguendo alcune delle guide trovate, sono riuscito (con qualche difficoltà) a fare quasi tutto ciò che mi serviva, tranne eseguire programmi con interfaccia grafica: non c’era verso di far funzionare le cose.
Avere a disposizione la bash di Linux in Windows mi era già utile per alcune cose, ad esempio fare rapide operazioni su file dati in csv (comma-separated values) di prove sperimentali. Però volevo anche la possibilità di eseguire alcuni programmi con interfaccia grafica.
In particolare, anni fa usavo molto Gnumeric, che per molti aspetti mi risultava più vantaggioso rispetto ad Excel (almeno prima di riuscire a maneggiare i fondamenti di VBA e prima che uscisse la versione 2013). Purtroppo il rilascio di versioni compilate per Windows è stato abbandonato da anni, quindi mi sono trovato con numerosi file che non potevo più manipolare agevolmente.
Alla fine comunque ce l’ho fatta a far girare applicazioni grafiche su WSL2, e pertanto riporto passo-passo la sequenza di passaggi che mi hanno consentito di ottenere questo risultato, più che altro come promemoria per riassumere tutte le cose che ho letto in giro e i vari tentativi fatti.
Indice dei contenuti
- Installare WSL2
- Installare, configurare e avviare un server X in Windows
- Verificare che il Firewall non stia bloccando l’applicazione
- Verificare l’indirizzo IP assegnato alla scheda WSL
- Avviare Linux ed esportare i correttamente i parametri
- Verifica finale delle impostazioni
- Aprire finestre multiple
- Riferimenti
1) Installare WSL2
Non è particolarmente difficile, le guide disponibili sono molte. Ad esempio, a questo link c’è quella dal sito ufficiale di Microsoft. I passaggi sono abbastanza chiari, bisogna prima abilitare due funzionalità aggiuntive, ossia Piattaforma Macchina Virtuale (non Hyper-V) e Sottosistema Windows per Linux (Fig. 1). Per fare ciò, si può digitare “funzionalità” sulla barra di ricerca, scegliendo poi la voce “Attiva o disattiva funzionalità di Windows“, oppure digitare direttamente “optionalfeatures” ed eseguire il comando che appare.
Fatto ciò, il PC va riavviato (anche più volte) secondo le indicazioni, poi si va sul Microsoft Store e si cerca una distribuzione Linux (per es. Ubuntu, Fig. 2), si sceglie e si clicca su “Ottieni”. Completata l’installazione, si può avviarla dal menu di Windows, aprendo così il terminale di Linux in una nuova finestra.
2) Installare, configurare e avviare un server X in Windows
Io personalmente ho provato Xming e VcXsrv, ho tenuto il secondo ma la procedura è praticamente identica. Scaricato ed eseguito il file di installazione, si deve lanciare XLaunch (si trova fra le applicazioni o compare digitandolo sulla barra di ricerca, vedi Fig. 3). Poi io ho lasciato l’impostazione di default nella prima schermata (“Select display setting“), ossia “Multiple windows” con display number –1, e nella seconda (“Select how to start clients“), ossia “Start no client“. Nella terza schermata (“Extra settings“) ho messo la spunta su tutte e tre le opzioni, ossia “Clipboard“, “Native openGL” e “Disable access control“. La disattivazione del controllo di accesso, alternativamente alla terza spunta, può essere ottenuta anche digitando “-ac” nella cella dei parametri aggiuntivi. Nella successiva e ultima schermata è possibile salvare su file la configurazione, o semplicemente cliccare su “Fine” per avviare il server X. La sequenza è mostrata nelle Figure 4a–4d.
3) Verificare che il Firewall non stia bloccando l’applicazione
Per il corretto funzionamento, bisogna fare attenzione al fatto che, al primo avvio del server X, il Firewall di Windows chiede se bloccare o consentire l’applicazione. Il consenso, però, mi sembra venga applicato di default solo sul profilo relativo alle reti private, risultando bloccato nel profilo di rete pubblico. Invece, è necessario verificare le impostazioni e assicurarsi che, tra le regole delle connessioni in entrata, VcXsrv risulti consentito anche sul profilo pubblico, in particolare il protocollo TCP (Fig. 5).
4) Verificare l’indirizzo IP assegnato alla scheda WSL
Questo si può fare in vari modi, ad esempio via PowerShell oppure, come in Figura 6, tramite il prompt dei comandi di Windows dal quale digitare “ipconfig” e annotarsi l’indirizzo IPv4 relativo alla scheda che contiene “WSL” nella descrizione.
5) Avviare Linux ed esportare i correttamente i parametri
A questo punto, dalla riga di comando di Linux (Ubuntu nel mio caso) bisogna esportare il parametro LIBGL_ALWAYS_INDIRECT (solo se è stata messa la spunta su “Native opengl” nella configurazione del server X, vedi Fig. 4, altrimenti si può saltare) e il parametro DISPLAY, che deve corrispondere all’indirizzo IP identificato al passo precedente. Per fare ciò, basta digitare i comandi seguenti, premendo “invio” al termine di ciascuno. Ovviamente “NNN.NNN.NNN.NNN” va sostituito con l’IP corretto per la vostra macchina (vedi esempio in Fig. 7). Attenzione a maiuscole e minuscole perché, a differenza di Windows, il terminale di Linux è “case-sensitive“.
export LIBGL_ALWAYS_INDIRECT=1 [INVIO]
export DISPLAY=NNN.NNN.NNN.NNN:0 [INVIO]
6) Verifica finale delle impostazioni
Se non ci sono problemi, si può verificare che tutto funzioni semplicemente eseguendo un’applicazione con finestra grafica precedentemente installata. Ad esempio, ho provato a lanciare il file manager precedentemente noto come Nautilus (Fig. 8).
7) Aprire finestre multiple
Lanciando un programma con interfaccia grafica, questo apre una finestra ma tiene impegnato il terminale. Per avere programmi diversi su finestre multiple, una possibile soluzione consiste nell’eseguire i programmi in background, semplicemente aggiungendo una spazio e una “e commerciale” (&) al termine dell’istruzione di lancio.
8) Riferimenti
Qui sotto riporto i collegamenti ad alcune fra le varie guide e pagine web che ho consultato per capire come come fare.
- https://docs.microsoft.com/en-us/windows/wsl/install-win10
- https://medium.com/swlh/get-wsl2-working-on-windows-10-2ee84ef8ed43
- https://techcommunity.microsoft.com/t5/windows-dev-appconsult/running-wsl-gui-apps-on-windows-10/ba-p/1493242
- https://x410.dev/cookbook/wsl/using-x410-with-wsl2/
- https://skeptric.com/wsl2-xserver/
- https://stackoverflow.com/questions/61110603/how-to-set-up-working-x11-forwarding-on-wsl2
- https://www.thegeekdiary.com/understanding-the-job-control-commands-in-linux-bg-fg-and-ctrlz/
Prima pubblicazione: 11 dicembre 2020 | Ultima modifica: 3 aprile 2021