So schreiben Sie ein Bash-Skript, um meine Anzeigen zu konfigurieren, wenn HDMI ein- oder ausgesteckt ist

8

Ich habe ein Notebook mit Kubuntu Precise (12.04), das ich gelegentlich zum Ansehen von Videos verwende. Wenn ich das tue, stecke ich ein HDMI-Kabel ein, das an einen A / V-Receiver mit einem daran angeschlossenen HDMI-Monitor angeschlossen ist.

Wenn ich Videos auf diese Weise ansehe, muss ich immer noch das Notebook-Display verwenden, wenn ich mit dem System interagiere, um die Wiedergabe usw. zu steuern. Der Text auf dem HDMI-Monitor ist von meinem Sitzplatz aus schwer zu lesen.

Wenn ich das HDMI-Kabel anschließe, erkennt Kubuntu es, aber ich muss eine seltsame Tanzsequenz durchlaufen (die funktioniert, aber kompliziert ist), um sie jedes Mal für Video und Audio richtig einzurichten. Um dies zu beheben, versuche ich, ein Bash-Skript zu schreiben xrandr, um es beim ersten Mal richtig zu machen.

Die Grundidee von Peoros Antwort auf diese U & L-Fragen und Antworten mit dem Titel: Ein Tool zum automatischen Anwenden der RandR-Konfiguration, wenn ein externes Display angeschlossen ist .

Über mein Skript

Mein Skript (unten enthalten) funktioniert, muss aber verbessert werden.

Der Videomodus für den HDMI-Monitor wird korrekt eingestellt, aber der LVDS1-Monitor (auf dem Notebook) ändert sich so, dass nur der obere linke Teil des Desktops angezeigt wird. Dies ist ein Problem, da die Bildlaufleisten rechts und die Taskleiste eingeschaltet sind der Boden.

Ich habe versucht, dies zu beheben --scale, aber mein erster Versuch hat die Dinge so durcheinander gebracht, dass ich neu starten musste, um wieder ein funktionierendes Display zu erhalten.

Gibt es eine Möglichkeit, beide Anzeigen den gleichen Inhalt anzeigen zu lassen, wobei jedoch jede ihre eigene bevorzugte Auflösung verwendet?

Oder zumindest eine Möglichkeit, das Notebook-Display so einzustellen, dass der gesamte Desktop weiterhin verfügbar ist, wenn das HDMI-Display verwendet wird?

Da ich das Skript debugge, ist es noch nicht bereinigt. Ich möchte vielleicht später mehr dazu bringen.

Mein Skript

#!/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

Ausgabe von xrandr

Folgendes sieht 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)
Joe
quelle

Antworten:

3

Sie sollten wahrscheinlich stattdessen einfach kscreen verwenden, um alle Ihre Probleme zu lösen. Es speichert die Einstellungen eines zuvor verbundenen Bildschirms und stellt sie wieder her, sobald Sie ihn erneut verbinden.

Wenn Sie immer noch solche Probleme haben, während Sie kscreen verwenden, sollte es einen Fehlerbericht wert sein .

Als Kubuntu 12.04 ziemlich alt ist, sollten Sie vielleicht einen Blick auf haben diese .

Elias Probst
quelle
Heilige Moley! Das ppa hat mir 347 Updates gebracht! Ich weiß nicht, warum ich es vorher nicht installiert hatte. Und das ist vor der Installation von kscreen. Wenn es nur den Sound (Phonon) von und zu HDMI schalten würde ... Ich werde hierher zurückkehren, sobald das Upgrade abgeschlossen ist und ich kscreen testen kann.
Joe
Die dynamische Soundumschaltung funktioniert recht gut, wenn Sie die Geräteprioritäten in der Phonon-Konfiguration konfigurieren.
Elias Probst
kscreen rockt total! Vielen Dank. Jetzt muss ich mich nur noch an alles andere gewöhnen oder es reparieren, was ppa aktualisiert hat. Ich ging zu Systemeinstellungen-> Multimedia-> Audio- und Videoeinstellungen und verschob das integrierte Audio-Digital-Stereo (HDMI) über das integrierte Audio-Analog-Stereo, aber beim Ein- und Ausstecken meines HDMI-Kabels erfolgt keine Audioumschaltung. Was fehlt mir noch?
Joe
Welche Apps sind betroffen / schalten die Ausgabe nicht um?
Elias Probst
Ich habe gerade ein Upgrade von kubuntu 12.04 auf 14.04.1 durchgeführt. Ich habe auf einen Kommentar gewartet, weil ich gehofft hatte, dass das helfen würde, aber nichts hat sich geändert. Ich muss das Audio immer noch manuell umschalten. Ich denke, ich werde eine neue Frage zu SE Ask Ubuntu eröffnen. Ich glaube keine Audio-Schalter. Ich habe gerade VLC, Dragonplayer und Amarok ausprobiert.
Joe