summaryrefslogtreecommitdiff
path: root/view-functions.el
diff options
context:
space:
mode:
Diffstat (limited to 'view-functions.el')
-rw-r--r--view-functions.el90
1 files changed, 90 insertions, 0 deletions
diff --git a/view-functions.el b/view-functions.el
new file mode 100644
index 0000000..ae5559a
--- /dev/null
+++ b/view-functions.el
@@ -0,0 +1,90 @@
+;;; view-functions.el --- My functions to monitor system infos -*- lexical-binding: t; -*-
+
+;;;###autoload
+(defun durand-view-timers-or-temps (&optional arg)
+ "View the list of timers or view the CPU temperature info.
+If ARG is nil, view the list of timers.
+If ARG is '(4), view the information about CPU temperature and
+fans speed and some others.
+If ARG is '(16), view the battery information."
+ (interactive "P")
+ (cond
+ ((null arg)
+ (let (fan-speed
+ cpu-die-temperature
+ remain
+ full-capacity
+ fullp
+ charging
+ cycle
+ condition
+ connected
+ battery-temp)
+ (with-temp-buffer
+;;; NOTE: First fans information
+ (insert (funcall
+ (plist-get (car (auth-source-search :host "local-computer"))
+ :secret)))
+ (call-process-region
+ nil nil "sudo"
+ nil t nil "-S" "powermetrics"
+ "-i1" "-n1" "-ssmc")
+ (goto-char (point-min))
+ (search-forward "Fan" nil t)
+ (setf fan-speed
+ (progn (re-search-forward "[[:digit:]]+" (line-end-position) t)
+ (string-to-number (match-string 0)))
+ cpu-die-temperature
+ (progn (re-search-forward "temperature: \\([[:digit:]]+\\.[[:digit:]]+\\)" nil t)
+ (string-to-number (match-string 1))))
+
+;;; NOTE: Now battery charge information
+ (erase-buffer)
+ (call-process "system_profiler" nil t nil
+ "SPPowerDataType")
+ (goto-char (point-min))
+ (re-search-forward "Fully Charged: \\(.+\\)$" nil t)
+ (setf fullp (match-string-no-properties 1))
+ (re-search-forward "Charging: \\(.+\\)$" nil t)
+ (setf charging (match-string-no-properties 1))
+ (re-search-forward "Full Charge Capacity (mAh): \\([[:digit:]]+\\)$" nil t)
+ (setf full-capacity (string-to-number (match-string-no-properties 1)))
+ (re-search-forward "State of Charge (%): \\([[:digit:]]+\\)" nil t)
+ (setf remain (string-to-number (match-string-no-properties 1)))
+ (re-search-forward "Cycle Count: \\(.+\\)$" nil t)
+ (setf cycle (string-to-number (match-string-no-properties 1)))
+ (re-search-forward "Condition: \\(.+\\)$" nil t)
+ (setf condition (match-string-no-properties 1))
+ (re-search-forward "Connected: \\(.+\\)$" nil t)
+ (setf connected (match-string-no-properties 1))
+
+;;; NOTE: Now battery temperature
+ (erase-buffer)
+ (call-process "ioreg" nil t nil "-n" "AppleSmartBattery" "-r")
+ (goto-char (point-min))
+ (re-search-forward "Temperature..=." nil t)
+ (re-search-forward "[[:digit:]]+" nil t)
+ (setf battery-temp
+ (/ (string-to-number (match-string-no-properties 0))
+ 100.0)))
+ (message
+ (concat
+ (format "fan: %d, temp: %s, battery temp: %.2f"
+ fan-speed cpu-die-temperature battery-temp)
+ "\n"
+ (format "Full: %d, remaining: %d%s, fullp: %s, charging: %s, connected: %s, cycles: %d, condition: %s"
+ full-capacity remain "%%" fullp charging connected cycle condition)))))
+ ((equal arg (list 4)) (list-timers))
+ (t
+ (user-error "Unsupported ARG: %S" arg))))
+
+(define-obsolete-function-alias 'durand-view-timers 'durand-view-timers-or-temps
+ "2020-09-02" "View the list of timers.")
+
+;;;###autoload
+(defun durand-view-process (&optional arg)
+ "View the list of processes"
+ (interactive "P")
+ (if arg
+ (proced)
+ (message "%s" (process-list))))