From 8ea4ca15d81f7a5c0b083141573e6c0507b2a37f Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Tue, 29 Nov 2022 00:15:48 -0500 Subject: [PATCH] Add an indicator to FreeBSD for when recording is active. --- ansible/roles/waybar/files/style.css | 5 ++ ansible/roles/waybar/files/waybar_config.json | 7 ++- .../waybar_recording_indicator_freebsd.bash | 57 +++++++++++++++++++ ansible/roles/waybar/tasks/freebsd.yaml | 2 + 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 ansible/roles/waybar/files/waybar_scripts/waybar_recording_indicator_freebsd.bash diff --git a/ansible/roles/waybar/files/style.css b/ansible/roles/waybar/files/style.css index 7ba62e9..a74af00 100644 --- a/ansible/roles/waybar/files/style.css +++ b/ansible/roles/waybar/files/style.css @@ -65,6 +65,7 @@ tooltip { #custom-clock, #custom-sound, #custom-temperature, +#custom-recording_indicator, #idle_inhibitor, #memory, #mode, @@ -204,3 +205,7 @@ tooltip { border-color: #c9545d; color: #c9545d; } + +#custom-recording_indicator { + color: red; +} diff --git a/ansible/roles/waybar/files/waybar_config.json b/ansible/roles/waybar/files/waybar_config.json index d6949c3..14eeca7 100644 --- a/ansible/roles/waybar/files/waybar_config.json +++ b/ansible/roles/waybar/files/waybar_config.json @@ -1,6 +1,6 @@ { // "height": 10, // Waybar height (to be removed for auto height) - "modules-left": ["sway/workspaces", "sway/mode"], + "modules-left": ["sway/workspaces", "sway/mode", "custom/recording_indicator"], "modules-right": ["custom/temperature", "custom/sound", "custom/available_memory", "custom/battery", "idle_inhibitor", "custom/clock", "tray"], "sway/workspaces": { "disable-scroll": true @@ -43,5 +43,10 @@ "exec": "waybar_custom_temperature", "return-type": "json", "restart-interval": 30 + }, + "custom/recording_indicator": { + "exec": "waybar_custom_recording_indicator", + "return-type": "json", + "restart-interval": 30 } } diff --git a/ansible/roles/waybar/files/waybar_scripts/waybar_recording_indicator_freebsd.bash b/ansible/roles/waybar/files/waybar_scripts/waybar_recording_indicator_freebsd.bash new file mode 100644 index 0000000..f9ec329 --- /dev/null +++ b/ansible/roles/waybar/files/waybar_scripts/waybar_recording_indicator_freebsd.bash @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +# +# Report screen recording status in FreeBSD +set -euo pipefail +IFS=$'\n\t' +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +SLEEP_INTERVAL=${SLEEP_INTERVAL:-10} + +function main { + local previous_reported="-1" + + stream_key_binding_activations | while read -t "$SLEEP_INTERVAL" event; do + if pgrep -q wf-recorder; then + local is_running=1 + else + local is_running=0 + fi + if [ "$is_running" -ne "$previous_reported" ]; then + previous_reported="$is_running" + report "$is_running" + fi + done + + while true; do + sleep $SLEEP_INTERVAL + done +} + +function stream_key_binding_activations { + swaymsg --raw --monitor --type subscribe '[ "binding" ]' +} + +function report { + is_running="$1" + if [ "$is_running" -eq 0 ]; then + jq --unbuffered --compact-output <