If only certain buffers could be so grossly incandescent.
 
solaire-mode is an aesthetic plugin designed to visually distinguish "real"
buffers (i.e. file-visiting code buffers where you do most of your work) from
"unreal" buffers (like popups, sidebars, log buffers, terminals, etc) by giving
the latter a slightly different -- often darker -- background:
This plugin accomplishes this by doing two things when activated:
- 
solaire-modebuffer-locally remaps all the faces insolaire-mode-remap-alist. e.g.default<->solaire-default-face, andmode-line<->solaire-mode-line-faceThe latter faces are the (presumably) "adjusted" faces. 
- 
solaire-global-modewill globally swap faces insolaire-mode-swap-alistIF your active theme is insolaire-mode-themes-to-face-swap. Use this if you think a theme has its designated solaire-*-face colors the wrong way around.
Praise the sun.
Note:
- Uses face-remapping-alist, which other plugins may overwrite.
- Tested mainly on Emacs 25.1+
- Works in GUI and terminal Emacs (with themes that support it).
- Try jumping.
Solaire-mode is available on MELPA: M-x package-install RET solaire-mode
Doom installs this package as part of the :ui doom module. No additional
configuration is needed.
Simply activate solaire-global-mode:
(solaire-global-mode +1)- solaire-mode-real-buffer-fn(default:- solaire-mode-real-buffer-p): The predicate function used to determine if a buffer is "real" or not. It takes no arguments and must return truthy for buffers where- solaire-modeshould not be activated in.
- solaire-mode-remap-alist: An alist mapping original faces to replacement faces, which will be buffer-locally remapped in any buffer- solaire-modeis enabled in.
- solaire-mode-swap-alist: An alist mapping original faces to replacement faces, which will be swapped globally if current theme is in- solaire-mode-themes-to-face-swap.
- solaire-mode-themes-to-face-swap(default:- ()): A list of themes to swap faces in- solaire-mode-swap-alistfor. Can be symbols or regexps.
- 
By default, solaire-moderemaps the mode-line faces. This interferes with certain mode-line packages like telephone-line or powerline, but works fine for doom-modeline. To disable this behavior use:(dolist (face '(mode-line mode-line-inactive)) (setf (alist-get face solaire-mode-remap-modeline) nil)) 
- 
It is up to themes to decide whether unreal buffers (i.e. non-file-visiting) are lighter or darker than real buffers. If you don't like their arrangement, add that theme to solaire-mode-themes-to-face-swap:(add-to-list 'solaire-mode-themes-to-face-swap 'doom-vibrant) Then solaire-mode will swap all the faces in solaire-mode-swap-alist(for example, swapping thedefaultface withsolaire-default-face).You can add a regexp to solaire-mode-themes-to-face-swapto affect a family of themes, e.g.(add-to-list 'solaire-mode-themes-to-face-swap "^doom-") 
solaire-mode will disable itself if the active theme doesn't support it, but
to ensure support a theme must at least change solaire-default-face's
:background. My recommendation is that it is be slightly darker or lighter
than default's background.
For example doom-one (seen in the screenshot above) prefers
solaire-default-face be darker than default:
Others, like doom-vibrant prefer the opposite:
For full support, themes can customize the following faces:
| Face | Remapped face | 
|---|---|
| solaire-default-face | default | 
| solaire-fringe-face | fringe | 
| solaire-line-number-face | line-number | 
| solaire-hl-line-face | hl-line | 
| solaire-org-hide-face | org-hide, org-indent | 
| solaire-mode-line-face | mode-line | 
| solaire-mode-line-inactive-face | mode-line-inactive | 
| solaire-header-line-face | header-line | 
The only (known) themes to support solaire-mode are:
- doom-themes
- nano-theme
- modus-themes
- parchment
- spacemacs-theme
- stimmung-themes
- vscode-dark-plus-theme
- wilmersdorf-theme
If you know of more, feel free to PR them.


