Project import generated by Copybara.
GitOrigin-RevId: 975161aa2f1036264c56d7a81b79ac74ba68b276
diff --git a/private_dot_config/i3blocks/battery/executable_battery b/private_dot_config/i3blocks/battery/executable_battery
new file mode 100644
index 0000000..fe64835
--- /dev/null
+++ b/private_dot_config/i3blocks/battery/executable_battery
@@ -0,0 +1,98 @@
+#!/usr/bin/env perl
+#
+# Copyright 2014 Pierre Mavro <deimos@deimos.fr>
+# Copyright 2014 Vivien Didelot <vivien@didelot.org>
+#
+# Slightly modified by Adrià Vilanova
+#
+# Licensed under the terms of the GNU GPL v3, or any later version.
+#
+# This script is meant to use with i3blocks. It parses the output of the "acpi"
+# command (often provided by a package of the same name) to read the status of
+# the battery, and eventually its remaining time (to full charge or discharge).
+#
+# The color will gradually change for a percentage below 85%, and the urgency
+# (exit code 33) is set if there is less that 5% remaining.
+
+use strict;
+use warnings;
+use utf8;
+
+my $acpi;
+my $status;
+my $percent;
+my $ac_adapt;
+my $full_text;
+my $short_text;
+my $bat_number = $ENV{BAT_NUMBER} || 0;
+my $label = $ENV{LABEL} || "";
+
+# read the first line of the "acpi" command output
+open (ACPI, "acpi -b 2>/dev/null| grep 'Battery $bat_number' |") or die;
+$acpi = <ACPI>;
+close(ACPI);
+
+# fail on unexpected output
+if (not defined($acpi)) {
+ # don't print anything to stderr if there is no battery
+ exit(0);
+}
+elsif ($acpi !~ /: ([\w\s]+), (\d+)%/) {
+ die "$acpi\n";
+}
+
+$status = $1;
+$percent = $2;
+$full_text = "$label";
+
+if ($status eq 'Discharging') {
+ $full_text .= '⚡';
+} elsif ($status eq 'Charging') {
+ $full_text .= '🔌';
+} elsif ($status eq 'Unknown') {
+ open (AC_ADAPTER, "acpi -a |") or die;
+ $ac_adapt = <AC_ADAPTER>;
+ close(AC_ADAPTER);
+
+ if ($ac_adapt =~ /: ([\w-]+)/) {
+ $ac_adapt = $1;
+
+ if ($ac_adapt eq 'on-line') {
+ $full_text .= '🔌';
+ } elsif ($ac_adapt eq 'off-line') {
+ $full_text .= '⚡';
+ }
+ }
+}
+
+$full_text .= "$percent%";
+
+$short_text = $full_text;
+
+if ($acpi =~ /(\d\d:\d\d):/) {
+ $full_text .= " ($1)";
+}
+
+# print text
+print "$full_text\n";
+print "$short_text\n";
+
+# consider color and urgent flag only on discharge
+if ($status eq 'Discharging') {
+
+ if ($percent < 20) {
+ print "#FF0000\n";
+ } elsif ($percent < 40) {
+ print "#FFAE00\n";
+ } elsif ($percent < 60) {
+ print "#FFF600\n";
+ } elsif ($percent < 85) {
+ print "#A8FF00\n";
+ }
+
+ if ($percent < 5) {
+ exit(33);
+ }
+}
+
+exit(0);