Subversion Repositories oBacklight

Rev

Blame | Last modification | View Log | RSS feed

#!/bin/bash

#####################################################################
# Simple script to catch the changes to backlight events on sony    #
# in combination with nvidia_bl.                                    #
#                                                                   #
# Tested with a Sony Vaio VPCCW1S1E Laptop.                         #
#                                                                   #
# This has been tested on openSUSE 11.2 & 11.3 but should           #
# work on any distributions.                                        #
#                                                                   #
# Released under the BSDL Licens                                    #
#                                                                   #
# Developer: oSource Development                                    #
# DevTeam: Marcus Uddenhed                                          #
# Version: 0.3.4                                                    #
#                                                                   #
# Web: http://dev.osource.se/software/obacklight/                   #
# Rss: http://dev.osource.se/category/obacklight/feed/              #
#                                                                   #
# Last Updated: 2010-07-03 20:26                                    #
#                                                                   #
#####################################################################

### 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 nvidia_bl
# Description:       Provides a backlight event handler for nvidia_bl.
#       Captures all backlight events from ACPI Events and feeds the to nvidia_bl.
### END INIT INFO

init() {
# Default parameters
BBL="2"                 # Default brightness level when on battery.
SCB="sony"              # Set which system ACPI is used.
                        # Run 'sudo ls /sys/class/backlight' to determine your type.
                        # Available options: sony
DID="1"                 # The amount of steps to increase/decrease with on backlight changes.
DVOE="7"                # Default value to set when startup value is wrong,
                        # should be your max brightness level.
MBV="7"                 # Max brightness value possible on your system.

# Set correct value to /sys/class/backlight/nvidia_backlight/brightness
GVAR=$(cat /sys/class/backlight/nvidia_backlight/brightness)
if [ "$GVAR" > "$DVOE" ]
 then
  echo "$DVOE" > /sys/class/backlight/nvidia_backlight/brightness
fi

# Check if oBacklight.def exists
if [ ! -e "/root/oBacklight.def" ]
 then
  echo "$DVOE" > /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() {

GVAR=$(cat /root/oBacklight.def)
echo $GVAR > /sys/class/backlight/nvidia_backlight/brightness

if [ "$SCB" = "sony" ]
 then

  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" == "00000001 00000010" ]
   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" == "00000001 00000011" ]
   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" == "00000081 00000000" ]
   then
    if [ "$GVAR" > "$BBL" ]
     then
      echo $BBL > /sys/class/backlight/nvidia_backlight/brightness
      echo $BBL > /root/oBacklight.def
    fi
  fi

  done

fi

}

case $1 in
start)
start
;;
stop)
stop
;;
run)
init
run
;;
*)
echo "start|stop|run"
;;
esac