Subversion Repositories oBacklight

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 soulskater 1
#!/bin/bash
2
 
3
#####################################################################
4
# Simple script to catch the changes to backlight events on sony    #
5
# in combination with nvidiabl.                                     #
6
#                                                                   #
7
# Tested with a Sony Vaio VPCCW1S1E Laptop.                         #
8
#                                                                   #
9
# This has been tested on openSUSE 11.2, 11.3 & 11.4 and            #
10
# Ubuntu 11.10 but should work on any distributions.                #
11
#                                                                   #
12
# Released under the BSDL Licens                                    #
13
#                                                                   #
14
# Developer: oSource Development                                    #
15
# DevTeam: Marcus Uddenhed                                          #
16
# Version: 0.3.9                                                    #
17
#                                                                   #
18
# Web: http://dev.osource.se/software/obacklight/                   #
19
# Rss: http://dev.osource.se/category/obacklight/feed/              #
20
#                                                                   #
21
# Last Updated:	2012-04-13 20:08                                    #
22
#                                                                   #
23
#####################################################################
24
 
25
### BEGIN INIT INFO
26
# Provides:          oBacklight
27
# Required-Start:    $acpid
28
# Required-Stop:
29
# Default-Start:     5
30
# Default-Stop:      0 1 2 3 6
31
# Short-Description: Provides a backlight event handler for nvidiabl
32
# Description:       Captures all backlight events from ACPI Events and feeds them to nvidiabl.
33
### END INIT INFO
34
 
35
init() {
36
## Default parameters
37
BMT="1"			# Set Brightness Mode Types.
38
			# Available types: 1, 2, 3, 4
39
 
40
ACPIS="1"		# Set correct System ACPI codes.
41
			# Available settings: 1, 2, 3
42
 
43
## Various brightness modes
44
# Mode 1 (Default)
45
if [ "$BMT" == "1" ]
46
then
47
  BBL="2"		# Default brightness level when on battery.
48
  DID="1"		# The amount of steps to increase/decrease with on backlight changes.
49
  MBV="7"		# Max brightness value possible on your system.
50
fi
51
# Mode 2
52
if [ "$BMT" == "2" ]
53
then
54
  BBL="40"
55
  DID="10"
56
  MBV="127"
57
fi
58
# Mode 3
59
if [ "$BMT" == "3" ]
60
then
61
  BBL="4"
62
  DID="1"
63
  MBV="32"
64
fi
65
# Mode 4
66
# Tested on a VPCCW15FL, thanks to Esteban
67
if [ "$BMT" == "4" ]
68
then
69
  BBL="40"
70
  DID="17"
71
  MBV="120"
72
fi
73
 
74
## ACPI Codes for various systems.
75
 
76
# ACPIS 1(Default)
77
# Works on some Sony Vaio VPCCW1S1E 
78
if [ "$ACPIS" == "1" ]
79
then
80
  ACBU="00000001 00000011"	# ACPI brightness up event
81
  ACBD="00000001 00000010"	# ACPI brightness down event
82
  ACOB="00000081 00000000"	# ACPI brightness on battery event
83
fi
84
# ACPIS 2
85
# Works on some Sony Vaio VPCCW1S1E 
86
if [ "$ACPIS" == "2" ]
87
then
88
  ACBU="00000086 00000000"
89
  ACBD="00000087 00000000"
90
  ACOB="00000081 00000000"
91
fi
92
# ACPIS 3
93
# Works on Dell Vostro 3700
94
if [ "$ACPIS" == "3" ]
95
then
96
  ACBU="00000086 00000000"
97
  ACBD="00000087 00000000"
98
  ACOB="00000080 00000000"
99
fi
100
 
101
# Set correct values in configuration files on startup
102
echo "$MBV" > /sys/class/backlight/nvidia_backlight/brightness
103
echo "$MBV" > /root/oBacklight.def
104
 
105
# Check if oBacklight.def exists
106
if [ ! -e "/root/oBacklight.def" ]
107
 then
108
  echo "$MBV" > /root/oBacklight.def
109
fi
110
}
111
 
112
start() {
113
 
114
/etc/init.d/oBacklight run &
115
 
116
}
117
 
118
stop() {
119
 
120
echo $(cat /sys/class/backlight/nvidia_backlight/brightness) > /root/oBacklight.def
121
killall -r oBacklight
122
 
123
}
124
 
125
run() {
126
while [ exit != 130 ]
127
do
128
 
129
GVAR=$(cat /sys/class/backlight/nvidia_backlight/brightness)
130
 
131
CMD=$(acpi_listen -c 1 | egrep -o " [0-9].+" | egrep -o "[0-9].+")
132
 
133
# Brightness down acpi event
134
if [ "$CMD" == "$ACBD" ]
135
 then
136
 
137
  if [ "$GVAR" -ge "$DID" ] # Thanks to damdim @ nvnews forum for this fix.
138
   then
139
    SVAR=$(($GVAR - $DID))
140
    echo $SVAR > /sys/class/backlight/nvidia_backlight/brightness
141
    echo $SVAR > /root/oBacklight.def
142
   else
143
    SVAR="0"
144
    echo $SVAR > /sys/class/backlight/nvidia_backlight/brightness
145
    echo $SVAR > /root/oBacklight.def
146
  fi
147
 
148
fi
149
 
150
# Brightness up acpi event
151
if [ "$CMD" == "$ACBU" ]
152
 then
153
  if [ "$GVAR" -le $(($MBV-$DID)) ] # Thanks to damdim @ nvnews forum for this fix.
154
   then
155
    SVAR=$(($GVAR + $DID))
156
    echo $SVAR > /sys/class/backlight/nvidia_backlight/brightness
157
    echo $SVAR > /root/oBacklight.def
158
   else
159
    SVAR=$MBV
160
    echo $SVAR > /sys/class/backlight/nvidia_backlight/brightness
161
    echo $SVAR > /root/oBacklight.def
162
  fi
163
fi
164
 
165
# AC to battery change
166
if [ "$CMD" == "$ACOB" ]
167
 then
168
  if [ "$GVAR" > "$BBL" ]
169
   then
170
    echo $BBL > /sys/class/backlight/nvidia_backlight/brightness
171
    echo $BBL > /root/oBacklight.def
172
  fi
173
fi
174
 
175
done
176
}
177
 
178
case $1 in
179
start)
180
start
181
;;
182
stop)
183
stop
184
;;
185
run)
186
init
187
run
188
;;
189
*)
190
echo "start|stop|run"
191
;;
192
esac