blob: acdc6298d213f5f598f91ef7a87d8e80d316423c (
plain)
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
;; candy
(defvar jao-osd-cat-color-fg "black")
(defvar jao-osd-cat-color-bg "white")
(defvar jao-osd-cat-font "Andika Basic 16")
;; (setq jao-osd-cat-font "Inconsolata 20")
(defun jao-osd-cat-font (&optional font)
(or font jao-osd-cat-font))
(defun jao-osd-process-args (&optional font fg bg)
`("-n" ,(jao-osd-cat-font font)
"-R" ,(or bg jao-osd-cat-color-fg) "-B" ,(or fg jao-osd-cat-color-bg)
"-b" "200" "-r" "255"
"-e" "0" "-t" "2" "-d" "10" "-p" "0" "-x" "10" "-y" "10" "-u" "5000"))
(setq jao-osd-processes (make-hash-table))
(defsubst jao-osd--delete-process (name)
(remhash name jao-osd-processes))
(defun jao-osd-process (name &optional font color)
(let ((proc (gethash name jao-osd-processes)))
(or (and proc (eq (process-status proc) 'run) proc)
(puthash name
(apply 'start-process
`("notifications"
,(format "*notifications/%s*" name)
"aosd_cat"
,@(jao-osd-process-args)))
jao-osd-processes))))
(defun jao-osd-cat (name lines)
(let* ((proc (jao-osd-process name))
(lines (if (listp lines) lines (list lines)))
(trail (- 5 (length lines))))
(when proc
(dolist (line lines)
(send-string proc (format "%s\n" line))))))
; (when (> trail 0) (send-string proc (make-string trail ?\n))))))
(defun jao-osd--names ()
(let (names)
(maphash (lambda (n k) (push n names)) jao-osd-processes)
(reverse names)))
(defun jao-osd-kill (name)
(let ((proc (gethash name jao-osd-processes)))
(when (processp proc)
(kill-process proc))))
(defun jao-osd-kill-notifiers ()
(interactive)
(maphash (lambda (n p) (ignore-errors (kill-process p))) jao-osd-processes)
(clrhash jao-osd-processes))
(provide 'jao-osd)
|