https://github.com/vedang/alabaster-themes
Minimal light and dark themes for GNU Emacs based on the original Sublime Text Alabaster color scheme.
https://github.com/vedang/alabaster-themes
Last synced: 21 days ago
JSON representation
Minimal light and dark themes for GNU Emacs based on the original Sublime Text Alabaster color scheme.
- Host: GitHub
- URL: https://github.com/vedang/alabaster-themes
- Owner: vedang
- License: mit
- Created: 2025-12-21T07:26:02.000Z (24 days ago)
- Default Branch: main
- Last Pushed: 2025-12-21T10:27:40.000Z (24 days ago)
- Last Synced: 2025-12-23T02:28:51.310Z (22 days ago)
- Language: Emacs Lisp
- Size: 2.55 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.org
- Changelog: CHANGELOG.org
- License: LICENSE.txt
Awesome Lists containing this project
README
#+TITLE: Alabaster Themes for Emacs
#+AUTHOR: Vedang Manerikar
#+EMAIL: ved.manerikar@gmail.com
* Alabaster Themes for Emacs
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
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
- 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]]