Skip to content

valignatev/heaven-and-hell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Heaven and Hell Emacs Emacs Emacs MELPA MELPA Stable

Logo

Heaven and Hell - emacs package for easy toggling of light/dark color themes.

TLDR:

Demo

Why?

I constantly switch light and dark theme. When it's sunny outside, or I work in a very light room - I use the light theme. Otherwise, I prefer dark one. So I wrote a bunch of helpers which helped me with this and one day I decided to make a package out of it. Hope it'll be useful to anybody else. Cheers!

Features

  • Define your favorite light and dark themes
  • Choose which one to run by default
  • Switch between them with a single keypress
  • Easily roll back to default emacs theme in case of messed faces

Installation

heaven-and-hell is available in Melpa.

With use-package

With use-package (including example config):

(use-package heaven-and-hell
  :ensure t
  :config
  (setq heaven-and-hell-theme-type 'dark) ;; Omit to use light by default
  (setq heaven-and-hell-themes
        '((light . tsdh-light)
          (dark . tsdh-dark))) ;; Themes can be the list: (dark . (tsdh-dark wombat))
  ;; Optionall, load themes without asking for confirmation.
  (setq heaven-and-hell-load-theme-no-confirm t)
  :hook (after-init . heaven-and-hell-init-hook)
  :bind (("C-c <f6>" . heaven-and-hell-load-default-theme)
         ("<f6>" . heaven-and-hell-toggle-theme)))

With straight.el

(straight-use-package 'heaven-and-hell)

Manually

First clone the repo:

git clone https://github.com/valignatev/heaven-and-hell.git your/site/elisp/path

Then add this in your init.el:

(require 'heaven-and-hell "your/site/elisp/path/heaven-and-hell/heaven-and-hell.el")

Example configuration

For use-package configuration look above in installation section

;; Default is 'light
(setq heaven-and-hell-theme-type 'dark)

;; Set preferred light and dark themes
;; default light is emacs default theme, default dark is wombat
;; Themes can be the list: (dark . (tsdh-dark tango-dark))
(setq heaven-and-hell-themes
      '((light . tsdh-light)
        (dark . tsdh-dark)))
;; Optionall, load themes without asking for confirmation.
(setq heaven-and-hell-load-theme-no-confirm t)

;; Add init-hook so heaven-and-hell can load your theme
(add-hook 'after-init-hook 'heaven-and-hell-init-hook)

;; Set keys to toggle theme and return to default emacs theme
(global-set-key (kbd "C-c <f6>") 'heaven-and-hell-load-default-theme)
(global-set-key (kbd "<f6>") 'heaven-and-hell-toggle-theme)

For Doom Emacs

;; In packages.el
(package! heaven-and-hell)

;; In config.el
(after! heaven-and-hell
  (setq heaven-and-hell-themes
        '((light . doom-one-light)
          (dark . doom-vibrant)))
  ;; Optionall, load themes without asking for confirmation.
  (setq heaven-and-hell-load-theme-no-confirm t)
  (map!
   :g "<f6>" 'heaven-and-hell-toggle-theme
   ;; Sometimes loading default theme is broken. I couldn't figured that out yet.
   :leader "<f6>" 'heaven-and-hell-load-default-theme))

(add-hook 'after-init-hook 'heaven-and-hell-init-hook)

Contribution

Have trouble with installation? Found a bug? Want a new feature? Feel free to open an issue!

Want to fix a bug or add something new yourself? Feel free to submit pull request!

Also, don't hesitate to share it anywhere in the Internet :)

License

MIT