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