Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



90 Commits

Repository files navigation

Tabs and ribbons for the mode line

This package provides utilities for displaying elements of the mode line as tabs and ribbons. It also provides replacements for a few built-in elements.

  • Make sure that the face mode-line does not set :box and that :underline and :overline are the same color or are both undefined. If defined, then the line color should be different from the :background colors of both mode-line and default. The same rules apply to mode-line-inactive. The line colors of mode-line and mode-line-inactive do not necessarily have to be identical. For example:
    (use-package solarized-theme
      (load-theme 'solarized-light t)
      (let ((line (face-attribute 'mode-line :underline)))
        (set-face-attribute 'mode-line          nil :overline   line)
        (set-face-attribute 'mode-line-inactive nil :overline   line)
        (set-face-attribute 'mode-line-inactive nil :underline  line)
        (set-face-attribute 'mode-line          nil :box        nil)
        (set-face-attribute 'mode-line-inactive nil :box        nil)
        (set-face-attribute 'mode-line-inactive nil :background "#f9f2d9")))
  • Note that the above example is for solarized-theme and that for your theme (face-attribute 'mode-line :underline) may return nil. If you want borders, use something like (let ((line "red")) ...), in that case.
  • Add something like this to your init file:
    (use-package moody
      (setq x-underline-at-descent-line t)
  • Such replacement functions are defined as commands, making it quicker to try them out without having to add anything to your init file.
  • To undo the call to a moody-replace-* function, call the same function with t as the value of the optional REVERSE argument. You can accomplish the same by interactively calling such a command with a prefix argument.

Compile MELPA Stable MELPA