Toggle screen resolution with a script, how?
How do I phrase a script that checks screen resolution with xrandr and changes resolution depending on what it is currently? Which is to say, toggles the resolution.
Sample output of xrandr -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
How does it need to be phrased to check if the current resolution is 1600×900, then run xrandr -s 0
, but if the current resolution is 1920×1080 run xrandr -s 4
?
In short the question is how to make the script recognize the output of xrandr -q in order to toggle resolutions. For example:
#!/bin/bash
if <current resolution is 1920x1080>
then
xrandr -s 4
elif <current resolution is 1600x900>
then
xrandr -s 0
else
<do nothing>
fi
Basically I need a means for the script to recognize which line the asterisk is on and switch it to the other one. How would that be accomplished?
Use process substitution:
#! /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