Ram-Ashwin@cs.yale.edu (Ashwin Ram) (01/11/89)
I have a hack to continuously display the free disk space (using /bin/df or
/com/lvolfs or whatever). Typing M-x free-space-checker gives you something
like "21% free" or "79% used" in your mode line (along with the day-date and
Mail notification).
To use:
(autoload "free-space-checker" "free-space" nil t)
M-x free-space-checker - interactive
(free-space-checker) - in your ~/.emacs file.
There are two files, free-space.el (with the GNU Emacs lisp code) and
free-space-checker (a shell script to output the info to be put into the mode
line).
Comments and improvements are welcome.
-- Ashwin.
ARPA: Ram-Ashwin@cs.yale.edu
UUCP: {decvax,ucbvax,harvard,cmcl2,...}!yale!Ram-Ashwin
BITNET: Ram@yalecs
--- --- --- --- cut here, save in free-space.el --- --- --- ---
;; FREE-SPACE.EL -- Show disk space free in mode line.
;;
;; This file is not part of the GNU Emacs distribution (yet).
;;
;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY. No author or distributor
;; accepts responsibility to anyone for the consequences of using it
;; or for whether it serves any particular purpose or works at all,
;; unless he says so in writing. Refer to the GNU Emacs General Public
;; License for full details.
;;
;; Everyone is granted permission to copy, modify and redistribute
;; this file, but only under the conditions described in the
;; GNU Emacs General Public License. A copy of this license is
;; supposed to have been given to you along with GNU Emacs so you
;; can know your rights and responsibilities. It should be in a
;; file named COPYING. Among other things, the copyright notice
;; and this notice must be preserved on all copies.
;;
;; Comments, corrections, and improvements should be sent to:
;;
;; Ashwin Ram
;;
;; ARPA: Ram-Ashwin@cs.yale.edu
;; UUCP: {decvax,ucbvax,harvard,cmcl2,...}!yale!Ram-Ashwin
;; BITNET: Ram@yalecs
;;
;;
;; MODIFICATION HISTORY:
;;
;; 01/08/89 Ashwin Ram <Ram-Ashwin@cs.yale.edu>
;; Initial release.
(defvar free-space-checker-program
"free-space-checker"
"\
*Program to check if there are new bboard messages to be read. Should produce
something like \"65%\" or \"65% free\" or \"35% used\" on standard output.")
(defvar free-space-checker-process nil)
(defvar free-space-checker-string nil)
(defun free-space-checker ()
"\
Start a background process to display \"nn% free\" or \"nn% used\" in the mode line."
(interactive)
(if (and free-space-checker-process
(eq (process-status free-space-checker-process) 'run))
(message "You already have an free-space-checker process running.")
(save-excursion
(if free-space-checker-process
(delete-process free-space-checker-process))
(or global-mode-string (setq global-mode-string '("")))
(or (memq 'free-space-checker-string global-mode-string)
(setq global-mode-string
(append global-mode-string '(free-space-checker-string))))
(setq free-space-checker-process (start-process "free-space-checker" nil free-space-checker-program))
(process-kill-without-query free-space-checker-process)
(set-process-sentinel free-space-checker-process 'free-space-checker-sentinel)
(set-process-filter free-space-checker-process 'free-space-checker-filter))))
(defun free-space-checker-sentinel (proc reason)
(or (eq (process-status proc) 'run)
(setq free-space-checker-string ""))
(force-mode-line-update))
(defun free-space-checker-filter (proc string)
(setq free-space-checker-string (concat " " string))
(force-mode-line-update))
(defun force-mode-line-update ()
"This is swiped from time.el and really should be part of GNU Emacs."
;; Force redisplay of all buffers' mode lines to be considered.
(save-excursion (set-buffer (other-buffer)))
(set-buffer-modified-p (buffer-modified-p))
;; Do redisplay right now, if no input pending.
(sit-for 0))
--- --- --- --- cut here, end of free-space.el --- --- --- ---
Here are a couple of sample free-space-checker files:
For the Apollos:
--- --- --- --- cut here, save in free-space-checker --- --- --- ---
#!/com/sh
/com/ppri -lo 1 -hi 1
while ((true)) do
lvolfs | fpat -p [0-9] | chpat " *{[0-9]*} *{[0-9]*}? *{[0-9]*} *[0-9]*?*@n" "@3% free"
sleep 300
enddo
--- --- --- --- cut here, end of free-space-checker --- --- --- ---
For Unix:
--- --- --- --- cut here, save in free-space-checker --- --- --- ---
#!/bin/csh
while (1)
df $HOME | grep "[0-9]" | sed -e "s/ *[^ ]* *[^ ]* *[^ ]* *[^ ]* *\([0-9]*%\) .*$/\1 used/"
sleep 300
end
--- --- --- --- cut here, end of free-space-checker --- --- --- ---