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.
- [[https://github.com/tonsky/sublime-scheme-alabaster][tonsky/sublime-scheme-alabaster]]
- [[https://tonsky.me/blog/syntax-highlighting/][I am sorry, but everyone is getting syntax highlighting wrong @ tonsky.me]]
- 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
-
Minimal Highlighting: Only four main syntax classes are highlighted:
- Strings
- Constants (numbers, symbols, keywords, boolean values)
- Comments
- Global definitions
-
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.
-
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.
-
No Font Variations: The themes avoid mixing normal, bold, and italic text, making code easier to scan. Not all fonts provide bold/italic variants.
-
Reliable Parsing: Only highlights things that the parser can identify reliably. Unreliable highlighting does more harm than good.
-
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:
-
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.
-
Package Support: We provide 506 faces supporting 30+ packages (Magit, Org, Dired, etc.) for a consistent UI experience.
-
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
- Clone this repository or download the package
- Add the directory to your =load-path=
- 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:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- 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
- Original Alabaster theme by [[https://mastodon.online/@nikitonsky][Tonsky]].
- Theme Framework based on [[https://github.com/protesilaos/ef-themes][Ef Themes]] by Prot
- See Also
- [[https://github.com/tonsky/vscode-theme-alabaster][VSCode Theme Alabaster]]
- [[https://github.com/tonsky/intellij-alabaster][IntelliJ Alabaster]]