about summary refs log tree commit diff
path: root/Functions/Calendar/calendar_show
blob: 0e236fd172dc7c47df90cb992f91826eae8e4ea0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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 notification/message 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[kdialog]} && -n $KDE_SESSION_UID ]]
  then
    # We're in a KDE session, most probably.
    # Simple:
    cmd=(kdialog --msgbox)
    # Alternative:
    #  calendar_knotify_show() {
    #    dcop knotify default notify calendar zsh "$*" '' '' 2 0
    #  }
    #  cmd=(calendar_knotify_show)
  elif [[ -n ${commands[xmessage]} ]]; then
    cmd=(xmessage -center)
  fi
  if [[ -n $cmd[1] ]] &&
    ! ps -u$UID | grep $cmd[1] >/dev/null 2>&1; then
    # turn off job control for this
    ($cmd "$*" &)
  fi
fi

return 0