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?
Asked
Active
Viewed 789 times
10

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 Answers
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
-
I am getting an error `void variable color-themes`. What should I do as prerequisite? – jdhao Oct 01 '21 at 07:30
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