Skip to content
Tech News
← Back to articles

SVG-Line: Better Status Bars for Emacs – Charlie Holland's Blog

read original get Emacs Status Bar Extension → more articles

Emacs gives us four status bars, the mode-line , the header-line , the tab-bar , and the tab-line (*-lines for short). These are useful for providing a dynamic 'heads-up display', for important context, like what buffer you're in, the active major mode, and really any arbitrary thing you can define.

I'm a heavy user of the *-lines in Emacs, and I have them all enabled, but the issue that has plagued me is that, natively, each one behaves differently and each has unique limitations. For example, multi-line status (necessary on my small laptop) is possible, but only in the tab-bar . Right alignment is possible in the tab-bar , but only in the last line, and this alignment feature is only available in the tab-bar . I can display icons from all-the-icons in the mode-line and header-line , but not the tab-bar or tab-line . Etc….

What I really want is consistent behaviour and configuration across all these status bars, and I want the multi-line, alignment, and icons features available in all of them. It turns out that SVG (scaled vector graphics) is the key to solving this.

Inspired by Nicolas Rougier's dual-header gist, I built svg-line , which provides this experience by utilizing Emacs's built-in SVG rendering support. At first, this approach seemed like a hack, or abuse of the *-lines, or neglect of the built-in status bar behaviour. But I kept it and created a package because I was literally shocked how well this works and how native this feels (see the screenshot and video above).