#!/usr/bin/fish 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 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 [ $type = 'i' ] set state i set rs (string sub -s 23 "$line") string match -r '^(.+?)(?: (.+?))? *(?:;.*)?$' "$rs" \ |begin read -L null read -L activity read -L payee end echo "i $date $time $rs" else if [ $type = 'o' ] set state o end end end if [ $state = 'i' ] echo $activity > $activity_current_file set i3blocks_activity echo "★ $activity" | activity_i3blocks_show else rm $activity_current_file echo "" | activity_i3blocks_show end end function merge_timeclock_append_log cat $activity_timeclock_append_log_folder/* | parse_activity_timeclock > $activity_timeclock_file end function get_current_timeclock_state merge_timeclock_append_log end function select_activity set next (cat $activity_lists_folder/* | rofi -dmenu -p activity) if [ ! -n "$next" ] exit 1 end begin_activity "$next" end function begin_activity echo i (date '+%Y-%m-%d %H:%M:%S') $argv >> $activity_timeclock_append_log_filename 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_show end set command $argv[1] switch $command case "select_activity" select_activity case "begin_activity" begin_activity $argv[2..-1] case "end_activity" end_activity case "show_activity" get_current_timeclock_state case "uniklinik" begin_activity 'Arbeit:Uniklinik Köln' end