Changing fonts and colors should be easy, also with terminals. Alas, neither iTerm2 nor OSX Terminal seem to have an easy way of doing this: you need to define a profile or change some of the options of the current profile. This is often an overkill.

Various solutions exists on the Internet, typically based on Applescript. Starting from these works, I have put together a few functions that allow to change colors and fonts using Emacs’ color names. For a solution based on JavaScript and working on Yosemite, look at the comments below or visit Fotsies Technology Blog.

Instructions:

  1. Grab the .colors.csv file available at osx terminal colors from cli (a Github gist) and save it in your home. The file contains all colors known to Emacs (with M-x list-colors-display) with the corresponding representation used by Applescript.
  2. Grab the set_colors.bash functions available at: osx terminal colors from cli and add them to your .bash_profile (or source them, if you prefer)

You are done! You can now change colors from your terminal using the following commands:

  • set_foreground_color <color-name>
  • set_background_color <color-name>
  • set_theme foreground-color <color-name>
  • set_font <font-name>

For instance:

$ set_foreground_color wheat
$ set_background_color gray10
$ set_font "Oxygen Mono" 12

Now that you can change colors using a bash function, some opportunities arise. For instance, you can change colors when connecting to a different host.