6 Commits
0.8.1 ... 0.8.4

Author SHA1 Message Date
f59a472204 Fix erroneous function call on NetBSD 2022-01-07 02:04:31 +01:00
f9113b7a35 Improve functions documentation 2022-01-07 02:03:44 +01:00
d145705a61 Update screenshot 2022-01-05 19:24:55 +01:00
9e6fecc94a Fix battery detection for non-Linux systems
Some non-Linux systems do not have a `/sys/` directory. Therefore,
check it only if we are in a Linux system.

Fixes #19
2022-01-05 19:02:05 +01:00
20d0682f39 Separate functions getting memory info for Darwin and NetBSD systems
Fixes #17
2022-01-04 20:00:52 +01:00
d248447cb0 Add macOS versions
Add support for Mac OS X 10.0 to 10.4
Add support for macOS Monterey
2021-12-21 10:44:47 +01:00
2 changed files with 88 additions and 35 deletions

View File

@@ -2,7 +2,7 @@
;; Author: Lucien Cartier-Tilet <lucien@phundrak.com> ;; Author: Lucien Cartier-Tilet <lucien@phundrak.com>
;; Maintainer: Lucien Cartier-Tilet <lucien@phundrak.com> ;; Maintainer: Lucien Cartier-Tilet <lucien@phundrak.com>
;; Version: 0.8.1 ;; Version: 0.8.4
;; Package-Requires: ((emacs "25.1") (f "0.20") (s "1")) ;; Package-Requires: ((emacs "25.1") (f "0.20") (s "1"))
;; Homepage: https://github.com/Phundrak/eshell-info-banner.el ;; Homepage: https://github.com/Phundrak/eshell-info-banner.el
@@ -65,7 +65,11 @@
(eval-when-compile (eval-when-compile
(defconst eshell-info-banner--macos-versions (defconst eshell-info-banner--macos-versions
'(("10.4" . "Mac OS X Tiger") '(("10.0" . "Mac OS X Cheetah")
("10.1" . "Mac OS X Puma")
("10.2" . "Mac OS X Jaguar")
("10.3" . "Mac OS X Panther")
("10.4" . "Mac OS X Tiger")
("10.5" . "Mac OS X Leopard") ("10.5" . "Mac OS X Leopard")
("10.6" . "Mac OS X Snow Leopard") ("10.6" . "Mac OS X Snow Leopard")
("10.7" . "Mac OS X Lion") ("10.7" . "Mac OS X Lion")
@@ -84,7 +88,10 @@
("11.3" . "macOS Big Sur") ("11.3" . "macOS Big Sur")
("11.4" . "macOS Big Sur") ("11.4" . "macOS Big Sur")
("11.5" . "macOS Big Sur") ("11.5" . "macOS Big Sur")
("11.6" . "macOS Big Sur")) ("11.6" . "macOS Big Sur")
("12.0" . "macOS Monterey")
("12.1" . "macOS Monterey")
("12.2" . "macOS Monterey"))
"Versions of OSX and macOS and their name.")) "Versions of OSX and macOS and their name."))
(defconst eshell-info-banner--posix-shells '("bash" "zsh" "sh") (defconst eshell-info-banner--posix-shells '("bash" "zsh" "sh")
@@ -230,7 +237,9 @@ Ensures the command is ran with LANG=C."
"Display a progress bar without its prefix. "Display a progress bar without its prefix.
Display a progress bar of BAR-LENGTH length, followed by an Display a progress bar of BAR-LENGTH length, followed by an
indication of how full the memory is with a human readable USED indication of how full the memory is with a human readable USED
and TOTAL size." and TOTAL size.
Optional argument NEWLINE: Whether to output a newline at the end
of the progress bar."
(let ((percentage (if (= used 0) (let ((percentage (if (= used 0)
0 0
(/ (* 100 used) total)))) (/ (* 100 used) total))))
@@ -460,39 +469,81 @@ For TEXT-PADDING and BAR-LENGTH, see the documentation of
"\n" "\n"
t))) t)))
(defun eshell-info-banner--get-memory-unix () (defun eshell-info-banner--get-memory-unix-command-to-mem (command)
"Get memory usage for UNIX systems. "Get the output of COMMAND corresponding to memory information.
Compatible with Darwin and FreeBSD at least." This function is to be only used on platforms which support sysctl."
(let* ((command-to-mem (lambda (command) (string-to-number
(string-to-number (s-trim
(car (last
(split-string (eshell-info-banner--shell-command-to-string command)
" "
t))))))
(defun eshell-info-banner--get-memory-netbsd ()
"Get memory usage for NetBSD systems.
See `eshell-info-banner--get-memory'."
(let* ((total (eshell-info-banner--get-memory-unix-command-to-mem "sysctl hw.physmem64"))
(used (- total
(* 1024 (string-to-number
(s-trim (s-trim
(car (last (with-temp-buffer
(split-string (eshell-info-banner--shell-command-to-string command) (insert-file-contents-literally "/proc/meminfo")
" " (save-match-data
t))))))) (string-match (rx bol
(netbsdp (and (equal system-type 'berkeley-unix) "MemFree:"
(string-match-p "NetBSD" (eshell-info-banner--shell-command-to-string "uname")))) (* blank)
(total (apply command-to-mem `(,(if netbsdp "sysctl hw.physmem64" "sysctl hw.physmem")))) (group (+ digit))
(used (if netbsdp (* blank)
(- total "kB")
(* 1024 (string-to-number (buffer-string))
(s-trim (substring-no-properties (buffer-string)
(with-temp-buffer (match-beginning 1)
(insert-file-contents-literally "/proc/meminfo") (match-end 1))))))))))
(save-match-data
(string-match (rx bol
"MemFree:"
(* blank)
(group (+ digit))
(* blank)
"kB")
(buffer-string))
(substring-no-properties (buffer-string)
(match-beginning 1)
(match-end 1))))))))
(apply command-to-mem '("sysctl hw.usermem")))))
`(("RAM" ,total ,used)))) `(("RAM" ,total ,used))))
(defun eshell-info-banner--get-memory-darwin ()
"Get memory usage for Darwin systems.
See `eshell-info-banner--get-memory'."
(let* ((total (eshell-info-banner--get-memory-unix-command-to-mem "sysctl -n hw.memsize"))
(vmstat (with-temp-buffer
(call-process "vm_stat" nil t nil)
(buffer-string)))
(wired (save-match-data
(string-match (rx " wired" (* (not digit)) (+ blank) (group (+ digit)) ".")
vmstat)
(* 1024 4
(string-to-number (substring-no-properties vmstat
(match-beginning 1)
(match-end 1))))))
(active (save-match-data
(string-match (rx " active" (* (not digit)) (+ blank) (group (+ digit)) ".")
vmstat)
(* 1024 4
(string-to-number (substring-no-properties vmstat
(match-beginning 1)
(match-end 1))))))
(compressed (save-match-data
(if (string-match (rx " occupied" (* (not digit)) (+ blank) (group (+ digit)) ".")
vmstat)
(* 1024 4
(string-to-number (substring-no-properties vmstat
(match-beginning 1)
(match-end 1))))
0))))
`(("RAM" ,total ,(+ wired active compressed)))))
(defun eshell-info-banner--get-memory-unix ()
"Get memory usage for UNIX systems."
(cond ((and (equal system-type 'berkeley-unix)
(string-match-p "NetBSD" (eshell-info-banner--shell-command-to-string "uname")))
(eshell-info-banner--get-memory-netbsd))
((equal system-type 'darwin)
(eshell-info-banner--get-memory-darwin))
(t
(let* ((total (eshell-info-banner--get-memory-unix-command-to-mem "sysctl hw.physmem"))
(used (eshell-info-banner--get-memory-unix-command-to-mem "sysctl hw.usermem")))
`(("RAM" ,total ,used))))))
(defun eshell-info-banner--get-memory-windows () (defun eshell-info-banner--get-memory-windows ()
"Get memory usage for Window." "Get memory usage for Window."
(warn "Memory usage not yet implemented for Windows and DOS") (warn "Memory usage not yet implemented for Windows and DOS")
@@ -608,7 +659,9 @@ The usage of `eshell-info-banner-warning-percentage' and
thought of as the “percentage of discharge” of the computer. thought of as the “percentage of discharge” of the computer.
Thus, setting the warning at 75% will be translated as showing Thus, setting the warning at 75% will be translated as showing
the warning face with a battery level of 25% or less." the warning face with a battery level of 25% or less."
(let ((battery-level (when (file-readable-p "/sys/") (battery)))) (let ((battery-level (unless (and (equal system-type 'gnu/linux)
(not (file-readable-p "/sys/")))
(battery))))
(if (or (null battery-level) (if (or (null battery-level)
(string= battery-level "Battery status not available") (string= battery-level "Battery status not available")
(string-match-p (regexp-quote "N/A") battery-level)) (string-match-p (regexp-quote "N/A") battery-level))

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 54 KiB