Skip to content
🎨 Apply your Emacs theme to the rest of Linux, using magic.
Branch: master
Clone or download
Latest commit 3f2ad94 May 23, 2019

theme-magic logo

What's the point in an Emacs theme if the rest of Linux looks different?

Apply your Emacs theme to the rest of Linux, using magic.

Demonstration of applying the theme to Linux with theme-magic


Just call M-x theme-magic-from-emacs. theme-magic will extract the colors from your Emacs theme and apply them to the rest of Linux with Pywal.

If you want the Linux theme to update automatically whenever the Emacs theme is changed, enable the global minor mode theme-magic-export-theme-mode. For example:

(require 'theme-magic)

You can disable auto-updating by disabling the minor mode.



First, you must install Pywal as a dependency. Check if it's installed by calling wal in a shell. Make sure Python is installed too.

Installing theme-magic from MELPA

theme-magic is available on MELPA. Follow the instructions to set up MELPA.

Install theme-magic with M-x package-install RET theme-magic RET.


Restoring Your Theme

Pywal only applies your theme to the current session. See its documentation for details. To restore the last theme, call wal -R in the shell. To restore your theme automatically, add the following to your .xprofile (or whichever dotfile is loaded automatically once your desktop starts up):

wal -R

Setting Your Wallpaper

Pywal was designed to generate a color scheme that matches your wallpaper. Because of some quirks in how Pywal works, you have to set the wallpaper before exporting a theme from Emacs, or it will not be saved. Call this command in a shell:

wal -i "path/to/wallpaper.png"

Pywal will set your wallpaper and save it in its cache. Now, you can apply your Emacs theme:

M-x theme-magic-from-emacs

Now, when you call wal -R, both the wallpaper and the theme will be set.


Theoretically, theme-magic should work on MacOS, but I don't have the ability to test it. If anyone has access to a Mac and can test, please let me know the results!

You can’t perform that action at this time.