10

I know that to (funcall (car (nth (random (length color-themes)) color-themes))) gives me a random color theme on every Emacs startup; but I hardly restart Emacs. How do I cycle between random color themes, say, every hour?

Sridhar Ratnakumar
  • 81,433
  • 63
  • 146
  • 187
  • This sounds horrendous :) Is the idea to randomly select colour schemes until you stumble upon one that you want to keep? – phils Aug 15 '10 at 23:22

3 Answers3

9
(defun random-color-theme ()
  (interactive)
  (random t)
  (funcall (car (nth (random (length color-themes)) color-themes))))

(random-color-theme)

(run-with-timer 1 (* 60 60) 'random-color-theme)

Credit goes to ggole @ #emacs (freenode); and aecrvol (below) for the (random t) tip.

Sridhar Ratnakumar
  • 81,433
  • 63
  • 146
  • 187
3

A little improvment: adding to the function (random t), otherwise generated sequence will be the same in each Emacs run ( from http://www.gnu.org/software/emacs/elisp/html_node/Random-Numbers.html).

(defun random-color-theme ()
  (interactive)
  (random t)  ; randomazing
  (funcall (car (nth (random (length color-themes)) color-themes))))
aecrvol
  • 41
  • 2
1

Here is my update:

(setq color-themes (custom-available-themes))

(defun random-color-theme ()
  (interactive)
  (random t)
  (load-theme
   (nth (random (length color-themes)) color-themes)
   t))


(random-color-theme)

(run-with-timer 1 (* 60 60) 'random-color-theme)
Terrence Brannon
  • 4,760
  • 7
  • 42
  • 61