diff options
Diffstat (limited to 'emacs/inits/02-modeline.el')
| -rw-r--r-- | emacs/inits/02-modeline.el | 79 |
1 files changed, 8 insertions, 71 deletions
diff --git a/emacs/inits/02-modeline.el b/emacs/inits/02-modeline.el index e4fef10..e5c21a1 100644 --- a/emacs/inits/02-modeline.el +++ b/emacs/inits/02-modeline.el @@ -1,4 +1,4 @@ -;; Time-stamp: <2020-05-05 20:25:50 (tslil@bison)> +;; Time-stamp: <2021-07-02 17h41 EDT (hobbies)> ;; ----------------------------------------------------------------------------- ;; Mode-line @@ -6,6 +6,12 @@ ;; The mode-line is set to eliminate duplicate information between buffers. ;; Everything else is intended to be displayed in another, centralised location. +(defun abbreviate-left-trim-path (p len) + (let ((pa (abbreviate-file-name p))) + (if (> (length pa) (+ 3 len)) + (format "...%s" (substring pa (- (length pa) len))) + pa))) + (setq display-time-format "%d/%H.%M" display-time-default-load-average nil) (display-time-mode 1) @@ -16,79 +22,10 @@ mode-line-modified "%@" " %l:%c %[" mode-line-buffer-identification "%] %I" " " mode-line-modes ;; (vc-mode vc-mode) - (:eval (abbreviate-file-name default-directory)) + (:eval (abbreviate-left-trim-path default-directory 20)) mode-line-misc-info mode-line-end-spaces)) ;; ----------------------------------------------------------------------------- -;; System information -;; -;; If running under exwm with its system tray, then put the clock and workspace -;; indicator in a posfrmae as provided by statusbar.el. Othewrise, use -;; minibuffer-line as the central location. - -(unless (fboundp 'exwm-systemtray-enable) - ;; First we define two ``modules'' for use in the mode-line - - ;; ----------------------------------------------------------------------------- - ;; Remind me of my mortality - - (defvar my-mortality "") - - (defun my-mortality-update () - (setq my-mortality - (format "%.4f" - (/ (float-time - (time-subtract (current-time) - (encode-time 0 0 0 DAY MONTH YEAR))) - (* 60 60 24 364.25))))) - - - (defvar my-mortality-update-timer (run-at-time nil (* 60 60) 'my-mortality-update)) - - ;; ----------------------------------------------------------------------------- - ;; 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 (expand-file-name "~/.local/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)) - - ;; ----------------------------------------------------------------------------- - ;; Minibuffer-line - - (use-package minibuffer-line - :ensure t - :config - (setq minibuffer-line-refresh-interval 60 - minibuffer-line-format - '("" display-time-string " " my-mortality sys-status)) - ;; 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)) - -;; ----------------------------------------------------------------------------- ;; Minions to clean mode-line (use-package minions |
