# -*- sh -*-
# vim:ft=sh:ts=8:sw=4:noet

AddConfigHandler GFXBrightnessOptions
AddConfigHelp "RestoreGFXBrightness <boolean>" "This will save and restore LCD brightness(GFX cards) using ACPI."

# May need to be made configurable later.
gfx_brightness_acpifile=/proc/acpi/video/GFX0/LCD/brightness

SaveGFXBrightness() {
    if [ ! -e "$gfx_brightness_acpifile" ]; then
	vecho 0 "$gfx_brightness_acpifile not present, will not save brightness level"
	return 1
    fi
    LEVEL="$(while read key value rest; do [ "$key" = current: ] && echo $value; done < $gfx_brightness_acpifile)"
    if [ -z "$LEVEL" ]; then
	vecho 0 "could not determine current brightness level, using default (4)"
	LEVEL=4
    fi
    return 0
}

RestoreGFXBrightness() {
    if [ -n "$LEVEL" ] && [ -e "$gfx_brightness_acpifile" ]; then
	echo "$LEVEL" > $gfx_brightness_acpifile
    fi
    return 0
}

GFXBrightnessOptions() {
    case "$1" in
	restoregfxbrightness)
	    BoolIsOn "$1" "$2" || return 0
	    if [ -z "$GFX_BRIGHTNESS_HOOKED" ] ; then
		AddSuspendHook 85 SaveGFXBrightness
		AddResumeHook 85 RestoreGFXBrightness
		GFX_BRIGHTNESS_HOOKED=1
	    fi
	    ;;
	*)
	    return 1
    esac
    return 0
}
