README.org

March 25, 2026 · View on GitHub

#+TITLE: Alabaster Themes for Emacs #+AUTHOR: Vedang Manerikar #+EMAIL: ved.manerikar@gmail.com

A collection of minimal light and dark themes for GNU Emacs based on the original Sublime Text Alabaster color scheme.

  • Screenshots

alabaster-themes-light - Light theme with foreground highlighting [[file:images/alabaster.png]]

alabaster-themes-light-bg - Light theme with background highlighting [[file:images/alabaster-bg.png]]

alabaster-themes-dark - Dark theme with foreground highlighting [[file:images/alabaster-dark.png]]

alabaster-themes-light-mono - Light monochromatic theme [[file:images/alabaster-mono.png]]

alabaster-themes-dark-mono - Dark monochromatic theme [[file:images/alabaster-dark-mono.png]]

  • Overview

The Alabaster themes follow a minimal highlighting philosophy. Unlike most color schemes that highlight everything they can (ending up looking like a fireworks show), Alabaster uses minimal highlighting with just a few carefully chosen color classes.

** Design Principles

  1. Minimal Highlighting: Only four main syntax classes are highlighted:

    • Strings
    • Constants (numbers, symbols, keywords, boolean values)
    • Comments
    • Global definitions
  2. No Keyword Highlighting: Standard language keywords (if, else, function, etc.) are not highlighted. They are usually the least important and most obvious part of any program.

  3. Comment Highlighting: Comments are highlighted prominently. If code was complex enough to deserve an explanation, then it's that explanation we should see and read first.

  4. No Font Variations: The themes avoid mixing normal, bold, and italic text, making code easier to scan. Not all fonts provide bold/italic variants.

  5. Reliable Parsing: Only highlights things that the parser can identify reliably. Unreliable highlighting does more harm than good.

  6. Conscious Color Usage: With minimal rules, you can consciously use colors to look for specific information. All strings pop out because there aren't many other highlighted elements competing for attention.

  • Philosophy and Design Evolution

** Relationship to Original Alabaster

This Emacs implementation is inspired by the original Sublime Text Alabaster color scheme, but has evolved to balance minimalism with modern Emacs user expectations.

** Adherence to Original Philosophy

We maintain these core principles:

  • ✓ Only 4 syntax classes highlighted (strings, constants, comments, global definitions)
  • ✓ Comments highlighted prominently in red (not dimmed)
  • ✓ Keywords, types, and builtins use default text color (not highlighted)
  • ✓ Conscious, restrained color usage
  • ✓ Reliable parser-based highlighting

** Divergences from Original Philosophy

To support modern Emacs workflows, we made pragmatic compromises:

  1. Font Variations: The original avoids bold/italic entirely. We use them sparingly for UI emphasis (headings, errors, Magit headers) - 95 of 506 faces inherit bold/italic.

  2. Package Support: We provide 506 faces supporting 30+ packages (Magit, Org, Dired, etc.) for a consistent UI experience.

  3. Keywords in Some Variants:

    • =alabaster-themes-light= and =alabaster-themes-dark=: Keywords use =fg-main= (black/white) - compliant
    • =alabaster-themes-light-bg=: Comments use yellow instead of red - partially divergent
    • =alabaster-themes-light-mono= and =alabaster-themes-dark-mono=: Everything monochrome except errors - most compliant

** Which Variant Should You Use?

  • For pure minimalism closest to original: Use =alabaster-themes-light-mono= or =alabaster-themes-dark-mono=
  • For balanced minimalism with rich UI theming: Use =alabaster-themes-light= or =alabaster-themes-dark=
  • For background highlighting instead of text: Use =alabaster-themes-light-bg= (My Favourite!)

*** For Sublime Alabaster Purists

If you want the closest experience to the original:

  • Use =alabaster-themes-light-mono= or =alabaster-themes-dark-mono=
  • Set =(setq alabaster-themes-no-bold t)=
  • These variants have minimal highlighting

For the full modern Emacs experience:

  • Use =alabaster-themes-light= or =alabaster-themes-dark=
  • Enjoy comprehensive package support
  • Theme Variants

The package includes five theme variants:

| Theme | Description | Background Mode | |------------------------------+------------------------------------------+-----------------| | =alabaster-themes-light= | Light theme with foreground highlighting | light | | =alabaster-themes-light-bg= | Light theme with background highlighting | light | | =alabaster-themes-dark= | Dark theme with foreground highlighting | dark | | =alabaster-themes-light-mono= | Light monochromatic theme | light | | =alabaster-themes-dark-mono= | Dark monochromatic theme | dark |

  • Installation

** Requirements

  • Emacs 28.1 or later

** Installation via package.el (TBD)

The themes will be available on MELPA. Install with:

#+begin_src emacs-lisp M-x package-install RET alabaster-themes RET #+end_src

** Manual Installation

  1. Clone this repository or download the package
  2. Add the directory to your =load-path=
  3. Load the main file: =(require 'alabaster-themes)=

** Using use-package

If you use [[https://github.com/jwiegley/use-package][use-package]], you can install and load the theme as follows:

#+begin_src emacs-lisp (use-package alabaster-themes :ensure t :config ;; Load the light theme (load-theme 'alabaster-themes-light t) ;; Interactively select a theme :commands (alabaster-themes-select)) #+end_src

  • Usage

** Post-Load Hook

Run code after loading a theme:

#+begin_src emacs-lisp (add-hook 'alabaster-themes-post-load-hook (lambda () (message "Alabaster theme loaded!"))) #+end_src

  • Package Support

The themes provide face coverage for popular packages:

  • Version Control: Magit, diff-hl, git-gutter
  • Completion: Company, Corfu, Vertico, Orderless, Consult, Embark, Marginalia
  • Navigation: Avy, Which-key
  • Programming: Flycheck, Flymake, Eglot, LSP Mode
  • Documentation: Org, Elfeed, EWW, Info, Man
  • Mail: Message, Gnus
  • Editing: Yasnippet, Smartparens, Show-paren, Rainbow-delimiters
  • UI: All-the-icons, Custom
  • Search: Isearch, Consult
  • Dired: Dired, Diredfl, Image-dired
  • Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests if applicable
  5. Submit a pull request
  • Changelog

See [[CHANGELOG.org][CHANGELOG.org]] for version history.

  • License

MIT License - same as the original Alabaster theme by Nikita Prokopov.

  • Credits
  • See Also