diff --git a/defaults/main.yaml b/defaults/main.yaml index 2b3bf2e..88c89bd 100644 --- a/defaults/main.yaml +++ b/defaults/main.yaml @@ -57,3 +57,5 @@ home_autostart_nm_applet: "{{ home_profile != 'vdesk' }}" home_autostart_blueman_applet: "{{ home_profile != 'vdesk' }}" home_autostart_pasystray: "{{ home_profile != 'vdesk' }}" home_autostart_unclutter: "{{ home_profile == 'presentation' }}" + +default_activities: [] diff --git a/files/bin/timer b/files/bin/timer index da6a1e3..c5ed34b 100755 --- a/files/bin/timer +++ b/files/bin/timer @@ -1,11 +1,99 @@ #!/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 $timer_folder/activity.i3blocks +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 set_i3blocks_activity_display + echo $argv[1] > $activity_i3blocks + pkill -RTMIN+1 i3blocks +end + +function parse_activity_timeclock + sort -k2 | uniq \ + |begin + set state o + while read -L line + set io (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' ] + 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 [ $io = 'o' ] + set state o + end + end + end + if [ $state = 'i' ] + echo $activity > $activity_current_file + set_i3blocks_activity_display "★ $activity" + else + rm $activity_current_file + set_i3blocks_activity_display "" + 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 +end + +function end_activity + echo o (date '+%Y-%m-%d %H:%M:%S') >> $activity_timeclock_append_log_filename +end + + set command $argv[1] switch $command - case "activity" - /opt/activity/select_activity + + 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" - /opt/activity/activity 'Arbeit:Uniklinik Köln' - case "end" - /opt/activity/activity + begin_activity 'Arbeit:Uniklinik Köln' + end + +merge_timeclock_append_log diff --git a/tasks/timer.yaml b/tasks/timer.yaml index b40e821..5cdb662 100644 --- a/tasks/timer.yaml +++ b/tasks/timer.yaml @@ -14,3 +14,8 @@ file: path: "{{timer_folder}}/activity.lists" state: directory + +- name: timer default activities + copy: + content: "{{ default_activities | join('\n') }}" + dest: "{{timer_folder}}/activity.lists/10-default"