addresolution 1.43 KB
Newer Older
1
2
3
#!/bin/bash

showExample() { 
4
    echo -e "\ne.g. \""$(basename -- "$0")" eDP1 1920 1080 60\"\n"
5
6
7
8
9
10
11
}

createRes() {
    cvt "$WIDTH" "$HEIGHT" "$REFRESH" | grep Modeline | sed "s/Modeline//" | xargs xrandr --newmode
}

addRes() {
12
13
14
15
16
    xrandr --addmode "$DEVICE" "$WIDTH"x"$HEIGHT"_"$REFRESH".00
}

switchRes() {
    xrandr --output "$DEVICE" --mode "$WIDTH"x"$HEIGHT"_"$REFRESH".00
17
18
19
20
}

# check arguments
if [ -z "$1" ]; then
21
    echo "Please provide an output devide as the first argument"
22
23
24
25
26
    showExample
    exit 128
fi

if [ -z "$2" ]; then
27
    echo "Please provide a screen width as the second argument"
28
29
30
31
32
    showExample
    exit 128
fi

if [ -z "$3" ]; then
33
34
35
36
37
38
39
    echo "Please provide a screen height as the third argument"
    showExample
    exit 128
fi

if [ -z "$4" ]; then
    echo "Please provide a refresh rate as the fourth argument"
40
41
42
43
44
    showExample
    exit 128
fi

#init
45
46
47
48
DEVICE=$1
WIDTH=$2
HEIGHT=$3
REFRESH=$4
49
50
51
52
53
54
55
56
57
58
59

createRes || {
    echo -e "\nERROR creating resolution with \"cvt\"\n"
    exit 1
}

addRes || {
    echo -e "\nERROR adding resolution with \"xrandr\"\n"
    exit 1
}

60
61
62
63
64
65
66
67
68
69
70
71
72
73
echo -e "\n"
while true; do
    read -p "Do you want to switch to this resolution now? (y/n) " yn
    case $yn in
        [Yy]* ) switchRes || {
                    echo -e "\nERROR switching resolution with \"xrandr\"\n"
                    return 1
                }; break;;
        [Nn]* ) break;;
        * ) echo "Please type \"y\" or \"n\"";;
    esac
done

exit 0