From d8049e932d2c6f51b0a728cbf0465d2cb7e9a690 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 13 Nov 2022 16:39:34 -0500 Subject: [PATCH] Add sound to waybar on FreeBSD. --- ansible/playbook.yaml | 46 +++++++++---------- ansible/roles/sway/files/style.css | 1 + ansible/roles/sway/files/waybar_config.json | 8 +++- .../sway/files/waybar_sound_freebsd.bash | 36 +++++++++++++++ ansible/roles/sway/tasks/freebsd.yaml | 2 + 5 files changed, 68 insertions(+), 25 deletions(-) create mode 100644 ansible/roles/sway/files/waybar_sound_freebsd.bash diff --git a/ansible/playbook.yaml b/ansible/playbook.yaml index 7e25133..716378b 100644 --- a/ansible/playbook.yaml +++ b/ansible/playbook.yaml @@ -2,29 +2,29 @@ vars: ansible_become: True roles: - # - sudo + - sudo - users - # - package_manager - # - zrepl - # - zsh - # - network - # - sshd - # - base - # - firewall - # - cpu - # - ntp - # - build - # - graphics - # - gpg - # - fonts - # - alacritty - # - sway - # - emacs - # - firefox - # - devfs - # - ssh_client + - package_manager + - zrepl + - zsh + - network + - sshd + - base + - firewall + - cpu + - ntp + - build + - graphics + - gpg + - fonts + - alacritty + - sway + - emacs + - firefox + - devfs + - ssh_client - jail - # - fuse - # - autofs - # - exfat + - fuse + - autofs + - exfat - bhyve diff --git a/ansible/roles/sway/files/style.css b/ansible/roles/sway/files/style.css index e29394d..b908208 100644 --- a/ansible/roles/sway/files/style.css +++ b/ansible/roles/sway/files/style.css @@ -53,6 +53,7 @@ #custom-available_memory, #custom-battery, #custom-clock, +#custom-sound, #idle_inhibitor, #memory, #mode, diff --git a/ansible/roles/sway/files/waybar_config.json b/ansible/roles/sway/files/waybar_config.json index be41923..564cf37 100644 --- a/ansible/roles/sway/files/waybar_config.json +++ b/ansible/roles/sway/files/waybar_config.json @@ -1,7 +1,7 @@ { // "height": 10, // Waybar height (to be removed for auto height) "modules-left": ["sway/workspaces", "sway/mode"], - "modules-right": ["custom/available_memory", "custom/battery", "idle_inhibitor", "custom/clock", "tray"], + "modules-right": ["custom/sound", "custom/available_memory", "custom/battery", "idle_inhibitor", "custom/clock", "tray"], "sway/workspaces": { "disable-scroll": true }, @@ -33,6 +33,10 @@ "exec": "waybar_custom_available_memory", "return-type": "json", "restart-interval": 30 + }, + "custom/sound": { + "exec": "waybar_custom_sound", + "return-type": "json", + "restart-interval": 30 } - } diff --git a/ansible/roles/sway/files/waybar_sound_freebsd.bash b/ansible/roles/sway/files/waybar_sound_freebsd.bash new file mode 100644 index 0000000..b9cef40 --- /dev/null +++ b/ansible/roles/sway/files/waybar_sound_freebsd.bash @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +# +# Read volume status in FreeBSD +set -euo pipefail +IFS=$'\n\t' +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +SLEEP_INTERVAL=${SLEEP_INTERVAL:-30} + +while true; do + current_vol_mixer=$(mixer -S vol) + vol_left=$(cut -d ':' -f 2 <<<"$current_vol_mixer") + vol_right=$(cut -d ':' -f 3 <<<"$current_vol_mixer") + avg_vol=$(((vol_left + vol_right) / 2)) + tooltip="$(mixer)" + class="" + icon="" + + if [ $avg_vol -eq 0 ]; then + icon="🔇" + elif [ $avg_vol -le 50 ]; then + icon="🔉" + else + icon="🔊" + fi + + jq --unbuffered --compact-output <