ऑर्ग-मोड घटनाओं द्वारा ट्रिगर अलार्म (ऑडियो + विज़ुअल) स्थापित करने के लिए अच्छे तरीके?


35

मैं चाहता हूं कि विशिष्ट समय (या प्रारंभ समय) से जुड़ी ऑर्ग-मोड घटनाओं के आधार पर अलार्म सेट किया जाए। आदर्श रूप से ये ऑडियो और विजुअल होंगे, और कुछ हद तक अनुकूलित किए जा सकेंगे। मैं उपयोग करता था Sauron, लेकिन मैं इसे अब ऑर्ग-मोड ईवेंट्स (या ईमेल नोटिफिकेशन) के साथ काम नहीं कर सकता। अन्य अच्छे तरीके क्या हैं?

(मैं विशेष रूप से नोटिफिकेशन डेमॉन के माध्यम से स्क्रीन पर न केवल स्क्रीन पर प्रदर्शित होने में दिलचस्पी रखता हूं, बल्कि यह भी बोला जाता है (टेक्स्ट-टू-स्पीच)। मैं लिनक्स पर हूं।)



@ कॉन्सटेंटाइन - यह मुझे अलग लगता है। मैं इसे बनाने के लिए उपकरण नहीं माँग रहा हूँ, बल्कि पहले से मौजूद समाधान तैयार कर रहा हूँ। इसके अलावा, मैं वास्तव में DEADLINEs के लिए अलार्म में नहीं, बल्कि बार (प्रारंभ) से जुड़ी घटनाओं के लिए दिलचस्पी रखता हूं।
emacsomancer

ठीक है; मैंने अपनी टिप्पणी संपादित की। (मुझे लगता है कि हम दोनों इस बात से सहमत हैं कि आपका प्रश्न उसी से जुड़ा है जिससे मैं जुड़ा हूं।)
कॉन्स्टेंटाइन


2
यदि आपने फ़ंक्शन का उपयोग करके अपने org- एजेंडा फाइलों से नियुक्तियों को आयात करने के लिए बिल्टिन एप्ट सिस्टम का उपयोग किया है org-agenda-to-appt। फिर आप अपने इच्छित तरीके appt-disp-window-functionको सूचित करने के लिए अनुकूलित कर सकते हैं (जिसमें बाह्य कार्यक्रमों को शामिल करना शामिल हो सकता है)।
इकबाल अंसारी

जवाबों:


15

मैं अपने द्वारा उपयोग की जाने वाली प्रणाली से काफी खुश हूं, जो (मुझे लगता है) बिल्कुल वही है जो आप चाहते हैं। इसके दो भाग हैं: एक Emacs भाग जो अनुस्मारक और एक छोटे शेल प्रोग्राम (मैं लिनक्स का उपयोग कर रहा हूं) को पॉपअप + साउंड नोटिफिकेशन बनाने के लिए appt.el का उपयोग करता है। यहां मैं दोनों हिस्सों के लिए कोड साझा करता हूं।

ए) में कोड ~ / .emacs.d / init.el

(require 'appt)
(appt-activate t)

(setq appt-message-warning-time 5) ; Show notification 5 minutes before event
(setq appt-display-interval appt-message-warning-time) ; Disable multiple reminders
(setq appt-display-mode-line nil)

; Use appointment data from org-mode
(defun my-org-agenda-to-appt ()
  (interactive)
  (setq appt-time-msg-list nil)
  (org-agenda-to-appt))

; Update alarms when...
; (1) ... Starting Emacs
(my-org-agenda-to-appt)

; (2) ... Everyday at 12:05am (useful in case you keep Emacs always on)
(run-at-time "12:05am" (* 24 3600) 'my-org-agenda-to-appt)

; (3) ... When TODO.txt is saved
(add-hook 'after-save-hook
          '(lambda ()
             (if (string= (buffer-file-name) (concat (getenv "HOME") "/ideas/TODO.txt"))
                 (my-org-agenda-to-appt))))

; Display appointments as a window manager notification
(setq appt-disp-window-function 'my-appt-display)
(setq appt-delete-window-function (lambda () t))

(setq my-appt-notification-app (concat (getenv "HOME") "/bin/appt-notification"))

(defun my-appt-display (min-to-app new-time msg)
  (if (atom min-to-app)
    (start-process "my-appt-notification-app" nil my-appt-notification-app min-to-app msg)
  (dolist (i (number-sequence 0 (1- (length min-to-app))))
    (start-process "my-appt-notification-app" nil my-appt-notification-app (nth i min-to-app) (nth i msg)))))

बी) में कोड ~ / बिन / appt- अधिसूचना

#!/bin/sh

TIME="$1"
MSG="$2"

notify-send -t 0 "<br>Appointment in $TIME minutes:<br>$MSG<br>"
play "~/bin/alarm.wav"

ध्वनि सूचनाएं प्राप्त करने के लिए आप अंतिम पंक्ति (प्ले) को निम्नलिखित के साथ बदल सकते हैं:

espeak "Appointment in $TIME minutes: $MSG"

जब मैंने ऑर्ग-एजेंडा छोड़ने पर ऑटो- ; (4) ... Quitting org-agenda. (advice-add 'org-agenda-quit :after #'hw-org-agenda-to-appt)
अपडेटिंग ऐप के

नोट: आधी रात के आसपास अद्यतन करना रात के उल्लू के लिए महत्वपूर्ण है क्योंकि org-agenda-to-apptकेवल वर्तमान दिन के लिए ऐप बनाता है।
होलोक्रोनविवर

+1 यह बहुत अच्छा है। साझा करने के लिए धन्यवाद। मैंने इसके बजाय चेतावनी का उपयोग करने के लिए इसे थोड़ा संशोधित किया है । एक प्रश्न, हालांकि: क्या आपको कभी भी किसी भी भाग्य से यह मिला है कि वह प्रत्येक घटना के लिए कस्टम चेतावनी समय निर्धारित करने के लिए org "APPT_WARNTIME" संपत्ति के साथ काम कर रहा है? मैं इसे काम करने के लिए प्राप्त करने के लिए प्रतीत नहीं कर सकता।
जोसेफ आर।

11

आप Emacs> 24 में सूचनाओं का उपयोग कर सकते हैं :

(require 'notifications)

(notifications-notify :title "Achtung!"
                      :body (format "You have an appointment in %d minutes" 10)
                      :app-name "Emacs: Org"
                      :sound-name "alarm-clock-elapsed")

13
यह बहुत उपयोगी लगता है। क्या आप जानते हैं कि इसे कैसे एकीकृत किया जाए org-mode?
एरिकास्टोक्स

2

यह वही है जो मैंने समाप्त किया है:

;;; org-to-appt

;; based on http://emacs-fu.blogspot.nl/2009/11/showing-pop-ups.html
(defun talky-popup (title msg &optional icon sound)  
  "Show a popup if we're on X, or echo it otherwise; TITLE is the title
of the message, MSG is the context. Optionally, you can provide an ICON and
a sound to be played"

  (interactive)
  ;;verbal warning



  (shell-command
   ;;  (concat "espeak -v mb-en1 -k5 -s125 " "'" title " " msg "'" " --stdout | paplay") ;; use local espeak
   (concat "echo " "'" title "'" " " "'" msg "'" " |text-to-speech en-gb")  ;; use remote Google voices
    ;; text-to-speech is from https://github.com/taylorchu/speech-to-text-text-to-speech
   )
  (if (eq window-system 'x)
    (shell-command (concat "notify-send -u critical -t 1800000  " 

                     (if icon (concat "-i " icon) "")
                     " '" title "' '" msg "'"))
    ;; text only version

    (message (concat title ": " msg))))

;; the appointment notification facility
(setq
  appt-message-warning-time 15 ;; warn 15 min in advance

  appt-display-mode-line t     ;; show in the modeline
  appt-display-format 'window) ;; use our func
(appt-activate 1)              ;; active appt (appointment notification)
(display-time)                 ;; time display is required for this...

 ;; update appt each time agenda opened

(add-hook 'org-finalize-agenda-hook 'org-agenda-to-appt)

;; our little façade-function for talky-popup
 (defun talky-appt-display (min-to-app new-time msg)
    (talky-popup (format "In %s minute(s):" min-to-app) msg 
  ;;    "/usr/share/icons/gnome/32x32/status/appointment-soon.png"   ;; optional icon

  ;;    "/usr/share/sounds/ubuntu/stereo/phone-incoming-call.ogg"    ;; optional sound

        ))
  (setq appt-disp-window-function (function talky-appt-display))

यह स्कारामूचे के सेटअप के लिए भिन्न नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.