ubuntuusers.de

Shellscript fürs schnelle Umschalten des Bildausganges

Status: Gelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

ezyjones

Anmeldungsdatum:
5. Mai 2015

Beiträge: 63

Hallo,

ich habe ein Shellscript geschrieben, um bequem zwischen den einzelnen Anzeigegeräten auszuwählen. Es läuft ohne Probleme beim switchen zwischen Laptop und TV, TV und Beamer. Zwischen Laptop und Beamer funktioniert es aber meist nur in Richtung Beamer zum Laptop. Andersherum bleiben manchmal beide Anzeigegeräte schwarz oder der Laptop wird gleich nachdem ich auf den Beamer geschaltet habe wieder aktiv und der Beamer bleibt schwarz.

Der Laptop hat keinen HDMI-Anschluss. Der Beamer ist an VGA mit einem VGA-zu-HDMI-Konverter angeschlossen.

Hier erstmal die Ausgabe von xrandr --query

Screen 0: minimum 8 x 8, current 1400 x 1050, maximum 32767 x 32767 
LVDS1 connected primary 1400x1050+0+0 (normal left inverted right x axis y axis) 0mm x 0mm 
   1400x1050      60.0*+   60.0  
   1280x1024      60.0  
   1280x960       60.0  
   1360x768       59.8     60.0  
   1152x864       60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
DVI1 disconnected (normal left inverted right x axis y axis) 
TV1 connected (normal left inverted right x axis y axis) 
   848x480        59.9 + 
   640x480        59.9 + 
   1024x768       59.9  
   800x600        59.9  
VGA1 connected (normal left inverted right x axis y axis) 
   1920x1080      60.0 + 
   1600x1200      60.0  
   1680x1050      60.0  
   1280x1024      60.0  
   1440x900       59.9  
   1280x960       60.0  
   1360x768       60.0  
   1280x800       59.8  
   1280x720       60.0  
   1024x768       60.0  
   800x600        60.3  
   640x480        60.0  
VIRTUAL1 disconnected (normal left inverted right x axis y axis) 

und hier das Script:

#!/bin/sh

#AUSWAHL ist die Variable

AUSWAHL=$(zenity --list \
  --title="Wähle TV, Beamer oder Laptop" \
  --column="Gerät" \
    TV \
    Beamer \
    Laptop)

if [ "$AUSWAHL" = "TV" ]
then xrandr --output TV1 --mode 1024x768 --pos 0x0 --rotate normal; xrandr --output LVDS1 --off; xrandr --output VGA1 --off

elif [ "$AUSWAHL" = "Beamer" ]
then xrandr --output VGA1 --auto; xrandr --output TV1 --off; xrandr --output LVDS1 --off

elif [ "$AUSWAHL" = "Laptop" ]
then xrandr --output LVDS1 --mode 1400x1050 --pos 0x0 --rotate normal; xrandr --output TV1 --off; xrandr --output VGA1 --off
fi
    

Keine Ahnung warum es von Laptop zum Beamer nicht funktioniert. Über die Konsole ging es mit --auto (beim Beamer). Bei --mode 1920x1080 wechselte das Bild wieder auf den Laptop sobald ich den Laptop-Bildschirm deaktivieren wollte.

Über Systemeinstellungen → Anzeigegeräte gab es nie Probleme beim Hin-und herschalten.

Hoffe jemand hat noch ne Idee.

Danke und Gruß

Ezyjones

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

Ohne Deine eigentliche Frage beantworten zu können, sind mehrfache Verzweigungen über eine Variable eleganter mit case zu lösen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
case $AUSWAHL in 
  "TV") 
    xrandr --output TV1 --mode 1024x768 --pos 0x0 --rotate normal; xrandr --output LVDS1 --off; xrandr --output VGA1 --off
    ;; 
  "Beamer")  
    xrandr --output VGA1 --auto; xrandr --output TV1 --off; xrandr --output LVDS1 --off
    ;; 
  "Laptop")  
    xrandr --output LVDS1 --mode 1400x1050 --pos 0x0 --rotate normal; xrandr --output TV1 --off; xrandr --output VGA1 --off
    ;; 

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11260

Wohnort: München

Ich würde mal versuchen das in einen einzigen xrandr-Befehl zu packen statt das aufzutrennen - xrandr akzeptiert ja mehrere --output Argumente: https://wiki.archlinux.org/index.php/xrandr#Scripts

ezyjones

(Themenstarter)

Anmeldungsdatum:
5. Mai 2015

Beiträge: 63

Hallo,

Danke für die Tipps.

Mehrere Argumente in einen xrandr-Befehl zu packen hat es tatsächlich gebracht. Ich kann jetzt hin- und herschalten und es funktioniert 😀. Bei meinem Script hat sich der Laptop immer mal wieder aufgehängt, zuletzt gabs sogar nen Neustart. Warum das so ist, ist mir rätselhaft, aber die schlankere Variante ist ja eh besser.

Vielen Dank, für die schnellen Antworten.

Gruß

Ezyjones

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

ezyjones schrieb:

😀. Bei meinem Script hat sich der Laptop immer mal wieder aufgehängt, zuletzt gabs sogar nen Neustart. Warum das so ist, ist mir rätselhaft ...

Mal so als Idee: - wenn die weiteren xrandr den Grafikchip schon wieder mit den nächsten Steuerbefehlen zuballern, bevor er mit dem ersten intern fertig ist, dann soll das wohl schon mal schief gehen. 😀 (Wenn Du es ganau wissen willst, müsstest Du Dir mal den Quelltext ansehen, was xrandr wohin schickt)

LG,

track

ezyjones

(Themenstarter)

Anmeldungsdatum:
5. Mai 2015

Beiträge: 63

Hallo track,

ja das leuchtet ein und ist auch für mich als Script-Neuling nachzuvollziehen.

track

(Wenn Du es ganau wissen willst, müsstest Du Dir mal den Quelltext ansehen, was xrandr wohin schickt)

Würde ich gerne mal machen, aber ich befürchte ich verstehe da nur Bahnhof ☹

Die erste Erklärung reicht mir fürs erste.

Danke und Gruß

Ezyjones

Antworten |