From: Tim Cross <email@example.com> To: stardiviner <firstname.lastname@example.org> Cc: Org-mode <email@example.com> Subject: Re: [PATCH] make org-notify support for macOS desktop notification Date: Tue, 06 Jul 2021 18:12:18 +1000 [thread overview] Message-ID: <firstname.lastname@example.org> (raw) In-Reply-To: <1AD5C686-43DF-4233-AA98-1BA06826BD42@gmail.com> stardiviner <email@example.com> writes: >> On Jul 6, 2021, at 8:06 AM, Tim Cross <firstname.lastname@example.org> wrote: >> >> >> stardiviner <email@example.com> writes: >> >>>> On Jul 5, 2021, at 7:55 PM, Maxim Nikulin <firstname.lastname@example.org> wrote: >>>> >>>> On 05/07/2021 10:50, stardiviner wrote: >>>>> I updated the patch, I found the package `osx-lib` contains solution. >>>>> So I removed the directly osascript process invocation. >>>> >>>> I have no objections any more. On the other hand I have no access to macOS, so >>>> I have not tested this patch. Feel free to ignore comments from this message, >>>> they are mostly matter of taste. >>>> >>>> I expect that a simple script "notify-send" may allow to avoid modification of >>>> code. Something like (untested, unsure concerning "quoted form of ...") >>>> >>>> #!/usr/bin/env osascript >>>> display notification (item 1 of argv) >>>> >>>> However if osx-lib in is installed automatically, it may be more convenient. >>>> Unsure if some of currently supported linux distributions have notify-send >>>> that can not handle title as the first argument. >>>> >>>>> - ((fboundp 'notifications-notify) >>>>> + ((and (eq system-type 'gnu/linux) (fboundp 'notifications-notify)) >>>> >>>> Does it mean that `notifications-notify' is bound but it does not work on >>>> macOS? If so, maybe it is better to put new clause for 'darwin above and to >>>> drop 'gnu/linux here. From my point of view, it is preferable to avoid >>>> additional requirement for `notifications-notify'. If someone will create a >>>> feature request for `notifications-notify' for macOS, it will just work >>>> without installing of additional packages as soon as such feature is >>>> implemented. >>>> >>>> >>> I indeed tried `notifications-notify`. And it does not work, reports error that >>> it needs dbus. PS. I used the Homebrew formulae version Emacs. >>> I considered the order of conditions. Because notifications and notify-send etc >>> requires dbus. So I guess only Linux supports that. So add system-type detection >>> will be better. WDYT? >> >> I think you can add dbus support to macOS using homebrew and that might >> resolve the issue. > > I checked my homebrew, I found the `dbus` is installed already. And in Emacs `(featurep ‘dbus)` returns t. > > But `(org-show-notification “test”)` returns error: > ``` > Debugger entered--Lisp error: (dbus-error "No connection to bus" :session) > dbus-message-internal(1 :session "org.freedesktop.Notifications" > "/org/freedesktop/Notifications" "org.freedesktop.Notifications" "Notify" > dbus-call-method-handler :string "Emacs" :uint32 0 :string > "/opt/homebrew/Cellar/emacs-head@28/28.0.50_1/share..." :string "Org mode > message" :string "test" (:array) ((:dict-entry "urgency" (:variant :byte 0))) > :int32 3000) > apply(dbus-message-internal 1 :session "org.freedesktop.Notifications" > "/org/freedesktop/Notifications" "org.freedesktop.Notifications" "Notify" > dbus-call-method-handler (:string "Emacs" :uint32 0 :string > "/opt/homebrew/Cellar/emacs-head@28/28.0.50_1/share..." :string "Org mode > message" :string "test" (:array) ((:dict-entry "urgency" (:variant :byte 0))) > :int32 3000)) > dbus-call-method(:session "org.freedesktop.Notifications" > "/org/freedesktop/Notifications" "org.freedesktop.Notifications" "Notify" > :string "Emacs" :uint32 0 :string > "/opt/homebrew/Cellar/emacs-head@28/28.0.50_1/share..." :string "Org mode > message" :string "test" (:array) ((:dict-entry "urgency" (:variant :byte 0))) > :int32 3000) > notifications-notify(:title "Org mode message" :body "test" :timeout 3000 :urgency low) > (cond ((functionp org-show-notification-handler) (funcall > org-show-notification-handler notification)) ((stringp > org-show-notification-handler) (start-process "emacs-timer-notification" nil > org-show-notification-handler notification)) ((fboundp 'w32-notification-notify) > (let ((id (w32-notification-notify :title "Org mode message" :body notification > :urgency 'low))) (run-with-timer org-show-notification-timeout nil #'(lambda nil > (w32-notification-close id))))) ((fboundp 'notifications-notify) > (notifications-notify :title "Org mode message" :body notification :timeout (* > org-show-notification-timeout 1000) :urgency 'low)) ((executable-find > "notify-send") (start-process "emacs-timer-notification" nil "notify-send" > notification)) (t (message "%s" notification))) > org-show-notification("test") > eval((org-show-notification "test") nil) > elisp--eval-last-sexp(nil) > eval-last-sexp(nil) > funcall-interactively(eval-last-sexp nil) > call-interactively(eval-last-sexp nil nil) > command-execute(eval-last-sexp) > > ``` > > Seems Emacs can’t connect to Homebrew dbus session. But I checked homebrew services, the dbus service is running. Probably some permission issue. I'll try to boot up my old mac on the weekend and see if I can get it working. The other thing which also needs to be considered is whether your patch will have any adverse impact for users of the mac port of Emacs. I've been running the railwaycat emacs mac port formula from brew for ages now. It works much better than vanilla emacs on macOS. Don't know what the situation is with either dbus or integration with macOS notifications - I seem to recall something about getting closer integration using the mac ports version. I resisted the mac port of Emacs for years, believing it was better to stick to stock standard Emacs. However, when I did decide to try it out, I was surprised how much better it worked. Lots of little niggles I had with the standard Emacs under OSX/macOS just vanished. In fact, the biggest issue I had to deal with was removing all my hacky kludges I'd added over the years to make Emacs work well on the mac. Highly recommend it. -- Tim Cross
next prev parent reply other threads:[~2021-07-06 8:20 UTC|newest] Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-07-04 0:23 stardiviner 2021-07-04 5:48 ` Maxim Nikulin 2021-07-05 3:50 ` stardiviner 2021-07-05 11:55 ` Maxim Nikulin 2021-07-05 22:36 ` stardiviner 2021-07-06 0:06 ` Tim Cross 2021-07-06 1:37 ` stardiviner 2021-07-06 8:12 ` Tim Cross [this message] 2021-07-06 1:45 ` [new patch] " stardiviner 2021-07-06 4:21 ` Christian Hopps 2021-07-06 15:30 ` [new patch] " stardiviner 2021-07-06 18:23 ` Christian Hopps 2021-07-08 0:00 ` stardiviner 2021-07-08 8:59 ` Christian Hopps 2021-07-08 9:35 ` STOP this patch for now stardiviner 2021-07-08 12:02 ` Christian Hopps 2021-07-06 12:13 ` [PATCH] make org-notify support for macOS desktop notification Maxim Nikulin 2021-09-26 8:52 ` [new patch] " Bastien 2021-09-30 15:01 ` Max Nikulin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: https://www.orgmode.org/ * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --subject='Re: [PATCH] make org-notify support for macOS desktop notification' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).