follow me on Twitter

    DualHead e Gnome workarounds

    Questa settimana mi sono cimentato involontariamente nella configurazione del DualHead sulla mia GNU/Linux Box ;-)

    Il DualHead è una modalità di funzionamento dell’interfaccia grafica coadiuvato dalla capacità della scheda video di gestire più periferiche di output contemporaneamente (ad esempio l’ LCD e l’uscita VGA di un portatile).

    Precedentemente questa modalità di funzionamento era supportata da XWindows mediante un estensione chiamata Xinerama.

    Ultimamente la funzionalità di DualHead è invece integrata nel modulo XRandr che è in grado di selezionare al volo la risoluzione grafica delle schede video e anche di attivare le schede video secondarie senza necessità di riavvio di XWindows (necessaria invece con Xinerama essendo configurata staticamente nel file di configurazione di Xorg)

    XRandr, con la possibilità di riconfigurazione live, è un grande passo in avanti per Xorg… ma come tutte le cose nuove introduce anche nuovi problemi :-D

    La modalità DualHead è sicuramente utile per lavorare su più applicazioni contemporaneamente ma è ancora più utile durante presentazioni e seminari, permettendo di eseguire su uno schermo (il proiettore agganciato all’uscita VGA) la presentazione e sull’altro (l’LCD del portatile) la scaletta/mindmap della presentazione, magari con le note riguardanti i dettagli importanti da non dimenticare :-)

    Ho provato ultimamente a configurare il DualHead in una modalità diversa dalla modalità mirror (che semplicemente clona i due output mostrando su entrambi il medesimo desktop) e ho avuto qualche problemino dovuto probabilmente alla non completa integrazione del nuovo sistema XRandr nella applicazioni e desktop environment (nel mio caso GNOME).

    Nel cercare dei workaround a questi problemi ne ho comunque tratto una conoscienza migliore dei meccanismi e delle tecnologie coinvolte e ho deciso quindi di lasciare queste 4 righe di traccia a beneficio di chi potrebbe incontrare i miei stessi problemi ;-)

    Le ultime versioni Ubuntu (e quindi molto probabilmente anche molte altre distribuzioni) integrano un sistema guidato di riconfigurazione degli output video:

    • gnome-display-properties (compreso nel pacchetto gnome-control-center

    Tra l’altro ci deve fare piacere il fatto che tra i contributor c’e’ un cittadino di adozione leccese ;-) (Alberto Milone) che ha contribuito, tra le altre cose, all’integrazione con X-Kit (di cui ne è autore) per automatizzare quelle procedure che richiedono ancora la configurazione di Xorg attraverso il suo file di configurazione statico.

    Ad esempio una configurazione che fa a finire nel file di configurazione /etc/X11/xorg.conf è la risoluzione virtuale totale (cioè la superficie virtuale che verrà spezzettata tra i vari output reali):

    Section "Screen" 
      Identifier "Default Screen" 
      Device "Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller" 
      Monitor "LVDS" 
      DefaultDepth 24 
      SubSection "Display" 
        Depth 24 
        Modes "1280x768" "1024x768" "800x600" "640x480" 
        Virtual 1280 1536 
      EndSubSection 
    EndSection 
    

    Queste modifiche verranno effettuate in maniera completamente trasparente grazie alla collaborazione tra gnome-display-properties, screen-resoluzion-extras, X-Kit e PolicyKit

    Il lavoro di fino degli ultimi anni di freedesktop e dei team di sviluppo di gnome e delle varie distribuzioni stanno finalmente dando i loro primi frutti ;-)

    BUG

    Tutto ha funzionato perfettamente… o quasi… di ritorno dal suspend il tool gnome-display-properties fallisce silenziosamente e non ho avuto ancora la possibilità di approfondire il problema :-(

    Beh… poco male… in ogni caso xrandr è sempre li pronto a servirci attraverso la nostra linea di comando :-D

    Ma rimane comunque un problema troppo fastidioso per essere ignorato:

    i pannelli gnome finiscono nel primo monitor… che per qualche oscuro motivo (almeno sul mio laptop, un Latitude X1) non è l’LCD del laptop ma il monitor esterno…

    … perfetto… il mio obiettivo era ottenere esattamente il comportamento contrario :-(

    Use the Zen: circoscrivere il problema

    In questo caso mi è sembrato naturale pensare che il problema non poteva che risiedere dentro gnome… così prima di andare a guardare i sorgenti o pensato fosse il caso di dare una sbirciata alle chiavi di configurazione GConf con gconf-editor

    Ed eccolo li… è bastato cercare tutte le chiavi di configurazioni contenenti il termine monitor per identificare una chiave interessante /apps/panel/toplevels/panel_0/monitor

    Un rapito test al volo ha dimostrato che semplicemente cambiando la chiave (al volo visto che viene automaticamente ridefinita in caso di assenza del monitor VGA) sposta il pannello sul monitor che preferiamo :-PPPPP

    WORKAROUND

    Dopo aver circoscritto il problema è bastato impacchettare il workaround in un mini-script bash:

    xrandr --output VGA --mode 1024x768 --pos 0x0 --output LVDS  --mode 1280x768 --pos 0x768
    
    gconftool --type int --set /apps/panel/toplevels/panel_0/monitor "1"
    gconftool --type int --set /apps/panel/toplevels/panel_1/monitor "1"
    

    Ohhh… now it’s work!!!

    Happy dualhead, rpl

    0 commenti:

    View Luca Greco"s profile on LinkedIn

    Rpl

    La mia foto
    Lecce, Italy
    Fulltime Coder and *nix BOFH