working calendar alarms
This commit is contained in:
		
							parent
							
								
									30d6281a8f
								
							
						
					
					
						commit
						00c9c074c1
					
				|  | @ -35,7 +35,7 @@ | ||||||
|     origin = top-right |     origin = top-right | ||||||
| 
 | 
 | ||||||
|     # Offset from the origin |     # Offset from the origin | ||||||
|     offset = 22x28 |     offset = 18x36 | ||||||
| 
 | 
 | ||||||
|     # Scale factor. It is auto-detected if value is 0. |     # Scale factor. It is auto-detected if value is 0. | ||||||
|     scale = 0 |     scale = 0 | ||||||
|  | @ -182,7 +182,7 @@ | ||||||
|     hide_duplicate_count = true |     hide_duplicate_count = true | ||||||
| 
 | 
 | ||||||
|     # Display indicators for URLs (U) and actions (A). |     # Display indicators for URLs (U) and actions (A). | ||||||
|     show_indicators = yes |     show_indicators = no | ||||||
| 
 | 
 | ||||||
|     ### Icons ### |     ### Icons ### | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -5,53 +5,13 @@ | ||||||
|     serviceConfig.Type = "simple"; |     serviceConfig.Type = "simple"; | ||||||
|     path = [ |     path = [ | ||||||
|       pkgs.libnotify |       pkgs.libnotify | ||||||
|       pkgs.dunstify |       pkgs.dunst | ||||||
|       pkgs.khal |       pkgs.khal | ||||||
|  |       pkgs.unixtools.column | ||||||
|  |       pkgs.diffutils | ||||||
|     ]; |     ]; | ||||||
|     startAt = "*08:00:00"; |     startAt = "*08:00:00"; | ||||||
|     script = '' |     script = builtins.readFile ./alarm.sh; | ||||||
|       #!/usr/bin/env bash |  | ||||||
| 
 |  | ||||||
|       cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/khal-events" |  | ||||||
|       # events starting in the next TIMESPAN will trigger an alarm |  | ||||||
|       timespan='60min' |  | ||||||
| 
 |  | ||||||
|       # this is needed for cronjobs and Xorg |  | ||||||
|       export DISPLAY=":0" |  | ||||||
|       snooze_string='💤 Snooze all.' |  | ||||||
|       dismiss_string='✅ Dismiss all.' |  | ||||||
|       # only show events with ⏰ symbol (=has alarm set) |  | ||||||
|       # remove arrows for all-day events to only have one notification |  | ||||||
|       # remove ⏰ symbol because it is obvious |  | ||||||
|       events="$(khal list --format \ |  | ||||||
|         '{cancelled}{start-style}{to-style}{end-style} {title}{description-separator}{description}{location}{repeat-symbol}{alarm-symbol}' \ |  | ||||||
|         now "${timespan}" \ |  | ||||||
|         | sed -ne '/⏰/ p' \ |  | ||||||
|         | sed -e 's/⏰//g' -e 's/\(↦\|↔\|⇥\)[^[:blank:]]*/all-day/g' \ |  | ||||||
|         | column -tl 3)" |  | ||||||
| 
 |  | ||||||
|       # get events that are new compared to cache file |  | ||||||
|       new_events="$(diff -NwU 0 "${cache_file}" - << EOF | sed -ne '/^\+[^+]/ p' \ |  | ||||||
|         | sed -ne 's/^\+\([[:print:]].*\)$/\1/p' |  | ||||||
|       ${events} |  | ||||||
|       EOF |  | ||||||
|       )" |  | ||||||
| 
 |  | ||||||
|       [ -z "${new_events}" ] && exit 0 |  | ||||||
| 
 |  | ||||||
|       action="$(dunstify --action="default,Dismiss" --action="snooze,Snooze" "${new_events}")" |  | ||||||
| 
 |  | ||||||
|       case "${action}" in |  | ||||||
|         "snooze") |  | ||||||
|           ;; |  | ||||||
|         "default") |  | ||||||
|           printf '%s' "${events}" > "${cache_file}" |  | ||||||
|           ;; |  | ||||||
|         *) |  | ||||||
|           printf '%s' "${events}" | grep -Fve "${input}" > "${cache_file}" |  | ||||||
|           ;; |  | ||||||
|       esac |  | ||||||
|     ''; |  | ||||||
|     serviceConfig = { |     serviceConfig = { | ||||||
|       User = "anish"; |       User = "anish"; | ||||||
|       Environment = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus"; |       Environment = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus"; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue