From 55209d38b970a34adf04a7afc87b1e9dba5b8586 Mon Sep 17 00:00:00 2001 From: tslil clingman <> Date: Sun, 26 Apr 2020 20:33:27 -0700 Subject: Moved to statusbar.el when EXWM running, minibuffer-line when not --- emacs/inits/02-modeline.el | 133 ++++++++++++++++++++++++++++----------------- 1 file changed, 83 insertions(+), 50 deletions(-) (limited to 'emacs/inits/02-modeline.el') diff --git a/emacs/inits/02-modeline.el b/emacs/inits/02-modeline.el index bae0a37..9df8889 100644 --- a/emacs/inits/02-modeline.el +++ b/emacs/inits/02-modeline.el @@ -1,9 +1,67 @@ -;; Time-stamp: <2020-04-24 17:53:33 (tslil@bison)> +;; Time-stamp: <2020-04-26 20:33:20 (tslil@bison)> ;; ----------------------------------------------------------------------------- -;; Battery status and CPU temperature +;; Mode-line +;; +;; The mode-line is set to eliminate duplicate information between buffers. +;; Everything else is intended to be displayed in another, centralised location. + +(setq display-time-format "%d/%H.%M" + display-time-default-load-average nil) +(display-time-mode 1) + +(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) + (:eval (abbreviate-file-name default-directory)) + 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. + +(if (fboundp 'exwm-systemtray-enable) + (progn + ;; ----------------------------------------------------------------------------- + ;; Statusbar.el + (add-to-list 'load-path (expand-file-name "~/.emacs.d/scripts/statusbar.el/")) + (use-package posframe :ensure t) + (use-package statusbar + :config + (advice-add 'exwm-update-workspace-lighter :after #'statusbar-refresh) + (setq statusbar-modeline-variables '(exwm-workspace-lighter display-time-string)) + (statusbar-mode 1) + (exwm-update-workspace-lighter))) + ;; ----------------------------------------------------------------------------- + ;; Not running under EXWM, use minibuffer-line + ;; + ;; 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 -(unless (fboundp 'exwm-systemtray-enable) (defvar sys-status "") (defvar sys-status-cpu-temp-threshold "45") @@ -21,56 +79,31 @@ (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)))) + (defvar sys-status-update-timer (run-at-time nil 60 'sys-status-update)) -;; ----------------------------------------------------------------------------- -;; Mode-line and minibuffer defaults + ;; ----------------------------------------------------------------------------- + ;; Minibuffer-line -(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 (when (functionp 'exwm-workspace-lighter) (exwm-workspace-lighter))) - " " (: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) - - (when (symbolp exwm-workspace-switch-hook) - (push #'minibuffer-line--update exwm-workspace-switch-hook))) - -;; really want to hook buffer changes at all, and focus -(add-hook 'minibuffer-exit-hook #'minibuffer-line--update) + (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) -(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)) + (when (symbolp exwm-workspace-switch-hook) + (push #'minibuffer-line--update exwm-workspace-switch-hook))) + ;; really want to hook buffer changes at all, and focus + (add-hook 'minibuffer-exit-hook #'minibuffer-line--update)) ;; ----------------------------------------------------------------------------- ;; Minions to clean mode-line -- cgit v1.2.3