Subversion Repositories oBacklight

Compare Revisions

Ignore whitespace Rev 1 → Rev 2

/tags/oBacklight 0.3.8/src/oBacklight
0,0 → 1,185
#!/bin/bash
 
#####################################################################
# Simple script to catch the changes to backlight events on sony #
# in combination with nvidiabl. #
# #
# Tested with a Sony Vaio VPCCW1S1E Laptop. #
# #
# This has been tested on openSUSE 11.2, 11.3 & 11.4 but should #
# work on any distributions. #
# #
# Released under the BSDL Licens #
# #
# Developer: oSource Development #
# DevTeam: Marcus Uddenhed #
# Version: 0.3.8 #
# #
# Web: http://dev.osource.se/software/obacklight/ #
# Rss: http://dev.osource.se/category/obacklight/feed/ #
# #
# Last Updated: 2011-03-28 22:01 #
# #
#####################################################################
 
### BEGIN INIT INFO
# Provides: oBacklight
# Required-Start: $acpid
# Required-Stop:
# Default-Start: 5
# Default-Stop: 0 1 2 3 6
# Short-Description: Provides a backlight event handler for nvidiabl
# Description: Provides a backlight event handler for nvidiabl.
# Captures all backlight events from ACPI Events and feeds the to nvidiabl.
### END INIT INFO
 
init() {
## Default parameters
BMT="1" # Set Brightness Mode Types.
# Available types: 1, 2, 3
 
ACPIS="1" # Set correct System ACPI codes.
# Available settings: 1, 2, 3
 
## Various brightness modes
# Mode 1 (Default)
if [ "$BMT" == "1" ]
then
BBL="2" # Default brightness level when on battery.
DID="1" # The amount of steps to increase/decrease with on backlight changes.
MBV="7" # Max brightness value possible on your system.
fi
# Mode 2
if [ "$BMT" == "2" ]
then
BBL="40"
DID="10"
MBV="127"
fi
# Mode 3
if [ "$BMT" == "3" ]
then
BBL="4"
DID="1"
MBV="32"
fi
 
## ACPI Codes for various systems.
 
# ACPIS 1(Default)
# Works on some Sony Vaio VPCCW1S1E
if [ "$ACPIS" == "1" ]
then
ACBU="00000001 00000011" # ACPI brightness up event
ACBD="00000001 00000010" # ACPI brightness down event
ACOB="00000081 00000000" # ACPI brightness on battery event
fi
# ACPIS 2
# Works on some Sony Vaio VPCCW1S1E
if [ "$ACPIS" == "2" ]
then
ACBU="00000086 00000000"
ACBD="00000087 00000000"
ACOB="00000081 00000000"
fi
# ACPIS 3
# Works on Dell Vostro 3700
if [ "$ACPIS" == "3" ]
then
ACBU="00000086 00000000"
ACBD="00000087 00000000"
ACOB="00000080 00000000"
fi
 
# Set correct values in configuration files on startup
echo "$MBV" > /sys/class/backlight/nvidia_backlight/brightness
echo "$MBV" > /root/oBacklight.def
 
# Check if oBacklight.def exists
if [ ! -e "/root/oBacklight.def" ]
then
echo "$MBV" > /root/oBacklight.def
fi
}
 
start() {
 
/etc/init.d/oBacklight run &
 
}
 
stop() {
 
echo $(cat /sys/class/backlight/nvidia_backlight/brightness) > /root/oBacklight.def
killall -r oBacklight
 
}
 
run() {
while [ exit != 130 ]
do
 
GVAR=$(cat /sys/class/backlight/nvidia_backlight/brightness)
 
CMD=$(acpi_listen -c 1 | egrep -o " [0-9].+" | egrep -o "[0-9].+")
 
# Brightness down acpi event
if [ "$CMD" == "$ACBD" ]
then
 
if [ "$GVAR" -ge "$DID" ] # Thanks to damdim @ nvnews forum for this fix.
then
SVAR=$(($GVAR - $DID))
echo $SVAR > /sys/class/backlight/nvidia_backlight/brightness
echo $SVAR > /root/oBacklight.def
else
SVAR="0"
echo $SVAR > /sys/class/backlight/nvidia_backlight/brightness
echo $SVAR > /root/oBacklight.def
fi
 
fi
 
# Brightness up acpi event
if [ "$CMD" == "$ACBU" ]
then
if [ "$GVAR" -le $(($MBV-$DID)) ] # Thanks to damdim @ nvnews forum for this fix.
then
SVAR=$(($GVAR + $DID))
echo $SVAR > /sys/class/backlight/nvidia_backlight/brightness
echo $SVAR > /root/oBacklight.def
else
SVAR=$MBV
echo $SVAR > /sys/class/backlight/nvidia_backlight/brightness
echo $SVAR > /root/oBacklight.def
fi
fi
 
# AC to battery change
if [ "$CMD" == "$ACOB" ]
then
if [ "$GVAR" > "$BBL" ]
then
echo $BBL > /sys/class/backlight/nvidia_backlight/brightness
echo $BBL > /root/oBacklight.def
fi
fi
 
done
}
 
case $1 in
start)
start
;;
stop)
stop
;;
run)
init
run
;;
*)
echo "start|stop|run"
;;
esac