Doom Modeline
https://github.com/seagle0128/doom-modeline
First install nerd-icons
Run M-x nerd-icons-install-fonts
Install doom-themes
(use-package doom-modeline :ensure t :init (doom-modeline-mode 1))
Doom Modeline comes with a avast array of customization options.
Some useful customisations
File Name Style Customizations: This allows for a significant amount of personalization in how file paths are displayed in the mode-line.
(setq doom-modeline-buffer-file-name-style 'style)
Given ~/Projects/FOSS/emacs/lisp/comint.el auto => emacs/l/comint.el (in a project) or comint.el truncate-upto-project => ~/P/F/emacs/lisp/comint.el truncate-from-project => ~/Projects/FOSS/emacs/l/comint.el truncate-with-project => emacs/l/comint.el truncate-except-project => ~/P/F/emacs/l/comint.el truncate-upto-root => ~/P/F/e/lisp/comint.el truncate-all => ~/P/F/e/l/comint.el truncate-nil => ~/Projects/FOSS/emacs/lisp/comint.el relative-from-project => emacs/lisp/comint.el relative-to-project => lisp/comint.el file-name => comint.el buffer-name => comint.el<2> (uniquify buffer name)
Continuous Word Count in Specific Modes: For writers or anyone working in Markdown, Org, or other text-based modes, this feature is very useful:
(setq doom-modeline-enable-word-count t) (setq doom-modeline-continuous-word-count-modes '(markdown-mode gfm-mode org-mode))
Environment Version Display: For developers, who want information about the programming language they are using. One can enable this for different languages like Python, Ruby, Perl, Go, Elixir, and Rust.
(setq doom-modeline-env-version t) (setq doom-modeline-env-enable-python t) ; similarly for other languages
Notification Integration: If you are interested in integrating Emacs workflow with other tools and services, like GitHub, mu4e (for email), GNUS, and IRC notifications:
(setq doom-modeline-github t) (setq doom-modeline-mu4e t) (setq doom-modeline-gnus t) (setq doom-modeline-irc t)
Time and Battery Display
(setq doom-modeline-battery t) (setq doom-modeline-time t)