From a31fef36ff03a057a743fdc1c2d234270137caa0 Mon Sep 17 00:00:00 2001 From: Amin Bandali Date: Thu, 19 Sep 2024 12:14:57 -0400 Subject: Get b-bar battery from GNU Emacs if available --- .emacs.d/init.el | 3 ++- .local/bin/b-bar | 39 +++++++++++++++++++++++---------------- 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 -- cgit v1.2.3-60-g2f50