about summary refs log tree commit diff
path: root/Functions/Calendar/calendar_show
diff options
context:
space:
mode:
Diffstat (limited to 'Functions/Calendar/calendar_show')
-rw-r--r--Functions/Calendar/calendar_show24
1 files changed, 24 insertions, 0 deletions
diff --git a/Functions/Calendar/calendar_show b/Functions/Calendar/calendar_show
new file mode 100644
index 000000000..f731d07a5
--- /dev/null
+++ b/Functions/Calendar/calendar_show
@@ -0,0 +1,24 @@
+integer start=$1 stop=$2
+shift 2
+
+[[ -o zle ]] && zle -I
+print -r "$*"
+
+local -a cmd
+zmodload -i zsh/parameter || return
+
+# Use xmessage to display the message if the start and stop time
+# are the same, indicating we have been scheduled to display it.
+# Don't do this if there's already an xmessage for the same user.
+# HERE: this should be configurable and we should be able to do
+# better if xmessage isn't available, e.g. wish.
+if [[ -n $DISPLAY &&  $start -eq $stop ]]; then
+  if [[ -n ${commands[xmessage]} ]]; then
+    cmd=(xmessage -center)
+  fi
+  if [[ -n $cmd[0] ]] &&
+    ! ps -u$UID | grep $cmd[0] >/dev/null 2>&1; then
+    # turn off job control for this
+    ($cmd "$*" &)
+  fi
+fi