sellout/emacs-color-theme-solarized
{ "createdAt": "2011-04-07T10:37:33Z", "defaultBranch": "master", "description": "Emacs highlighting using Ethan Schoonover’s Solarized color scheme", "fullName": "sellout/emacs-color-theme-solarized", "homepage": "http://ethanschoonover.com/solarized", "language": "Emacs Lisp", "name": "emacs-color-theme-solarized", "pushedAt": "2025-03-13T07:21:35Z", "stargazersCount": 1164, "topics": [], "updatedAt": "2025-11-25T21:50:18Z", "url": "https://github.com/sellout/emacs-color-theme-solarized"}Solarized Colorscheme for Emacs
Section titled “Solarized Colorscheme for Emacs”Stolen from Ethan Schoonover es@ethanschoonover.com by Greg Pfeil greg@technomadic.org
Visit the [Solarized homepage]
Section titled “Visit the [Solarized homepage]”See the [Solarized homepage] for screenshots, details and colorscheme versions for Vim, Mutt, popular terminal emulators and other applications.
Screenshots
Section titled “Screenshots”
Downloads
Section titled “Downloads”If you have come across this colorscheme via the [Emacs-only repository] on github, see the link above to the Solarized homepage or visit the main [Solarized repository].
The [Emacs-only repository] is kept in sync with the main [Solarized repository]. Issues, bug reports, changelogs that are not specific to the Emacs implementation should be submitted to the main [Solarized repository].
[Solarized homepage] !: http://ethanschoonover.com/solarized [Solarized repository] !: https://github.com/altercation/solarized [Emacs-only repository] !: https://github.com/sellout/emacs-color-theme-solarized
Installation & Usage
Section titled “Installation & Usage”Emacs 24
Section titled “Emacs 24”- Add the
emacs-color-theme-solarizeddirectory to your Emacscustom-theme-load-path. - Add
(load-theme 'solarized t)to your Emacs init file. - Reload the init file, or restart Emacs.
Emacs 30+
Section titled “Emacs 30+”If you’re using Emacs 30+ with use-package, you can fetch the repository directly:
(use-package emacs-color-theme-solarized :vc (:url "https://github.com/sellout/emacs-color-theme-solarized.git" :branch "master") :config (add-to-list 'custom-theme-load-path "~/.emacs.d/elpa/emacs-color-theme-solarized"))After Installation
Section titled “After Installation”Once you’ve cloned the repository locally, add the following to your Emacs init file:
(load-theme 'solarized t)all versions
Section titled “all versions”To switch between the light and dark variations of Solarized, set the frame’s background-mode. This can be accomplished globally using M-x customize-variable frame-background-mode or on a per-frame basis with (set-frame-parameter nil 'background-mode 'light) (or 'dark). If you’re in a terminal, you must also set the terminal parameter with (set-terminal-parameter nil 'background-mode 'light) (or 'dark). Remember to call enable-theme after changing the background mode to update the state of the theme.
This allows you to have a mix of light and dark frames. I tend to use light frames in the GUI and dark frames in my terminal, so I use the following code:
(add-hook 'after-make-frame-functions (lambda (frame) (solarized-update-background-mode (if (display-graphic-p frame) 'light 'dark) (list frame))))Similarly, you can switch between background modes with M-x solarized-toggle-background-mode.
If you use Emacs Plus, you can keep the mode in sync with the OS with
(add-hook 'ns-system-appearance-change-functions #'solarized-update-background-mode)IMPORTANT NOTE FOR TERMINAL USERS:
Section titled “IMPORTANT NOTE FOR TERMINAL USERS:”If you are going to use Solarized in Terminal mode (i.e. not in a GUI version like Cocoa or X11 Emacs), please please please consider setting your terminal emulator’s colorscheme to use the Solarized palette. The [Solarized repository] includes palettes for some popular terminal emulator as well as Xdefaults; or you can download them from the official [Solarized homepage]. If you use this emacs color theme without having changed your emulator’s palette, you will need to configure Solarized to degrade its colorscheme to a set compatible with the terminal’s default limited 256 color palette (whereas by using the terminal’s 16 ANSI color values, you would see the correct, specific values for the Solarized palette).
Again, I recommend just changing your terminal colors to Solarized values either manually or via one of the many terminal schemes available for import.
Advanced Configuration
Section titled “Advanced Configuration”Solarized will work out of the box with just the instructions specified above but does include several variables that can be customized.
variable name default optional--------------------------------------------solarized-termcolors = 16 | 256solarized-degrade = nil | tsolarized-bold = t | nilsolarized-underline = t | nilsolarized-italic = t | nilsolarized-contrast = normal| high, lowsolarized-visibility = normal| high, lowsolarized-broken-srgb= nil | t (see details for Mac behavior)--------------------------------------------Option Details
Section titled “Option Details”-
solarized-termcolors
Some 256-color terminals also allow you to set and use the standard 16 colors in addition to the fixed 256-color palette. This option only applies when your terminal is in 256-color mode. If set to 16 (the default) it will try to use the exact Solarized colors (assuming that you’ve set these colors to the correct Solarized values either manually or by importing one of the many colorscheme available for popular terminal emulators). If it’s set to 256, then Solarized will use a degraded version of the Solarized palette by displaying the closest colors in the terminal’s default 256 colors as shown in Xterm’s color chart.
-
solarized-degrade
For test purposes only; in GUI mode, this forces Solarized to use the 256 degraded color mode to test the approximate color values for accuracy.
-
solarized-bold | solarized-underline | solarized-italic
If you wish to stop Solarized from displaying bold, underlined or italicized typefaces, simply set the appropriate variable to
nil. -
solarized-contrast
Stick with normal! It’s been carefully tested. Setting this option to high or low does use the same Solarized palette but simply shifts some values up or down in order to expand or compress the tonal range displayed.
-
solarized-visibility
Special characters such as trailing whitespace, tabs, newlines, when displayed using
:set listcan be set to one of three levels depending on your needs. Default value isnormalwithhighandlowoptions. -
solarized-broken-srgb
Emacs bug #8402 results in incorrect color handling on Macs. If you are using Emacs on a Mac, we try to determine this value automatically. If this is
t(the default on Macs), Solarized works around it with alternative colors. However, these colors are not totally portable, so you may be able to edit the “Gen RGB” column insolarized-definitions.elto improve them further.
Code Notes
Section titled “Code Notes”I have attempted to modularize the creation of Emacs colorschemes in this script and, while it could be refactored further, it should be a good foundation for the creation of any color scheme. By simply changing the values in the solarized-colors table in solarized-definitions.el and testing in a GUI Emacs, you can rapidly prototype new colorschemes without diving into the weeds of line-item editing each syntax highlight declaration.
The Values
Section titled “The Values”L*a*b values are canonical (White D65, Reference D50), other values are matched in sRGB space.
SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B RGB HSB--------- ------- ---- ------- ----------- ---------- ----------- -----------base03 #002b36 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21base02 #073642 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26base01 #586e75 10/7 brgreen 240 #585858 45 -07 -07 88 110 117 194 25 46base00 #657b83 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195 23 51base0 #839496 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59base1 #93a1a1 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63base2 #eee8d5 7/7 white 254 #e4e4e4 92 -00 10 238 232 213 44 11 93base3 #fdf6e3 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99yellow #b58900 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71orange #cb4b16 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80red #dc322f 1/1 red 160 #d70000 50 65 45 220 50 47 1 79 86magenta #d33682 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83violet #6c71c4 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77blue #268bd2 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82cyan #2aa198 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63green #859900 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60Bug Reporting
Section titled “Bug Reporting”Here are some things to keep in mind when submitting a bug report:
- include the output of
M-x versionin your report, - include the names of Emacs faces that you have a problem with (
M-: (face-at-point)andM-x describe-facewill tell you the name of the face at point), - include the output of
M-: (display-color-cells)(that lets us know which set of colors your Emacs is using), - screenshots are very helpful (before and after if you made a change),
- if you’re using a terminal, the name of the terminal and (if you can find out) the number of colors the terminal app is using,
- also if you’re using a terminal, try running Emacs in GUI mode, and see if the problem exists there (if it does, report the bug that way, if not, just mention that it’s a terminal-only bug),
- it’s very helpful (but not expected) if you can compare it to a similar situation in VIM (especially if you know the VIM highlight name or have a screenshot), and
M-x customize-apropos-facescan help you find all the relevant faces if you are submitting faces for a mode.