Come scrivere script bash per configurare i miei display quando HDMI è collegato o scollegato


8

Ho un notebook con Kubuntu Precise (12.04) che utilizzo occasionalmente per guardare video. Quando lo faccio, inserisco un cavo HDMI collegato a un ricevitore A / V con un monitor HDMI collegato ad esso.

Quando guardo i video in questo modo, devo ancora utilizzare il display del notebook quando interagisco con il sistema per controllare la riproduzione, ecc. Il testo sul monitor HDMI è difficile da leggere da dove mi siedo.

Quando collego il cavo HDMI, Kubuntu lo rileva, ma devo passare attraverso una strana sequenza di danza (che funziona, ma è contorta) per configurarlo correttamente ogni volta sia per il video che per l'audio. Per risolvere questo problema, sto cercando di scrivere uno script bash xrandrper farlo bene la prima volta.

Ho avuto l'idea di base dalla risposta di Peoro a queste domande e risposte U&L intitolata: Uno strumento per applicare automaticamente la configurazione RandR quando è collegato uno schermo esterno .

Sulla mia sceneggiatura

La mia sceneggiatura (inclusa di seguito) funziona, ma necessita di miglioramenti.

Imposta correttamente la modalità video per il monitor HDMI, ma il monitor LVDS1 (sul notebook) cambia per visualizzare solo la parte superiore sinistra del desktop, il che è un problema perché taglia le barre di scorrimento della finestra a destra e la barra delle applicazioni su il fondo.

Ho provato a risolvere questo problema --scale, ma il mio primo tentativo ha incasinato abbastanza le cose che ho dovuto riavviare per riavere un display funzionante.

C'è un modo per fare in modo che entrambi i display mostrino lo stesso contenuto, ma ognuno utilizza la propria risoluzione preferita separata?

O almeno un modo per impostare lo schermo del notebook in modo che l'intero desktop sia ancora accessibile quando lo schermo HDMI è in uso?

Dal momento che sto eseguendo il debug dello script, non è stato ancora ripulito. Potrei voler fare di più in seguito.

La mia sceneggiatura

#!/bin/bash
## hdmi_set
## Copyleft 11/13/2013 JPmicrosystems
## Adapted from
## /unix/4489/a-tool-for-automatically-applying-randr-configuration-when-external-display-is-p
## Answer by peoro

# setting up new mode for my VGA
##xrandr --newmode "1920x1080" 148.5 1920 2008 2052 2200 1080 1089 1095 1125 +hsync +vsync
##xrandr --addmode VGA1 1920x1080

##source $HOME/bin/bash_trace
# default monitor is LVDS1
MONITOR=LVDS1

# functions to switch from LVDS1 to HDMI and vice versa
function ActivateHDMI {
    echo "Switching to HDMI"
    ##xrandr --output HDMI1 --mode 1920x1080 --dpi 160 --output LVDS1 --off
    ##xrandr --output HDMI1 --same-as LVDS1
    xrandr --output HDMI1 --mode 1920x1080
    xrandr --output LVDS1 --mode 1366x768
    MONITOR=HDMI1
}
function DeactivateHDMI {
    echo "Switching to LVDS1"
    xrandr --output HDMI1 --off --output LVDS1 --auto
    MONITOR=LVDS1
}

# functions to check if VGA is connected and in use
function HDMIActive {
    [ $MONITOR = "HDMI1" ]
}
function HDMIConnected {
    ! xrandr | grep "^HDMI1" | grep disconnected
}

## MONITOR doesn't do anything because it's not preserved between script executions
# actual script
##while true
##do
    if HDMIConnected
    then
        ActivateHDMI
    fi

    if ! HDMIConnected
    then
        DeactivateHDMI
    fi

    ##sleep 1s
##done

Uscita da xrandr

Ecco cosa vede xrandr:

bigbird@ramdass:~$ xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
   1366x768       60.0*+
   1360x768       59.8     60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected (normal left inverted right x axis y axis)
   1920x1080      60.0 +
   1680x1050      60.0  
   1280x1024      60.0  
   1440x900       59.9  
   1280x720       60.0  
   1024x768       60.0  
   800x600        60.3  
   720x480        59.9  
   640x480        60.0  
   720x400        70.1  
DP1 disconnected (normal left inverted right x axis y axis)

Risposte:


3

Probabilmente dovresti semplicemente usare kscreen , che dovrebbe risolvere tutti i tuoi problemi. Ricorderà le impostazioni di uno schermo precedentemente collegato e le ripristinerà, una volta ricollegato.

Se hai ancora problemi di questo tipo mentre usi ancora kscreen, dovrebbe valere la pena segnalare un bug .

Dato che Kubuntu 12.04 è piuttosto vecchio, probabilmente dovresti dare un'occhiata a questo .


Santa Talpa! Quel ppa mi ha procurato 347 aggiornamenti! Non so perché non l'ho installato prima. E questo è prima di installare kscreen. Ora, se cambierebbe solo il suono (fonone) da e verso HDMI ... Tornerò qui una volta completato l'aggiornamento e posso testare kscreen.
Joe,

La commutazione dinamica del suono funziona piuttosto bene se si configurano le priorità del dispositivo nella configurazione di Phonon.
Elias Probst,

kscreen è totalmente rock! Grazie. Ora devo solo abituarmi o riparare tutto il resto che ppa ha aggiornato. Sono andato in Impostazioni di sistema-> Multimedia-> Impostazioni audio e video e ho spostato l'audio stereo digitale integrato (HDMI) sopra lo stereo analogico audio incorporato, ma non si verifica alcuna commutazione audio quando si collega / scollega il cavo HDMI. Cos'altro mi manca?
Joe,

Quali app sono interessate / non cambiano l'output?
Elias Probst,

Ho appena aggiornato da Kubuntu 12.04 a 14.04.1. Stavo aspettando di commentare perché speravo che potesse aiutare, ma nulla è cambiato. Devo ancora cambiare l'audio manualmente. Penso che aprirò una nuova domanda su SE Chiedi a Ubuntu. Non credo che nessun interruttore audio. Ho appena provato VLC, Dragonplayer e Amarok.
Joe,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.