summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortslil clingman <>2020-04-26 20:33:27 -0700
committertslil clingman <>2020-04-26 20:34:45 -0700
commit55209d38b970a34adf04a7afc87b1e9dba5b8586 (patch)
tree0e9402285046e3ba9102f9754dcf2c9ece61cfcc
parentb15702ecef80740f8d2284eb5afad7e62028a1ef (diff)
Moved to statusbar.el when EXWM running, minibuffer-line when not
-rw-r--r--emacs/inits/00-exwm.el30
-rw-r--r--emacs/inits/02-modeline.el133
2 files changed, 103 insertions, 60 deletions
diff --git a/emacs/inits/00-exwm.el b/emacs/inits/00-exwm.el
index 4d503f5..8d9caa7 100644
--- a/emacs/inits/00-exwm.el
+++ b/emacs/inits/00-exwm.el
@@ -1,4 +1,4 @@
-;; Time-stamp: <2020-04-24 17:52:54 (tslil@bison)>
+;; Time-stamp: <2020-04-26 20:34:40 (tslil@bison)>
(defun banish-rat ()
(interactive)
@@ -67,25 +67,35 @@
;; buffer and window management
(exwm-input-set-key (kbd "s-SPC") 'switch-to-buffer)
- (defvar exwm-workspace-last-index 0)
+ (defvar exwm-workspace-last-idx 0)
+ (defvar exwm-workspace-current-idx 0)
- (defun exwm-workspace-lighter ()
- (format " @%d (*%d)" exwm-workspace-current-index exwm-workspace-last-index))
+ (defvar exwm-workspace-lighter "")
- (defun exwm-store-workspace-last-index-switch (frame-or-index &optional force)
- (setq exwm-workspace-last-index exwm-workspace-current-index))
+ (defun exwm-update-workspace-lighter ()
+ (setq exwm-workspace-lighter (format "@%d (*%d)" exwm-workspace-current-idx exwm-workspace-last-idx)))
- (advice-add 'exwm-workspace-switch :before #'exwm-store-workspace-last-index-switch)
+ (defun exwm-workspace-track-changes (frame-or-index &optional ignored)
+ (when (/= exwm-workspace-current-index exwm-workspace-current-idx)
+ (setq exwm-workspace-last-idx exwm-workspace-current-idx
+ exwm-workspace-current-idx exwm-workspace-current-index)
+ (exwm-update-workspace-lighter)))
+
+ (exwm-update-workspace-lighter)
+
+ (advice-add 'exwm-workspace-switch :after #'exwm-workspace-track-changes)
+ (advice-add 'exwm-workspace-switch-create :after #'exwm-workspace-track-changes)
(defun exwm-sanitise-workspace-last-index ()
- (when (> (1+ exwm-workspace-last-index) (exwm-workspace--count))
- (setq exwm-workspace-last-index exwm-workspace-current-index)))
+ (when (> (1+ exwm-workspace-last-idx) (exwm-workspace--count))
+ (setq exwm-workspace-last-idx exwm-workspace-current-idx)
+ (exwm-update-workspace-lighter)))
(push #'exwm-sanitise-workspace-last-index exwm-workspace-list-change-hook)
(defun exwm-last-workspace ()
(interactive)
- (exwm-workspace-switch-create exwm-workspace-last-index))
+ (exwm-workspace-switch exwm-workspace-last-idx))
(defun exwm-last-buffer ()
(interactive)
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