Skip to content

Built-in Theme Catalogue

ThemeLibrary ships the library's built-in colour palettes. This page is the live public catalogue: it owns category membership, counts, executable enumeration examples, and the compatibility and fidelity boundary. Category order is not semantic.

Available categories

Category Themes
Archives 60
Art Series 10
Holidays 15
Library 28
Moods 13
Music 14
Nature 8
Play 7
Space 11

That is 166 theme records, resolvable under 169 names once the 3 rename aliases are counted. 138 records come from the LIFX app and carry the app's own display name and category; the remaining 28 sit under Library — 19 with no app counterpart, plus 9 deprecated keys retained so no pre-6.4.0 name stops resolving.

The table is authored from the shipped library. A resync review must update it when category membership changes; tests/test_theme/test_docs_catalogue.py compares it against the live library and fails the suite if the two disagree.

List resolvable themes

from lifx import ThemeLibrary

theme_names = ThemeLibrary.get_available_themes()
assert theme_names == sorted(theme_names)
assert "evening" in theme_names

get_available_themes() includes every resolvable key, including supported rename aliases.

List categories

from lifx import ThemeLibrary

categories = ThemeLibrary.get_categories()
assert categories == sorted(categories)
assert "Holidays" in categories

List one category

from lifx import ThemeLibrary

holidays = ThemeLibrary.get_by_category("Holidays")
assert holidays
assert all(theme.category == "Holidays" for theme in holidays.values())

get_by_category() accepts category punctuation and case insensitively, while returning each canonical primary once. Use get_categories() rather than assuming the table's display order.

Compatibility and fidelity

The redefined pre-6.4.0 palettes were not carried forward. Their historical taxonomy and migration guidance remain in Theme Taxonomy Changes; use the current category methods above instead of redirecting a retired category name.

Palettes are stored as the app authors them — user-facing HSBK floats, converted to wire values at runtime — and are not truncated to the 16 palette slots a firmware effect packet carries. 25 themes are longer than 16 colours, up to independence at 68.

That length is available to apply_theme(), which renders the whole palette across a device's zones or pixels. It is not available to the firmware effect API: MatrixEffect rejects a palette above MAX_PALETTE_COLORS (16), so a long theme must be reduced before it can drive MORPH. Choosing which 16 is the caller's decision, not the library's.