Skip to content

dezzw/miniline.el

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

miniline.el

A lightweight mode-line alternative that displays buffer information in the echo area using overlays.

https://img.shields.io/badge/License-GPL%20v3-blue.svg

⚠️ Early Development Notice

This project is in its early stages and was developed with significant AI assistance (“vibe coding”). The code quality is not guaranteed and may contain bugs or rough edges. Contributions, suggestions, and improvements are very welcome!

Features

  • Lightweight - Minimal overhead using overlays instead of resizing minibuffer
  • Mode-line compatible - Fully supports mode-line-format style specs via format-mode-line
  • Performant - Caching and throttled updates for smooth experience
  • Customizable - Modular segment system for easy configuration
  • Clean UI - Optionally hides mode-line with thin GUI separator line

Screenshots

screenshots/miniline-elisp.png

screenshots/miniline-md.png

screenshots/miniline-vterm.png

Installation

Manual

Clone this repository and add to your load-path:

(add-to-list 'load-path "/path/to/miniline.el")
(require 'miniline)
(require 'miniline-segments)

use-package (with straight.el)

(use-package miniline
  :straight (:host github :repo "dezzw/miniline.el")
  :config
  (require 'miniline-segments)
  (setq miniline-format miniline-format-default)
  (miniline-mode 1))

Quick Start

(require 'miniline)
(require 'miniline-segments)

;; Use a predefined format
(setq miniline-format miniline-format-default)

;; Enable miniline
(miniline-mode 1)

Configuration

Basic Options

VariableDefaultDescription
miniline-formatnilFormat spec (like mode-line-format)
miniline-positionrightAlignment: right, left, or center
miniline-update-interval0.5Update interval in seconds
miniline-hide-mode-linetHide the original mode-line
miniline-display-gui-linetShow thin separator line (GUI only)
miniline-minibuffertShow miniline during minibuffer sessions
miniline-second-linenilDisplay on second line of echo area
miniline-right-padding0Extra right padding to prevent wrapping

Predefined Formats

;; Default: modal, buffer, vcs, mode, checker
(setq miniline-format miniline-format-default)

;; Minimal: buffer + major mode only
(setq miniline-format miniline-format-minimal)

;; Full: all available segments
(setq miniline-format miniline-format-full)

Custom Format

Create your own format using the segment functions:

(setq miniline-format
      '(:eval (miniline-compose-segments
               #'miniline-segment-modal
               #'miniline-segment-buffer-info
               #'miniline-segment-vcs
               #'miniline-segment-major-mode
               #'miniline-segment-checker
               #'miniline-segment-time)))

Available Segments

SegmentDescription
miniline-segment-buffer-infoBuffer state (read-only) + name
miniline-segment-buffer-nameBuffer name only
miniline-segment-buffer-stateRead-only indicator
miniline-segment-major-modeMajor mode icon or name
miniline-segment-vcsGit branch info
miniline-segment-checkerFlymake/Flycheck diagnostics
miniline-segment-flymakeFlymake diagnostics
miniline-segment-flycheckFlycheck diagnostics
miniline-segment-lspLSP status (eglot/lsp-mode)
miniline-segment-modalModal state (meow/evil)
miniline-segment-meowMeow editing state
miniline-segment-evilEvil editing state
miniline-segment-projectProject name
miniline-segment-positionCursor position (line:col %)
miniline-segment-remote-hostTRAMP remote host
miniline-segment-timeCurrent time
miniline-segment-encodingBuffer encoding (non-UTF-8 only)

Faces

Customize the appearance by modifying these faces:

  • miniline-mode-line - Active window separator line
  • miniline-mode-line-inactive - Inactive window separator line
  • miniline-buffer-name - Buffer name
  • miniline-buffer-read-only - Read-only indicator
  • miniline-major-mode - Major mode
  • miniline-vcs - VCS/git info
  • miniline-error / miniline-warning / miniline-info - Diagnostics
  • miniline-project - Project name
  • miniline-position - Position info
  • miniline-lsp - LSP indicator
  • miniline-meow-normal / miniline-meow-insert / miniline-meow-motion - Modal states

Optional Dependencies

  • nerd-icons - For beautiful icons in segments

Acknowledgments

This package was inspired by and learned from these excellent projects:

License

GPL-3.0. See LICENSE for details.

About

A lightweight mode-line alternative that displays buffer information in the echo area using overlays.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors