Doppio schermo con Chromecast

Questa guida si rivolge soprattutto agli insegnanti, ai professori, e a chiunque abbia bisogno di far vedere il contenuto di un PC su uno schermo televisivo o un proiettore ma non ha il cavo o quest’ultimo non è abbastanza lungo. Questa guida fa uso di un dispositivo Chromecast o device compatibili.

Doppio schermo con Chromecast

Chromecast può proiettare singole schede di Chrome o Chromium, o singole applicazioni che stanno girando sul nostro PC, o tutto il desktop. Chi è abituato a far lezione usa in genere un’estensione del proprio schermo da proiettare, così da avere un’area visibile agli studenti e un’area su cui tenere votazioni, esercizi, appunti, eccetera. Questi insegnanti non userebbero mai la funzione di proiettare tutto il desktop con Chromecast quindi, ma piuttosto penserebbero a proiettare singole applicazioni. Purtroppo però molte applicazioni aprono ulteriori finestre (per esempio per la configurazione o le preferenze) che non vengono visualizzate da Chromecast. Occorrerebbe ogni volta spostare la trasmissione dalla finestra principale del software a quella che vogliamo vedere con Chromecast, che è una cosa scomodissima. Senza contare che comunque non possiamo far vedere due applicazioni contemporaneamente. Bisognerebbe riuscire insomma a usare il Chromecast come se fosse uno schermo aggiuntivo, un doppio schermo, e mantenere contemporaneamente visibile sul nostro schermo principale del PC una “copia” di ciò che viene trasmesso al Chromecast. L’idea mi è venuta facendo lezione in un’aula in cui c’era internet, ma la disposizione era questa:

Schema di una situazione ideale in un'aula.

Come potete facilmente vedere, i problemi erano due:

  1. Il cavo è troppo corto. Non voglio fare lezione dall’ultimo banco in fondo (che peraltro è occupato da uno studente…)
  2. Anche con una mega prolunga HDMI, poi come faccio a vedere quello che proietto? Sono di spalle allo schermo, e voglio avere un doppio schermo, non proiettare tutto quello che vedo sul desktop del mio computer (su cui magari ci sono cose che non c’entrano o i voti o le soluzioni degli esercizi)

E così mi sono portato da casa il mio fido Chromecast e l’ho attaccato al proiettore. Con il mio cellulare, l’ho connesso alla rete della scuola, ed ecco le soluzioni:

  1. Creo una finestra con dentro una sessione del desktop
  2. Proietto quella finestra sul Chromecast

In questo modo tengo d’occhio sul computer quello che si vede sullo schermo dietro di me, ma ho anche il mio PC con il suo desktop indipendente da quello che si vede sullo schermo dietro di me.

In sostanza creo un doppio schermo con Chromecast, ossia oltre allo schermo reale del computer che sto usando creo uno schermo aggiuntivo, virtuale, che se ne sta in una finestra sullo schermo principale del PC, ma che viene proiettato poi sul muro.

Proiettare una finestra con dentro una sessione aggiuntiva del desktop

Per ottenere tutto ciò, su Windows basta andare nella configurazione dei driver dello schermo, dirgli che c’è uno schermo aggiuntivo affiancato e zittirlo se protesta per il fatto che non c’è in effetti nulla connesso all’HDMI o alla presa RGB della scheda video. Questa soluzione però non funziona sempre, dipende molto dai driver della scheda video e risulta comunque sempre piuttosto instabile. Soprattutto, questo sistema non risolve il problema principale: se sei di spalle allo schermo, non riesci a lavorare. Ma è Windows e non ci interessa, qui si parla di Linux e su Xubuntu non si può dire al sistema che c’è uno schermo in più se veramente non c’è alcuno schermo collegato alla scheda video: dobbiamo creare uno schermo virtuale.

Creato lo schermo aggiuntivo virtuale, dobbiamo lanciare una sessione del desktop environment (XFCE nel mio caso) sullo schermo virtuale, e poi aprire Chrome (o Chromium) per trasmettere la finestra appena creata al Chromecast.

Do per scontato che abbiate già configurato il vostro Chromecast sulla rete, e che sul vostro PC ci siano Chrome o Chromium già configurati per trasmettere schede a Chromecast. Nel caso, date un’occhiata alla mia guida sull’installazione di Xubuntu.

Queste istruzioni sono testate con Xubuntu 18.04 64 bit, quindi fanno riferimento a XFCE. Se usate KDE (Kubuntu), Gnome (Ubuntu fra qualche mese) o LXDE (Lubuntu) vi basterà cambiare una riga che vedremo tra poco.

1. Installazione del software

Aprite il terminale e digitate:

sudo apt-get install xserver-xephyr primus ssh

xserver-xephyr è un software che permette di creare schermi virtuali in finestra.
primus è un software che permette di emulare l’accelerazione grafica in sistemi che non la supportano. Ci servirà per lanciare applicazioni grafiche nella finestra virtuale.
ssh è il celebre componente che permette di creare un tunnel criptato tra la propria sessione e una altrui. Lo useremo per passare i comandi alla sessione che creeremo nella finestra in cui c’è lo schermo virtuale.

2. Lanciare una sessione virtuale

Creiamo prima uno schermo virtuale. Deve avere le dimensioni della risoluzione ideale del proiettore. In questo esempio uso un proiettore piuttosto vecchio ma ancora usatissimo nelle scuole e negli uffici che ha una risoluzione 1024×768:

Xephyr -ac -br -noreset -screen 1024x768 :1 &

Ora vi si apre una finestra, tutta buia, con risoluzione 1024×768. Lì dentro faremo partire una nuova sessione del desktop. Ma prima dobbiamo sapere una cosa fondamentale: ora il terminale dovrà mandare comandi non più al nostro desktop, ma allo schermo virtuale appena creato. Come fare?

Ora abbiamo un doppio schermo con Chromecast, cioè uno schermo “nostro”, e uno virtuale che manderemo a Chromecast. Bisogna sapere che il nostro schermo, per il terminale, si chiama DISPLAY :0.0 e che man mano che si creano schermi vari, per il terminale si chiamano DISPLAY :1.0, DISPLAY :2.0 eccetera. Quindi per dire al terminale che i prossimi comandi avranno effetto sul nuovo schermo appena creato e non sul nostro desktop, dobbiamo scrivere:

export DISPLAY=:1.0

ci basta lanciare, tramite ssh, una nuova sessione di XFCE. La sintassi è questa:

env -u SESSION_MANAGER -u DBUS_SESSION_BUS_ADDRESS xfce4-session &

Ovviamente se non usate XFCE, non dovrete scrivere xfce4-session, ma il comando relativo al desktop environment che usate. Per esempio per LXDE è lxsession, per Mate è mate-session, per Unity 2D dovrebbe essere gnome-session –session=ubuntu-2d, e così via. Consultate la documentazione del vostro desktop environment.

Ma non è finita: ora se provate a fare qualcosa nel doppio schermo con Chromecast, cioè nella nuova sessione creata, vi accorgerete che la tastiera non è impostata su quella italiana. Niente paura: il nostro terminale è ancora impostato per dare comandi alla sessione virtuale, quindi diciamogli di usare la tastiera italiana:

setxkbmap it

3. Lanciare applicazioni nella sessione virtuale

Per lanciare un’applicazione nella sessione virtuale “doppio schermo” che andrà proiettata con il Chromecast, è sufficiente usare il normale menu o i lanciatori, nel nuovo desktop, esattamente come si fa normalmente nel proprio desktop. Tuttavia mi dicono che in alcuni casi non funzionano in questo modo tutte le applicazioni che abbisognano dell’accelerazione grafica. Questo perché in alcuni PC l’accelerazione grafica funziona solo sulla sessione principale – dipende dai driver della scheda video – in quanto Xephyr non la supporta. Ma c’è un trucco: si può emulare in CPU l’accelerazione grafica, attraverso il comando primusrun.

Torniamo quindi al terminale impostato precedentemente per mandare comandi alla nuova sessione virtuale e, per lanciare per esempio Blender (che non parte se non trova l’accelerazione grafica), digitare:

primusrun blender &

Nello stesso modo possiamo far partire Libreoffice Impress, per proiettare diapositive, nel quale alcuni effetti richiedono l’accelerazione grafica:

primusrun libreoffice --impress &

Per usare l’immissione di lingue orientali con ibus (se sono già configurate e funzionanti nella sessione che usiamo normalmente, come spiegato nella mia guida sull’installazione di Xubuntu), sempre rimanendo nel terminale configurato per mandare comandi alla sessione virtuale occorre digitare:

ibus-setup

Poi, sempre se avete la scheda video che non vi fa partire i programmi grafici senza primusrun, è necessario lanciare tutte le applicazioni con primusrun, anche quelle che non fanno uso dell’accelerazione grafica, altrimenti non si vedono in sovraimpressione i suggerimenti, per esempio del pinyin (il sistema fonetico usato nella lingua cinese).

4. Finalmente: proiettare il doppio schermo con Chromecast

A questo punto si può proiettare sul Chromecast tutto il contenuto dello schermo aggiuntivo emulato in finestra. Nella vostra sessione (non in quella virtuale!) aprite Chrome o Chromium e poi:

  • Icona del Chromecast (se non c’è: menu in alto a destra → Trasmetti…)
  • Trasmetti a → Trasmetti Desktop
  • Premere sul dispositivo
  • Scheda “Finestra dell’applicazione”
  • Scegliere la finestra con dentro Xephyr
  • Condividi

A questo punto ricordatevi sempre che nel terminale, tutto quello che scriviamo avrà effetto sulla sessione virtuale. Per riportare il terminale ad avere effetto sulla nostra sessione, scrivere:

export DISPLAY=:0.0

Ovviamente per tornare a dare comandi alla sessione virtuale, scrivere:

export DISPLAY=:1.0

5. Conclusioni

Se questa guida vi è stata utile vi prego di considerare una donazione anche simbolica, per la quale trovate un modulo sempre su questa pagina in alto a destra.
Se avete domande tecniche o qualcosa non funziona o non si capisce bene, potete aprire un thread sul forum di Ubuntu nella sessione “Multimedia”, in modo che risolviamo insieme come comunità il problema.
Per tutto il resto c’è la pagina dei Contatti, o la mia pagina Facebook.


Guida creata il 1 luglio 2017
Ultimo aggiornamento: 1 marzo 2019
Licenza: © Stefano Droghetti 2017, Creative Commons BY-NC-SA

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.