summarylogtreecommitdiffstats
path: root/acpi-eeepc-generic-toggle-resolution.sh
blob: 1036095acaa06e5ca5664d5e4c56522c5de833c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/bin/bash
# Copyright 2009 Nicolas Bigaouette
# This file is part of acpi-eeepc-generic.
# http://code.google.com/p/acpi-eeepc-generic/
# 
# acpi-eeepc-generic is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 
# acpi-eeepc-generic is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with acpi-eeepc-generic.  If not, see <http://www.gnu.org/licenses/>.

. /etc/acpi/eeepc/acpi-eeepc-generic-functions.sh

tmp_xrandr="$EEEPC_VAR/lvds-modes"

if [ -e "$tmp_xrandr" ]; then
    LVDS_XRANDR=$(cat $tmp_xrandr)
else
    LVDS_XRANDR=$(xrandr > $tmp_xrandr)
fi

LVDS_MODES=$(cat $tmp_xrandr | grep -F -e LVDS -A 12 | grep [0-9]x[0-9] | grep -v -e LVDS | awk '{printf $1" "}')
LVDS_CURRENT=$(cat $tmp_xrandr | grep -F -e LVDS -A 12 | grep -F -e [0-9]x[0-9] -e "*" | awk '{print $1}')

function toggle_resolution {
    for mode in $LVDS_MODES $LVDS_MODES; do
        if [ "$mode" = "$LVDS_CURRENT" ]; then
            NEXT=1;
        elif [ "$NEXT" = "1" ]; then
            xrandr -s $mode
            eeepc_notify "Changing resolution to \"$mode\"" video-display
            echo $mode > $EEEPC_VAR/resolution_saved
            exit
        fi
    done
}

function restore_resolution {
    if [ -e "$EEEPC_VAR/resolution_saved" ]; then
        RESOLUTION=$(cat $EEEPC_VAR/resolution_saved)
        xrandr -s $RESOLUTION
        eeepc_notify "Changing resolution back to \"$RESOLUTION\"" video-display
    fi
}

case $1 in
    restore)
        restore_resolution
    ;;
    *)
        toggle_resolution
    ;;
esac