diff options
Diffstat (limited to 'view-functions.el')
-rw-r--r-- | view-functions.el | 90 |
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)))) |