Refresh clock on the minute instead of every 10 seconds.

This commit is contained in:
Tom Alexander
2024-05-07 08:52:34 -04:00
parent a2bdb93d5e
commit 5fa7f918a1
8 changed files with 89 additions and 170 deletions

View File

@@ -10,7 +10,6 @@ from functools import lru_cache
from typing import Final, List, Optional
from zoneinfo import ZoneInfo
INTERVAL: Final[int] = 10
LOCAL_TIMEZONE = datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo
@@ -87,10 +86,10 @@ def main():
time_before_next_update = next_update - time.time()
if time_before_next_update > 0:
time.sleep(time_before_next_update)
next_update = time.time() + INTERVAL
next_update = 60 * (1 + int(time.time()) // 60)
now = datetime.datetime.now(tz=tz)
text = now.strftime("%Y-%m-%d %H:%M")
text = now.strftime("%Y-%m-%d %H:%M:%S")
tooltip = make_calendar(now.date(), tz)
out = Update(

View File

@@ -1,78 +0,0 @@
#!/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}
DELAY_ACTION=${DELAY_ACTION:-2}
function main {
local previous_reported="-1"
local now=$(date +%s)
local check_again_at=$((now + SLEEP_INTERVAL))
local next_sleep_interval=$SLEEP_INTERVAL
stream_key_binding_activations | while true; do
if read -t "$next_sleep_interval" event; then
now=$(date +%s)
latest_allowed_check=$((now + DELAY_ACTION))
if [ "$latest_allowed_check" -lt "$check_again_at" ]; then
# Scheduling a debounced action
check_again_at=$latest_allowed_check
next_sleep_interval=$DELAY_ACTION
else
# New debounced event would trigger after a check is already scheduled
next_sleep_interval=$((check_again_at - now))
fi
if [ "$now" -lt "$check_again_at" ]; then
continue
fi
fi
if pgrep -q wl-screenrec; 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
now=$(date +%s)
check_again_at=$((now + SLEEP_INTERVAL))
next_sleep_interval=$SLEEP_INTERVAL
done
}
function stream_key_binding_activations {
echo "{}"
swaymsg --raw --monitor --type subscribe '[ "binding" ]'
}
function report {
is_running="$1"
if [ "$is_running" -eq 0 ]; then
jq --unbuffered --compact-output <<EOF
{
"text":"",
"tooltip":"Not recording",
"percentage":0,
"class":"hidden"
}
EOF
else
jq --unbuffered --compact-output <<EOF
{
"text":"⏺",
"tooltip":"Recording",
"percentage":100,
"class":"visible"
}
EOF
fi
}
main "${@}"