blob: b98707ad451a0a6ac3a56285e0a1af6a2a2f3b51 (
plain)
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
|
#!/usr/bin/env perl
$| = 1;
my $CRITICAL = undef;
my $LOW = undef;
my $CHARGING = undef;
my $DEAD_LEVEL = 2;
my $CRITICAL_LEVEL = 5;
my $LOW_LEVEL = 10;
while (1) {
my @acpi = split " ", `acpi | grep "Discharging" | grep -v "rate information"`;
my $battery_level = $acpi[3];
my $status = $acpi[2];
my $sent = undef;
$battery_level =~ s/%,//g;
$status =~ s/,//g;
if ($status =~ "Discharging") {
$CHARGING = undef;
if (!$CRITICAL) {
if (int($battery_level) <= int($CRITICAL_LEVEL)) {
$CRITICAL = 'def';
$sent = 'def';
system "notify-send -i \"battery-empty\" -t 0 -u critical \"BATTERY CRITICAL\" \"Battery level is ${battery_level}%\n\nCharge the system NOW.\""
}
} if (!$LOW && !$sent) {
if (int($battery_level) <= int($LOW_LEVEL)) {
$LOW = 'def';
$sent = 'def';
system "notify-send -i \"battery-caution\" -t 0 -u normal \"BATTERY LOW\" \"Battery level is ${battery_level}%\n\nCharge the system soon.\""
}
} if (int($battery_level) <= int($DEAD_LEVEL)) {
system "notify-send -t 0 -u critical \"SHUTTING DOWN\" \"Battery level is too low. The system will shutdown in 2 minutes to prevent corruption.\n\nCharge the system NOW to cancel the shutdown.\"";
system "doas shutdown -Ph 2 &";
}
} else {
if (!$CHARGING) {
$CHARGING = 'def';
$CRITICAL = undef;
$LOW = undef;
system "doas shutdown -c";
system "notify-send -t 3000 -i \"battery-good-charging\" \"System is now charging\"";
}
}
sleep 30;
}
|