;; Time-stamp: <2020-03-24 10:15:48 (tslil@bison)> ;; ----------------------------------------------------------------------------- ;; Battery status and CPU temperature (defvar sys-status "") (defvar sys-status-cpu-temp-threshold "45") (defun linux-sys-status () (let ((bat-s (string-trim (shell-command-to-string "~/bin/battery"))) (temp-s (if (not (file-exists-p "/sys/class/thermal/thermal_zone1/temp")) "" (with-temp-buffer (insert-file-contents "/sys/class/thermal/thermal_zone1/temp") (let ((temp (substring-no-properties (buffer-string) 0 -4))) (if (string-greaterp temp sys-status-cpu-temp-threshold) (concat " " temp "C") "")))))) (if (and (string-blank-p bat-s) (string-blank-p temp-s)) "" (format " [%s%s]" bat-s temp-s)))) (defun sys-status-update () (setq sys-status (linux-sys-status))) (defvar sys-status-update-timer (run-at-time nil 60 'sys-status-update)) ;; ----------------------------------------------------------------------------- ;; Remind me of my mortality (defun mortality () (format " %.4f" (/ (float-time (time-subtract (current-time) (encode-time 0 0 0 DAY MONTH YEAR))) (* 60 60 24 364.25)))) ;; ----------------------------------------------------------------------------- ;; Mode-line and minibuffer defaults (use-package minibuffer-line :ensure t :config (setq minibuffer-line-refresh-interval 60 minibuffer-line-format '("" (:eval (format-time-string "%d/%H.%M")) display-time-string (sys-status sys-status) (:eval (mortality)) " " (:eval (abbreviate-file-name default-directory)))) ;; We redefine this function to centre the text ;; Is there a better way? (defun minibuffer-line--update () (with-current-buffer minibuffer-line--buffer (erase-buffer) (insert (format-mode-line minibuffer-line-format 'minibuffer-line)) (setq fill-column (frame-width)) (center-line))) (minibuffer-line-mode 1)) ;; really want to hook buffer changes at all, and focus (add-hook 'minibuffer-exit-hook #'minibuffer-line--update) (setq global-mode-string nil) (setq-default mode-line-format '("" mode-line-front-space mode-line-modified "%@" " %l:%c %[" mode-line-buffer-identification "%] %I" " " mode-line-modes ;; (vc-mode vc-mode) mode-line-misc-info mode-line-end-spaces)) ;; ----------------------------------------------------------------------------- ;; Minions to clean mode-line (use-package minions :ensure t :config (setq minions-mode-line-lighter ":") (minions-mode 1))