summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmin Bandali <bandali@kelar.org>2024-09-19 12:14:57 -0400
committerAmin Bandali <bandali@kelar.org>2024-09-19 12:14:57 -0400
commita31fef36ff03a057a743fdc1c2d234270137caa0 (patch)
treefd33981b01aff72f24fc3d78d7f20826c902bb0a
parent66f39fc4503139c226217e37aa9eb309c01ddcb2 (diff)
downloadconfigs-a31fef36ff03a057a743fdc1c2d234270137caa0.tar.gz
configs-a31fef36ff03a057a743fdc1c2d234270137caa0.tar.xz
configs-a31fef36ff03a057a743fdc1c2d234270137caa0.zip
Get b-bar battery from GNU Emacs if available
-rw-r--r--.emacs.d/init.el3
-rwxr-xr-x.local/bin/b-bar39
2 files changed, 25 insertions, 17 deletions
diff --git a/.emacs.d/init.el b/.emacs.d/init.el
index 0c35928..97f515e 100644
--- a/.emacs.d/init.el
+++ b/.emacs.d/init.el
@@ -215,9 +215,10 @@ plain variables. This means that `setopt' will execute any
(unless (display-graphic-p)
(display-time-mode)))
+(defvar b/battery-format "%p%b %t")
(run-with-idle-timer 0.1 nil #'require 'battery)
(with-eval-after-load 'battery
- (setopt battery-mode-line-format " [%b%p%% %t]")
+ (setopt battery-mode-line-format (format " [%s]" b/battery-format))
(display-battery-mode))
(run-with-idle-timer 0.5 nil #'require 'winner)
diff --git a/.local/bin/b-bar b/.local/bin/b-bar
index 8641238..04ae6bb 100755
--- a/.local/bin/b-bar
+++ b/.local/bin/b-bar
@@ -18,28 +18,35 @@ do
bar="$cpu1 $cpu2 $nrbr | $bar"
;;
adelita|anahita)
- [ "$host" = "anahita" ] && bdev="sbs_9_000b" || bdev="BAT0"
- b0="$(upower -i /org/freedesktop/UPower/devices/battery_$bdev)"
- batstat="$(echo "$b0" | awk '/state/{print $NF}')"
- if [ "$batstat" = "discharging" ]; then
- batstat='-'
- elif [ "$batstat" = "charging" ]; then
- batstat='+'
+ if [ -x "$(command -v emacsclient)" ]; then
+ embat='(battery-format b/battery-format (funcall battery-status-function))'
+ bat="$(emacsclient -e "$embat")"
+ bat="${bat%\"}"
+ bat="${bat#\"}"
+ else
+ [ "$host" = "anahita" ] && bdev="sbs_9_000b" || bdev="BAT0"
+ b0="$(upower -i /org/freedesktop/UPower/devices/battery_$bdev)"
+ batstat="$(echo "$b0" | awk '/state/{print $NF}')"
+ if [ "$batstat" = "discharging" ]; then
+ batstat='-'
+ elif [ "$batstat" = "charging" ]; then
+ batstat='+'
+ fi
+ batcap="$(echo "$b0" | awk '/percentage/ \
+ {sub(/\%$/, "", $NF); \
+ print $NF}')"
+ battime="$(echo "$b0" | awk -F: '/time to (full|empty)/ \
+ {sub(/^[ \t]+/, "", $NF); \
+ sub(/\ hours?$/, "h", $NF); \
+ print $NF}')"
+ bat="${batcap}$batstat $battime"
fi
- batcap="$(echo "$b0" | awk '/percentage/ \
- {sub(/\%$/, "", $NF); \
- print $NF}')"
- battime="$(echo "$b0" | awk -F: '/time to (full|empty)/ \
- {sub(/^[ \t]+/, "", $NF); \
- sub(/\ hours?$/, "h", $NF); \
- print $NF}')"
- bat="${batcap}$batstat $battime"
bar="$bat | $bar"
;;
*)
;;
esac
- printf "$bar\n"
+ printf '%s\n' "$bar"
sleep 5
done