views:

164

answers:

2

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?

+5  A: 
(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
+1  A: 

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