From 7b625d19a5d5f4fb57f2c02adab35a1b7458f7be Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Thu, 27 Oct 2022 02:29:45 -0400 Subject: [PATCH] Add a custom battery script for FreeBSD. --- ansible/roles/sway/files/style.css | 4 +- ansible/roles/sway/files/waybar_battery | 50 +++++++++++++++++++++ ansible/roles/sway/files/waybar_config.json | 9 +++- ansible/roles/sway/tasks/common.yaml | 2 + ansible/roles/sway/tasks/freebsd.yaml | 1 + 5 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 ansible/roles/sway/files/waybar_battery diff --git a/ansible/roles/sway/files/style.css b/ansible/roles/sway/files/style.css index 1ccc260..428b88c 100644 --- a/ansible/roles/sway/files/style.css +++ b/ansible/roles/sway/files/style.css @@ -50,8 +50,9 @@ #battery, #clock, #cpu, -#custom-keyboard-layout, +#custom-battery, #custom-clock, +#idle_inhibitor, #memory, #mode, #network, @@ -60,6 +61,7 @@ #tray { padding-left: 10px; padding-right: 10px; + border: 1px solid white; } diff --git a/ansible/roles/sway/files/waybar_battery b/ansible/roles/sway/files/waybar_battery new file mode 100644 index 0000000..7dd0741 --- /dev/null +++ b/ansible/roles/sway/files/waybar_battery @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +# +# Read battery status in FreeBSD +set -euo pipefail +IFS=$'\n\t' +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# TODO: Which is better, apm or reading sysctls from hw.acpi.battery ? + +SLEEP_INTERVAL=${SLEEP_INTERVAL:-30} + +while true; do + battery_percentage=$(apm -l) + battery_status=$(apm -b) + seconds_remaining=$(apm -t) + + if [ $battery_status -eq 3 ]; then + if [ $battery_percentage -eq 100 ]; then + battery_icon="" + else + battery_icon="" + fi + elif [ $battery_percentage -le 20 ]; then + battery_icon="" + elif [ $battery_percentage -le 40 ]; then + battery_icon="" + elif [ $battery_percentage -le 60 ]; then + battery_icon="" + elif [ $battery_percentage -le 80 ]; then + battery_icon="" + elif [ $battery_percentage -lt 100 ]; then + battery_icon="" + else + battery_icon="" + fi + if [ $seconds_remaining -eq -1 ]; then + time_remaining="unknown time remaining." + else + time_remaining=$(printf '%dh:%dm:%ds\n' $((seconds_remaining/3600)) $((seconds_remaining%3600/60)) $((seconds_remaining%60)) ) + fi + + jq --unbuffered --compact-output <{}" @@ -23,5 +23,10 @@ "exec": "waybar_custom_clock", "return-type": "json", "restart-interval": 30 + }, + "custom/battery": { + "exec": "waybar_custom_battery", + "return-type": "json", + "restart-interval": 30 } } diff --git a/ansible/roles/sway/tasks/common.yaml b/ansible/roles/sway/tasks/common.yaml index a3c22b8..cd10d6b 100644 --- a/ansible/roles/sway/tasks/common.yaml +++ b/ansible/roles/sway/tasks/common.yaml @@ -8,6 +8,8 @@ loop: - src: waybar_custom_clock.py dest: /usr/local/bin/waybar_custom_clock + - src: waybar_battery + dest: /usr/local/bin/waybar_custom_battery - import_tasks: tasks/freebsd.yaml when: 'os_flavor == "freebsd"' diff --git a/ansible/roles/sway/tasks/freebsd.yaml b/ansible/roles/sway/tasks/freebsd.yaml index f9cedef..abca8ee 100644 --- a/ansible/roles/sway/tasks/freebsd.yaml +++ b/ansible/roles/sway/tasks/freebsd.yaml @@ -23,6 +23,7 @@ - wtype # for rofimoji to be able to insert characters - dbus # for desktop notifications - lumina-fm + - jq state: present - name: Install service configuration