Skip to main content

29.22 Color Names

A color name is text (usually in a string) that specifies a color. Symbolic names such as ‘black’, ‘white’, ‘red’, etc., are allowed; use M-x list-colors-display to see a list of defined names. You can also specify colors numerically in forms such as ‘#rgb’ and ‘RGB:r/g/b’, where r specifies the red level, g specifies the green level, and b specifies the blue level. You can use either one, two, three, or four hex digits for r; then you must use the same number of hex digits for all g and b as well, making either 3, 6, 9 or 12 hex digits in all. (See the documentation of the X Window System for more details about numerical RGB specification of colors.)

These functions provide a way to determine which color names are valid, and what they look like. In some cases, the value depends on the selected frame, as described below; see Input Focus, for the meaning of the term “selected frame".

To read user input of color names with completion, use read-color (see read-color).

function color-defined-p color \&optional frame

This function reports whether a color name is meaningful. It returns t if so; otherwise, nil. The argument frame says which frame’s display to ask about; if frame is omitted or nil, the selected frame is used.

Note that this does not tell you whether the display you are using really supports that color. When using X, you can ask for any defined color on any kind of display, and you will get some result—typically, the closest it can do. To determine whether a frame can really display a certain color, use color-supported-p (see below).

This function used to be called x-color-defined-p, and that name is still supported as an alias.

function defined-colors \&optional frame

This function returns a list of the color names that are defined and supported on frame frame (default, the selected frame). If frame does not support colors, the value is nil.

This function used to be called x-defined-colors, and that name is still supported as an alias.

function color-supported-p color \&optional frame background-p

This returns t if frame can really display the color color (or at least something close to it). If frame is omitted or nil, the question applies to the selected frame.

Some terminals support a different set of colors for foreground and background. If background-p is non-nil, that means you are asking whether color can be used as a background; otherwise you are asking whether it can be used as a foreground.

The argument color must be a valid color name.

function color-gray-p color \&optional frame

This returns t if color is a shade of gray, as defined on frame’s display. If frame is omitted or nil, the question applies to the selected frame. If color is not a valid color name, this function returns nil.

function color-values color \&optional frame

This function returns a value that describes what color should ideally look like on frame. If color is defined, the value is a list of three integers, which give the amount of red, the amount of green, and the amount of blue. Each integer ranges in principle from 0 to 65535, but some displays may not use the full range. This three-element list is called the rgb values of the color.

If color is not defined, the value is nil.

(color-values "black")
⇒ (0 0 0)
(color-values "white")
⇒ (65280 65280 65280)
(color-values "red")
⇒ (65280 0 0)
(color-values "pink")
⇒ (65280 49152 51968)
(color-values "hungry")
⇒ nil

The color values are returned for frame’s display. If frame is omitted or nil, the information is returned for the selected frame’s display. If the frame cannot display colors, the value is nil.

This function used to be called x-color-values, and that name is still supported as an alias.