;;; dzen.el --- Control DZEN2 from emacs ;; Copyright (C) 2012 Tom Willemse ;; Author: Tom Willemse ;; Keywords: convenience ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; ;;; Code: (require 'newst-backend) (defvar dzen-process nil "Dzen2's process.") (defvar dzen-timer nil "Timer used to update the dzen line.") (defun get-mail-count (account) (length (directory-files (concat "/home/slash/documents/mail/" account "/inbox/new") nil "^[^.]"))) (defun dzen-update () (let ((strl "") (strc (if (boundp 'metal-express-radio-currently-playing) metal-express-radio-currently-playing "")) (strr (format "jabber: %s ryu: %d gm: %d aet: %d 9n: %d rss: %d\n" (oni:current-jabber-status) (get-mail-count "ryuslash.org") (get-mail-count "gmail") (get-mail-count "aethon") (get-mail-count "ninthfloor") (newsticker--stat-num-items-total 'new)))) (process-send-string "dzen2" (format "%s^p(_CENTER)^p(-%d)%s^p(_RIGHT)^p(-%d)%s" strl (* (floor (/ (length strc) 2)) 8) strc (+ 8 (* 8 (length strr))) strr)))) (defun dzen-start () (interactive) (if (or (null dzen-process) (not (process-live-p dzen-process))) (progn (setq dzen-process (start-process "dzen2" "*dzen2*" "dzen2" "-w" "1920" "-fn" "Monaco-10" "-bg" "#222224" "-fg" "#eeeeec" "-y" "1060")) (dzen-update) (setq dzen-timer (run-with-timer 1 1 #'dzen-update))) (message "Dzen2 already running"))) (defun dzen-stop () (interactive) (if (and dzen-process (process-live-p dzen-process)) (progn (when dzen-timer (cancel-timer dzen-timer)) (kill-process "dzen2")) (message "Dzen2 is not running")) (setq dzen-process nil dzen-timer nil)) (provide 'dzen) ;;; dzen.el ends here