The default Emacs mode-line is functional but visually dated and hard to configure. sleek-modeline replaces it with a minimal, elegant alternative that surfaces the most relevant information while keeping the implementation small and straightforward.
- Minimal, left/right-aligned layout.
- Configurable size / height via a box property.
- Buffer name with optional icon and modified-state highlighting.
- Major mode display with suffix indicators stripped.
- Modal editing state marker (
evilandmeowsupport). - Line ending indicator (shown only for file-backed buffers).
- Version control segment: branch name with icon and state-aware coloring.
- Diagnostics segment: error, warning and info counts (support both
flycheckandflymakeintegration). - Project name segment (supports both
projectileand the built-inproject.el). - LSP indicator segment (supports both
eglotandlsp-modebackends). - Optional
nerd-iconssupport throughout, with Unicode fallbacks when unavailable. - Adapts to theme changes automatically.
git clone https://github.com/abidanBrito/sleek-modeline.git ~/path/to/sleek-modelineThen point use-package at it:
(use-package sleek-modeline
:load-path "~/path/to/sleek-modeline"
:config
(sleek-modeline-mode 1))(use-package sleek-modeline
:straight (sleek-modeline
:type git
:host github
:repo "abidanBrito/sleek-modeline")
:config
(sleek-modeline-mode 1))git clone https://github.com/abidanBrito/sleek-modeline.git ~/path/to/sleek-modelineThen load it:
(add-to-list 'load-path "~/path/to/sleek-modeline")
(require 'sleek-modeline)
(sleek-modeline-mode 1)All options live under M-x customize-group RET sleek-modeline. Here are the main ones:
| Variable | Default | Description |
|---|---|---|
sleek-modeline-size | small | Mode-line height: small, medium or large. |
sleek-modeline-height | nil | Custom box height in pixels. Overrides sleek-modeline-size when set. |
sleek-modeline-show-icons | t | Show nerd-icons throughout. Requires nerd-icons. |
sleek-modeline-background | nil | Custom mode-line background color. If nil, derives from default face. |
sleek-modeline-edge-padding | 2 | Number of spaces added at the left and right edges. |
sleek-modeline-highlight-modified-buffer-name | t | Highlight the buffer name when it has unsaved changes. |
sleek-modeline-show-modal-state | nil | Show a modal editing state marker (evil / meow). |
sleek-modeline-separator | " » " | Separator string between right-side segments. |
These options hide individual segments when the mode-line belongs to a non-selected window.
| Variable | Default | Description |
|---|---|---|
sleek-modeline-hide-file-icon-inactive | nil | Hide the file icon in inactive mode-lines. |
sleek-modeline-hide-major-mode-inactive | nil | Hide the major mode name in inactive mode-lines. |
sleek-modeline-hide-line-ending-inactive | nil | Hide the line ending style in inactive mode-lines. |
sleek-modeline-hide-modal-inactive | nil | Hide the modal state marker in inactive mode-lines. |
Top-level switches for optional segments. Disabling one prevents its package from being loaded.
| Variable | Default | Description |
|---|---|---|
sleek-modeline-enable-diagnostics | t | Enable the diagnostics (Flycheck) segment. |
sleek-modeline-enable-project | t | Enable the project name segment. |
sleek-modeline-enable-lsp | t | Enable the LSP indicator segment. |
| Variable | Default | Description |
|---|---|---|
sleek-modeline-vc-show-icon | t | Show a branch icon. Requires nerd-icons. |
sleek-modeline-vc-use-github-icon | nil | Use the GitHub mark icon instead of the git branch icon. |
sleek-modeline-vc-show-status-symbol | t | Append a symbol indicating VC state: ~ modified, + added, - removed, ! conflict, ↓ needs update, ? unregistered. |
sleek-modeline-hide-vc-icon-inactive | nil | Hide the VC icon in inactive mode-lines. |
sleek-modeline-hide-vc-branch-inactive=| =nil | Hide the VC branch name in inactive mode-lines. |
| Variable | Default | Description |
|---|---|---|
sleek-modeline-diagnostics-show-info | t | Show info-level diagnostics. |
sleek-modeline-diagnostics-error-symbol | "✕" | Symbol for errors. |
sleek-modeline-diagnostics-warning-symbol | "▲" | Symbol for warnings. |
sleek-modeline-diagnostics-info-symbol | "●" | Symbol for info notes. |
sleek-modeline-diagnostics-ok-symbol | nil | Symbol shown when the buffer is clean. |
| Variable | Default | Description |
|---|---|---|
sleek-modeline-hide-project-name-inactive | nil | Hide the project name in inactive mode-lines. |
| Variable | Default | Description |
|---|---|---|
sleek-modeline-lsp-symbol | "LSP" | Fallback text when nerd-icons is unavailable or icons are off. |
sleek-modeline-lsp-show-name | nil | Show the LSP server name next to the icon. |
sleek-modeline-hide-lsp-inactive | nil | Hide the LSP indicator in inactive mode-lines. |
(use-package sleek-modeline
:straight (sleek-modeline
:type git
:host github
:repo "abidanBrito/sleek-modeline")
:custom
(sleek-modeline-size 'medium)
(sleek-modeline-show-modal-state t)
(sleek-modeline-separator " | ")
(sleek-modeline-vc-use-github-icon nil)
(sleek-modeline-diagnostics-ok-symbol "✓")
:config
(sleek-modeline-mode 1))Contributions are welcome. Please open an issue or pull request on GitHub.
When reporting a bug, include:
- Your Emacs version (
M-x emacs-version). - Your
sleek-modelinesettings. - Steps to reproduce the issue.
This repository is released under the MIT license. See LICENSE for more information.
