Usage: bash brightness.bash {up|down}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
#!/usr/bin/env bash
: <<'DOC'
sudo chmod a+w /sys/class/backlight/intel_backlight/brightness
max: 2047
$ echo 2047 >> /sys/class/backlight/intel_backlight/brightness
$ echo 2048 >> /sys/class/backlight/intel_backlight/brightness
write: Invalid argument
DOC
set -Ceu
_usage() {
local prog
prog=$(basename "$0")
cat <<EOS
$prog: usage:
$prog {up|down}
EOS
}
usage() { _usage >&2; exit 1; }
usage0() { _usage; exit 0; }
# increases as (2^(1/4))^i
#
# python3 -c "[print(f'{(2**(1/4))**i:.1f}') for i in range(46)]"
# python3 -c "[print(f'{(2**(1/4))**i:.0f}') for i in range(46)]"
# 1.0 1.2 1.4 1.7 2.0 2.4 2.8 3.4 4.0 4.8 5.7 6.7 8.0 9.5 11.3 13.5 16.0 19.0 ... 1448.2 1722.2 2048.0 2435.5
# 1 1 1 2 2 2 3 3 4 5 6 7 8 10 11 13 16 19 ... 1448 1722 2048 2435
#
# 16 --up--> 19
# 16 --down--> 13
# 17 --down--> 16
# 17 --up--> 19
# 1722 --up--> 2047 (max)
# 2046 --up--> 2047 (max)
# 2047 --down--> 1722
up() {
[ "${1+defined}" = defined ] || echo "up: BUG: NUM not given"
NUM=$1
[ "$NUM" = 0 ] && { echo -n 1 ; return ; }
[ "$NUM" -le 1 ] && { echo -n 2 ; return ; }
[ "$NUM" -le 2 ] && { echo -n 3 ; return ; }
[ "$NUM" -le 3 ] && { echo -n 4 ; return ; }
[ "$NUM" -le 4 ] && { echo -n 5 ; return ; }
[ "$NUM" -le 5 ] && { echo -n 6 ; return ; }
[ "$NUM" -le 6 ] && { echo -n 7 ; return ; }
[ "$NUM" -le 7 ] && { echo -n 8 ; return ; }
[ "$NUM" -le 8 ] && { echo -n 10 ; return ; }
[ "$NUM" -le 10 ] && { echo -n 11 ; return ; }
[ "$NUM" -le 11 ] && { echo -n 13 ; return ; }
[ "$NUM" -le 13 ] && { echo -n 16 ; return ; }
[ "$NUM" -le 16 ] && { echo -n 19 ; return ; }
[ "$NUM" -le 19 ] && { echo -n 23 ; return ; }
[ "$NUM" -le 23 ] && { echo -n 27 ; return ; }
[ "$NUM" -le 27 ] && { echo -n 32 ; return ; }
[ "$NUM" -le 32 ] && { echo -n 38 ; return ; }
[ "$NUM" -le 38 ] && { echo -n 45 ; return ; }
[ "$NUM" -le 45 ] && { echo -n 54 ; return ; }
[ "$NUM" -le 54 ] && { echo -n 64 ; return ; }
[ "$NUM" -le 64 ] && { echo -n 76 ; return ; }
[ "$NUM" -le 76 ] && { echo -n 91 ; return ; }
[ "$NUM" -le 91 ] && { echo -n 108 ; return ; }
[ "$NUM" -le 108 ] && { echo -n 128 ; return ; }
[ "$NUM" -le 128 ] && { echo -n 152 ; return ; }
[ "$NUM" -le 152 ] && { echo -n 181 ; return ; }
[ "$NUM" -le 181 ] && { echo -n 215 ; return ; }
[ "$NUM" -le 215 ] && { echo -n 256 ; return ; }
[ "$NUM" -le 256 ] && { echo -n 304 ; return ; }
[ "$NUM" -le 304 ] && { echo -n 362 ; return ; }
[ "$NUM" -le 362 ] && { echo -n 431 ; return ; }
[ "$NUM" -le 431 ] && { echo -n 512 ; return ; }
[ "$NUM" -le 512 ] && { echo -n 609 ; return ; }
[ "$NUM" -le 609 ] && { echo -n 724 ; return ; }
[ "$NUM" -le 724 ] && { echo -n 861 ; return ; }
[ "$NUM" -le 861 ] && { echo -n 1024 ; return ; }
[ "$NUM" -le 1024 ] && { echo -n 1218 ; return ; }
[ "$NUM" -le 1218 ] && { echo -n 1448 ; return ; }
[ "$NUM" -le 1448 ] && { echo -n 1722 ; return ; }
[ "$NUM" -le 1722 ] && { echo -n 2047 ; return ; }
[ "$NUM" -le 2047 ] && { echo -n 2047 ; return ; } # max
echo "up: BUG: too large NUM: $NUM" ; exit 1
}
down() {
[ "${1+defined}" = defined ] || { echo "down: BUG: NUM not given"; exit 1; }
NUM=$1
# 0 is truly dark, unsafe -- return 1
[ "$NUM" = 0 ] && { echo -n 1 ; return ; }
[ "$NUM" = 1 ] && { echo -n 1 ; return ; }
[ "$NUM" -le 2 ] && { echo -n 1 ; return ; }
[ "$NUM" -le 3 ] && { echo -n 2 ; return ; }
[ "$NUM" -le 4 ] && { echo -n 3 ; return ; }
[ "$NUM" -le 5 ] && { echo -n 4 ; return ; }
[ "$NUM" -le 6 ] && { echo -n 5 ; return ; }
[ "$NUM" -le 7 ] && { echo -n 6 ; return ; }
[ "$NUM" -le 8 ] && { echo -n 7 ; return ; }
[ "$NUM" -le 10 ] && { echo -n 8 ; return ; }
[ "$NUM" -le 11 ] && { echo -n 10 ; return ; }
[ "$NUM" -le 13 ] && { echo -n 11 ; return ; }
[ "$NUM" -le 16 ] && { echo -n 13 ; return ; }
[ "$NUM" -le 19 ] && { echo -n 16 ; return ; }
[ "$NUM" -le 23 ] && { echo -n 19 ; return ; }
[ "$NUM" -le 27 ] && { echo -n 23 ; return ; }
[ "$NUM" -le 32 ] && { echo -n 27 ; return ; }
[ "$NUM" -le 38 ] && { echo -n 32 ; return ; }
[ "$NUM" -le 45 ] && { echo -n 38 ; return ; }
[ "$NUM" -le 54 ] && { echo -n 45 ; return ; }
[ "$NUM" -le 64 ] && { echo -n 54 ; return ; }
[ "$NUM" -le 76 ] && { echo -n 64 ; return ; }
[ "$NUM" -le 91 ] && { echo -n 76 ; return ; }
[ "$NUM" -le 108 ] && { echo -n 91 ; return ; }
[ "$NUM" -le 128 ] && { echo -n 108 ; return ; }
[ "$NUM" -le 152 ] && { echo -n 128 ; return ; }
[ "$NUM" -le 181 ] && { echo -n 152 ; return ; }
[ "$NUM" -le 215 ] && { echo -n 181 ; return ; }
[ "$NUM" -le 256 ] && { echo -n 215 ; return ; }
[ "$NUM" -le 304 ] && { echo -n 256 ; return ; }
[ "$NUM" -le 362 ] && { echo -n 304 ; return ; }
[ "$NUM" -le 431 ] && { echo -n 362 ; return ; }
[ "$NUM" -le 512 ] && { echo -n 431 ; return ; }
[ "$NUM" -le 609 ] && { echo -n 512 ; return ; }
[ "$NUM" -le 724 ] && { echo -n 609 ; return ; }
[ "$NUM" -le 861 ] && { echo -n 724 ; return ; }
[ "$NUM" -le 1024 ] && { echo -n 861 ; return ; }
[ "$NUM" -le 1218 ] && { echo -n 1024 ; return ; }
[ "$NUM" -le 1448 ] && { echo -n 1218 ; return ; }
[ "$NUM" -le 1722 ] && { echo -n 1448 ; return ; }
[ "$NUM" -le 2047 ] && { echo -n 1448 ; return ; }
echo "down: BUG: too large NUM: $NUM" ; exit 1
}
[ "${1+defined}" = defined ] || usage && MODE=$1
# [ "${2+defined}" = defined ] || usage && NUM=$2 # debug
NUM=$(cat /sys/class/backlight/intel_backlight/brightness)
case $MODE in
up)
up "$NUM"
up "$NUM" >> /sys/class/backlight/intel_backlight/brightness
;;
down)
down "$NUM"
down "$NUM" >> /sys/class/backlight/intel_backlight/brightness
;;
*)
echo invalid mode: "$MODE"
usage
;;
esac
exit 0
|