stumpwm-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [STUMP] using threads in mode line modules to avoid blocking


From: Joseph Mingrone
Subject: Re: [STUMP] using threads in mode line modules to avoid blocking
Date: Tue, 03 Mar 2015 23:22:04 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (berkeley-unix)

David Bjergaard <address@hidden> writes:
> Thinking out loud (this is beyond my expertise), could it be that your
> thread isn't being terminated properly if you lose connection to the
> remote host? If stumpwm (or the lisp kernel) polls your thread and gets
> no response, it probably just hangs there waiting.
>
> Someone with more experience may have better insights.
>
>     Dave

I tested a new version that only creates one thread and keeps it
running.  It causes the same choppiness, so I don't think that is the
problem.

Joseph

;; swm-maildir-modline.lisp
;;
;; Put %m in your modeline format string to show number of new mails
;;

(in-package #:swm-maildir-modeline)

(defvar *checking-flag* nil)
(defvar *host* "myhost")
(defvar *interval* 60)
(defvar *maildir-prev-time* 0)
(defvar *new-mail-count* "")
(defvar *port* "22")
(defvar *path* "mail/new")
(defvar *user* "me")

(defun check-new-messages ()
  (sb-thread:make-thread
    (lambda ()
      (loop
         (setf *new-mail-count*
               (string-trim
                '(#\Space #\Tab #\Newline)
                (stumpwm::run-prog-collect-output
                 stumpwm::*shell-program* "-c"
                 (concatenate 'string "/usr/bin/ssh -p " *port*
                              " -x -o ConnectTimeout=1 " *user*
                              "@" *host* " 'ls " *path*
                              " | wc -l'"))))
      (sleep *interval*)))
    :name "check-new-messages-thread"))

(defun fmt-maildir-modeline (ml)
  "Return the number of new mails"
  (when (not *checking-flag*)
    (setf *checking-flag* t)
    (check-new-messages))
  (when (string= *new-mail-count* "0")
    (setf *new-mail-count* ""))
  (format nil "~a" *new-mail-count*))

;; Install formatter
(stumpwm::add-screen-mode-line-formatter #\m #'fmt-maildir-modeline)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]