jabber.el по умолчанию пишет о поступивших сообщениях в mode line. Когда я в другом
workspace читал бровзер (или перекрывал emacs консолью), то мог пропустить приглашение
на пьянку и испытывал очевидный дискомфорт.
Поэтому недавно я настроил себе OSD оповещалку, основанную на
osd_cat
(в Debian: xosd-bin). Она теперь регулярно пишет в правом нижнем углу
красными буквами who, стоит только этому "who" ко мне обратиться
[1].
;; On-Screen Display (OSD) message alerts
(when (and (display-graphic-p)
(file-executable-p "/usr/bin/osd_cat"))
(defun xosd-start ()
(let ((process-connection-type nil))
(start-process-shell-command
"osd_cat" nil "osd_cat" "--pos=bottom" "--align=right" "--lines=1"
"--font='-adobe-helvetica-bold-r-*-*-34-*-*-*-*-*-iso10646-1'")))
(add-hook 'jabber-post-connect-hook 'xosd-start)
(add-hook 'jabber-post-disconnect-hook
(function (lambda () (process-send-eof "osd_cat"))))
(defun jabber-message-osd (from buffer text proposed-alert)
"Display a message using the osd_cat program."
(let* ((jid (if (jabber-muc-sender-p from)
from
(jabber-jid-user from)))
(name (cdr (jabber-activity-lookup-name jid))))
(process-send-string "osd_cat" (concat name "\n"))))
(add-hook 'jabber-alert-message-hooks 'jabber-message-osd))
Спасибо
_adept_ за наводку на osd_cat.
Спасибо
shmyg за посылку сообщений (а не меня) при тестировании.
[1] Все упомянутые "who" являются вымышленными и любые совпадения с реальными лицами совершенно случайны.