From 6b06f757d3dc60b12446a86c9a165e070e9c5f80 Mon Sep 17 00:00:00 2001 From: Markus Katharina Brechtel Date: Wed, 5 Jan 2022 12:30:51 +0100 Subject: [PATCH] socket based activity notification --- files/bin/timer | 23 ++++++++++++++--------- templates/i3/i3blocks.config.j2 | 2 +- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/files/bin/timer b/files/bin/timer index d903bac..a072db4 100755 --- a/files/bin/timer +++ b/files/bin/timer @@ -4,22 +4,27 @@ set timer_folder ~/.timer set activity_lists_folder $timer_folder/activity.lists set activity_timeclock_file $timer_folder/activity.timeclock set activity_i3blocks_linefile $timer_folder/activity.i3blocks +set activity_i3blocks_socket $timer_folder/activity.i3blocks.sock set activity_current_file $timer_folder/activity.current set activity_timeclock_append_log_folder $timer_folder/activity.timeclock.d set activity_timeclock_append_log_filename $activity_timeclock_append_log_folder/(date +%Y-%m-%d)-(hostname) +function activity_i3blocks_show + tee $activity_i3blocks_linefile | socat - UNIX-CONNECT:$activity_i3blocks_socket +end + function parse_activity_timeclock sort -k2 | uniq \ |begin set state o while read -L line - set io (string sub -l 1 "$line") + set type (string sub -l 1 "$line") set date (string sub -s 3 -l 10 "$line") set time (string sub -s 14 -l 8 "$line") if [ $state = 'i' ] echo "o $date $time" end - if [ $io = 'i' ] + if [ $type = 'i' ] set state i set rs (string sub -s 23 "$line") string match -r '^(.+?)(?: (.+?))? *(?:;.*)?$' "$rs" \ @@ -29,22 +34,21 @@ function parse_activity_timeclock read -L payee end echo "i $date $time $rs" - else if [ $io = 'o' ] + else if [ $type = 'o' ] set state o end end end if [ $state = 'i' ] echo $activity > $activity_current_file - echo "★ $activity" > $activity_i3blocks_linefile + set i3blocks_activity + echo "★ $activity" | activity_i3blocks_show else rm $activity_current_file - echo "" > $activity_i3blocks_linefile + echo "" | activity_i3blocks_show end end - - function merge_timeclock_append_log cat $activity_timeclock_append_log_folder/* | parse_activity_timeclock > $activity_timeclock_file end @@ -63,15 +67,16 @@ end function begin_activity echo i (date '+%Y-%m-%d %H:%M:%S') $argv >> $activity_timeclock_append_log_filename - echo "★ $argv" > $activity_i3blocks_linefile + echo "★ $argv" | activity_i3blocks_show end function end_activity echo o (date '+%Y-%m-%d %H:%M:%S') >> $activity_timeclock_append_log_filename - echo "" > $activity_i3blocks_linefile + echo "" | activity_i3blocks_show end + set command $argv[1] switch $command diff --git a/templates/i3/i3blocks.config.j2 b/templates/i3/i3blocks.config.j2 index 7e7ed3d..4a6012c 100644 --- a/templates/i3/i3blocks.config.j2 +++ b/templates/i3/i3blocks.config.j2 @@ -32,7 +32,7 @@ markup=none # activity [activity] -command=tail -f ~/.timer/activity.i3blocks 2> /dev/null +command=cat ~/.timer/activity.i3blocks; socat UNIX-LISTEN:$HOME/.timer/activity.i3blocks.sock,fork - interval=persist markup=pango