subtree(users/wpcarro): docking briefcase at '24f5a642'
git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15cgit-subtree-split:24f5a642afChange-Id: I6105b3762b79126b3488359c95978cadb3efa789
This commit is contained in:
commit
019f8fd211
766 changed files with 175420 additions and 0 deletions
69
users/wpcarro/emacs/.emacs.d/wpc/modeline.el
Normal file
69
users/wpcarro/emacs/.emacs.d/wpc/modeline.el
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
;;; modeline.el --- Customize my mode-line -*- lexical-binding: t -*-
|
||||
|
||||
;; Author: William Carroll <wpcarro@gmail.com>
|
||||
;; Version: 0.0.1
|
||||
;; Package-Requires: ((emacs "25.1"))
|
||||
;; Homepage: https://user.git.corp.google.com/wpcarro/briefcase
|
||||
|
||||
;;; Commentary:
|
||||
;; Because I use EXWM, I treat my Emacs mode-line like my system bar: I need to
|
||||
;; quickly check the system time, and I expect it to be at the bottom-right of
|
||||
;; my Emacs frame. I used doom-modeline for awhile, which is an impressive
|
||||
;; package, but it conditionally colorizes on the modeline for the active
|
||||
;; buffer. So if my bottom-right window is inactive, I cannot see the time.
|
||||
;;
|
||||
;; My friend, @tazjin, has a modeline setup that I think is more compatible with
|
||||
;; EXWM, so I'm going to base my setup off of his.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(use-package telephone-line)
|
||||
|
||||
(defun modeline-bottom-right-window? ()
|
||||
"Determines whether the last (i.e.
|
||||
bottom-right) window of the
|
||||
active frame is showing the buffer in which this function is
|
||||
executed."
|
||||
(let* ((frame (selected-frame))
|
||||
(right-windows (window-at-side-list frame 'right))
|
||||
(bottom-windows (window-at-side-list frame 'bottom))
|
||||
(last-window (car (seq-intersection right-windows bottom-windows))))
|
||||
(eq (current-buffer) (window-buffer last-window))))
|
||||
|
||||
(defun modeline-maybe-render-time ()
|
||||
"Conditionally renders the `mode-line-misc-info' string.
|
||||
|
||||
The idea is to not display information like the current time,
|
||||
load, battery levels on all buffers."
|
||||
(when (modeline-bottom-right-window?)
|
||||
(telephone-line-raw mode-line-misc-info t)))
|
||||
|
||||
(defun modeline-setup ()
|
||||
"Render my custom modeline."
|
||||
(telephone-line-defsegment telephone-line-last-window-segment ()
|
||||
(modeline-maybe-render-time))
|
||||
;; Display the current EXWM workspace index in the mode-line
|
||||
(telephone-line-defsegment telephone-line-exwm-workspace-index ()
|
||||
(when (modeline-bottom-right-window?)
|
||||
(format "[%s]" exwm-workspace-current-index)))
|
||||
;; Define a highlight font for ~ important ~ information in the last
|
||||
;; window.
|
||||
(defface special-highlight
|
||||
'((t (:foreground "white" :background "#5f627f"))) "")
|
||||
(add-to-list 'telephone-line-faces
|
||||
'(highlight . (special-highlight . special-highlight)))
|
||||
(setq telephone-line-lhs
|
||||
'((nil . (telephone-line-position-segment))
|
||||
(accent . (telephone-line-buffer-segment))))
|
||||
(setq telephone-line-rhs
|
||||
'((accent . (telephone-line-major-mode-segment))
|
||||
(nil . (telephone-line-last-window-segment
|
||||
telephone-line-exwm-workspace-index))))
|
||||
(setq telephone-line-primary-left-separator 'telephone-line-tan-left
|
||||
telephone-line-primary-right-separator 'telephone-line-tan-right
|
||||
telephone-line-secondary-left-separator 'telephone-line-tan-hollow-left
|
||||
telephone-line-secondary-right-separator 'telephone-line-tan-hollow-right)
|
||||
(telephone-line-mode 1))
|
||||
|
||||
(provide 'modeline)
|
||||
;;; modeline.el ends here
|
||||
Loading…
Add table
Add a link
Reference in a new issue