Minimal mode line configuration for Emacs, inspired by doom-modeline
Go to file
Jessie Hildebrandt b41f6ba1dd Restructure project
mood-line has been restructured to improve modularity and configurability
with careful attention paid to performance and overall project complexity.
2023-11-18 20:20:29 -05:00
.repo-assets Move preview screenshot to LFS 2023-11-18 20:19:33 -05:00
.gitattributes Add .gitattributes 2023-11-18 20:19:13 -05:00
LICENSE Add LICENSE 2022-12-22 11:16:23 +00:00
mood-line-segment-checker.el Restructure project 2023-11-18 20:20:29 -05:00
mood-line-segment-indentation.el Restructure project 2023-11-18 20:20:29 -05:00
mood-line-segment-modal.el Restructure project 2023-11-18 20:20:29 -05:00
mood-line-segment-vc.el Restructure project 2023-11-18 20:20:29 -05:00
mood-line.el Restructure project 2023-11-18 20:20:29 -05:00
README.md Move preview screenshot to LFS 2023-11-18 20:19:33 -05:00

mood-line

MELPA MELPA Stable

About

mood-line is a lightweight, drop-in replacement for the default Emacs mode line configuration.

Features

  • Clean, informative design

  • Customizable, modular segment format

  • Customizable glyph sets

  • Lazy-loaded extensions

  • Lightweight, no dependencies

Preview

Preview Image

Configuration

You can install mood-line directly via package-install from MELPA. After installation, you can activate the global minor mode with M-x mood-line-mode. Deactivating mode-line-mode will restore the default mode-line-format.

If you are a user of use-package, it is easy to configure mood-line directly in your init.el:

(use-package mood-line

  ;; Enable mood-line
  :config
  (mood-line-mode)

  ;; Use pretty Fira Code-compatible glyphs
  :custom
  (mood-line-glyph-alist . mood-line-glyphs-fira-code))

Format

mood-line uses a modular segment format, and it is easy to reconfigure:

;; Default format:
;;   * init.el  4:32 Top                                         ELisp  ! Issues: 2
(setq mood-line-format mood-line-format-default)

;; Extended format:
;;   * init.el  4:32:52 Top                    SPCx2  LF  UTF-8  ELisp  ! Issues: 2
(setq mood-line-format mood-line-format-default-extended)

;; Custom format:
;;   * init.el : ELisp                                     Top 4:32  |  ! Issues: 2
(setq mood-line-format
      '(;; Left side
        (" "
         (mood-line-segment-buffer-status) " "
         (mood-line-segment-buffer-name) " : "
         (mood-line-segment-major-mode))
        ;; Right side
        ((mood-line-segment-scroll) " "
         (mood-line-segment-cursor-position) "  "
         (when (mood-line-segment-checker) "|") "  "
         (mood-line-segment-checker) "  "
         " ")))

More information on the format specification is available in the documentation. (M-x describe-variable mood-line-format)

Glyphs

By default, mood-line will use basic ASCII character glyphs to decorate mode line segments. If you'd like to see prettier Unicode glyphs, you can change the value of mood-line-glyph-alist:

;; The default set of glyphs:
;;   * myModifiedFile.js  Replace*3                 + main  Javascript  ! Issues: 2
(setq mood-line-glyph-alist mood-line-glyphs-ascii)

;; A set of Fira Code-compatible Unicode glyphs:
;;   ● myModifiedFile.js  Replace×3                 + main  JavaScript  → Issues: 2
(setq mood-line-glyph-alist mood-line-glyphs-fira-code)

;; A set of Unicode glyphs:
;;   ● myModifiedFile.js  Replace✕3                 🞤 main  JavaScript  ⚑ Issues: 2
(setq mood-line-glyph-alist mood-line-glyphs-unicode)

If you'd like to supply your own glyphs, you can use the customization interface (M-x customize-variable mood-line-glyph-alist) or view the documentation (M-x describe-variable mood-line-glyph-alist) for more information.

You can further tweak the behavior and appearance of mood-line by viewing the customizable variables and faces in the mood-line and mood-line-faces customization groups. (M-x customize-group mood-line)

Testing

To run the included tests:

./ert-test.sh

Feedback

If you experience any issues with this package, please open an issue on the issue tracker.

Suggestions for improvements and feature requests are always appreciated, as well!