if-then-Anweisung in Bash zum Umschalten der Bildschirmauflösung

if-then-Anweisung in Bash zum Umschalten der Bildschirmauflösung

Wie formuliere ich ein Skript, das die Bildschirmauflösung mit xrandr prüft und die Auflösung je nach aktuellem Stand ändert? Das heißt, es schaltet die Auflösung um.

Beispielausgabe vonxrandr -q

   1920x1080     59.98 +  59.97    59.96    59.93  
   1680x1050     59.95    59.88  
   1600x1024     60.17  
   1400x1050     59.98  
   1600x900      59.99*   59.94    59.95    59.82

Wie muss es formuliert werden, um zu prüfen, ob die aktuelle Auflösung 1600 x 900 ist, und dann auszuführen xrandr -s 0, aber wenn die aktuelle Auflösung 1920 x 1080 ist, auszuführen xrandr -s 4?

Kurz gesagt lautet die Frage, wie man das Skript dazu bringt, die Ausgabe von xrandr -q zu erkennen, um die Auflösung umzuschalten. Beispiel:

#!/bin/bash

if <current resolution is 1920x1080>
then
  xrandr -s 5
elif <current resolution is 1600x900>
then
  xrandr -s 0
else
 <do nothing>
fi

Im Grunde brauche ich eine Möglichkeit, mit der das Skript erkennt, in welcher Zeile sich das Sternchen befindet, und es auf die andere umschaltet. Wie könnte das erreicht werden?

Antwort1

Beispiel einer Lösung

Die Lösung kann Ihren Bedürfnissen entsprechend angepasst werden.

#!/bin/bash
MYRES=$(xrandr -q | grep "\*" | awk '{ print $1; }')
echo -e "\nResolution is $MYRES\n"
case "$MYRES" in
  "1920x1080")
    echo "Size = 5"
    xrandr -s 5
    ;;
  "1680x1050")
    echo "Size = 4"
    xrandr -s 4
    ;;
  "1600x1024")
    echo "Size = 4"
    xrandr -s 4
    ;;
  "1400x1050")
    echo "Size = 3"
    xrandr -s 3
    ;;
  "1600x900")
    echo "Size = 0"
    xrandr -s 0
    ;;
  *)
    echo "Do nothing."
    ;;
esac

Antwort2

Dies wurde beantwortetHiervon @Chobaraauf unix.stackexchange.com

Prozesssubstitution verwenden:

#!/bin/bash

read resolution _rest < <(xrandr | grep '\*')

if [[ $resolution = 1920x1080 ]] ; then
    xrandr -s 5
elif [[ $resolution = 1600x900 ]] ; then
    xrandr -s 0
else
    echo Unknown resolution >&2
fi

verwandte Informationen