summaryrefslogtreecommitdiff
path: root/overlays/worktime
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2025-02-22 16:11:21 +0100
committerGregor Kleen <gkleen@yggdrasil.li>2025-02-22 16:11:21 +0100
commit53828bd958ab22522253f2a11772765197351b15 (patch)
treef98e3672548b0cdb7250f27b525dd0b252eb743d /overlays/worktime
parent2ad00cf318305c83d1ac013f177458439d4bf9b3 (diff)
downloadnixos-53828bd958ab22522253f2a11772765197351b15.tar
nixos-53828bd958ab22522253f2a11772765197351b15.tar.gz
nixos-53828bd958ab22522253f2a11772765197351b15.tar.bz2
nixos-53828bd958ab22522253f2a11772765197351b15.tar.xz
nixos-53828bd958ab22522253f2a11772765197351b15.zip
Diffstat (limited to 'overlays/worktime')
-rwxr-xr-xoverlays/worktime/worktime/__main__.py23
1 files changed, 12 insertions, 11 deletions
diff --git a/overlays/worktime/worktime/__main__.py b/overlays/worktime/worktime/__main__.py
index cca5ab5a..c13d82ca 100755
--- a/overlays/worktime/worktime/__main__.py
+++ b/overlays/worktime/worktime/__main__.py
@@ -542,7 +542,7 @@ def worktime(pull_forward_cutoff, waybar, **args):
542 542
543 return difference_string 543 return difference_string
544 544
545 difference = worktime.time_to_work - worktime.time_worked + sum(worktime.pull_forward.values(), start=timedelta(milliseconds=0)) 545 difference = worktime.time_to_work - worktime.time_worked
546 total_minutes_difference = 5 * ceil(difference / timedelta(minutes = 5)) 546 total_minutes_difference = 5 * ceil(difference / timedelta(minutes = 5))
547 547
548 if worktime.running_entry and abs(difference) < timedelta(days = 1) and (total_minutes_difference > 0 or abs(worktime.running_entry) >= abs(difference)) : 548 if worktime.running_entry and abs(difference) < timedelta(days = 1) and (total_minutes_difference > 0 or abs(worktime.running_entry) >= abs(difference)) :
@@ -564,31 +564,29 @@ def worktime(pull_forward_cutoff, waybar, **args):
564 return f"{indicator}{difference_string}" 564 return f"{indicator}{difference_string}"
565 else: 565 else:
566 difference_string = difference_string(total_minutes_difference * timedelta(minutes = 1)) 566 difference_string = difference_string(total_minutes_difference * timedelta(minutes = 1))
567 if worktime.now_is_workday: 567 return difference_string
568 return difference_string
569 else:
570 return f"({difference_string})"
571 568
572 out_class = "running" if worktime.running_entry else "stopped" 569 out_class = "running" if worktime.running_entry else "stopped"
573 difference = worktime.time_to_work - worktime.time_worked 570 difference = worktime.time_to_work - worktime.time_worked
574 if worktime.running_entry and -min(timedelta(milliseconds=0), difference) > sum(worktime.pull_forward.values(), start=timedelta(milliseconds=0)) or not worktime.running_entry and max(timedelta(milliseconds=0), difference) > worktime.time_per_day(worktime.now.date()) and worktime.now_is_workday: 571 if worktime.running_entry and -min(timedelta(milliseconds=0), difference) > sum(worktime.pull_forward.values(), start=timedelta(milliseconds=0)) or not worktime.running_entry and max(timedelta(milliseconds=0), difference) > worktime.time_per_day(worktime.now.date()) and worktime.now_is_workday:
575 out_class = "over" 572 out_class = "over"
576 tooltip = tooltip_timedelta(difference) 573 pull_forward_sum = sum(worktime.pull_forward.values(), start=timedelta(milliseconds=0))
577 if worktime.time_pulled_forward >= min(pull_forward_cutoff, timedelta(seconds = 1)): 574 if pull_forward_sum >= min(pull_forward_cutoff, timedelta(seconds = 1)):
578 worktime_no_pulled_forward = deepcopy(worktime) 575 worktime_no_pulled_forward = deepcopy(worktime)
579 worktime_no_pulled_forward.time_to_work -= worktime_no_pulled_forward.time_pulled_forward 576 worktime_no_pulled_forward.time_to_work -= worktime_no_pulled_forward.time_pulled_forward
580 worktime_no_pulled_forward.time_pulled_forward = timedelta() 577 worktime_no_pulled_forward.time_pulled_forward = timedelta()
581 worktime_no_pulled_forward.pull_forward = dict() 578 worktime_no_pulled_forward.pull_forward = dict()
579 worktime.time_to_work += pull_forward_sum
582 580
583 difference_string = format_worktime(worktime)
584 difference_string_no_pulled_forward = format_worktime(worktime_no_pulled_forward) 581 difference_string_no_pulled_forward = format_worktime(worktime_no_pulled_forward)
585 582
586 tooltip = tooltip_timedelta(worktime_no_pulled_forward.time_to_work - worktime_no_pulled_forward.time_worked) + "…" + tooltip 583 tooltip = tooltip_timedelta(worktime_no_pulled_forward.time_to_work - worktime_no_pulled_forward.time_worked) + "…" + tooltip_timedelta(difference + pull_forward_sum)
587 if worktime.time_pulled_forward >= pull_forward_cutoff: 584 if pull_forward_sum >= pull_forward_cutoff:
588 out_text = f"{difference_string_no_pulled_forward}…{difference_string}" 585 out_text = f"{difference_string_no_pulled_forward}…{format_worktime(worktime)}"
589 else: 586 else:
590 out_text = format_worktime(worktime) 587 out_text = format_worktime(worktime)
591 else: 588 else:
589 tooltip = tooltip_timedelta(difference)
592 out_text = format_worktime(worktime) 590 out_text = format_worktime(worktime)
593 591
594 if waybar: 592 if waybar:
@@ -659,6 +657,9 @@ def time_worked(now, waybar, **args):
659 else: 657 else:
660 out_text = str(worked) 658 out_text = str(worked)
661 659
660 if not now.now_is_workday:
661 out_text = f'({out_text})'
662
662 if waybar: 663 if waybar:
663 json.dump({"text": out_text, "class": out_class, "tooltip": tooltip}, stdout) 664 json.dump({"text": out_text, "class": out_class, "tooltip": tooltip}, stdout)
664 else: 665 else: