Files
homeassistant_espscreen/components/smart_display/tile_icon_names.h
T
Max Gramser 6809d3b941 Take what a tile can do, its tap actions, words and icons from Home Assistant (0.2.67)
GitHub issue #7 asked for cover.toggle on tap. ESP Screens now asks Home
Assistant which actions each entity has instead of keeping lists: the editor
offers On / off (covers included), sliders, controls and displays only where
Home Assistant has the action, and refuses only new unsupported settings.
Perform action runs any action Home Assistant offers for the tile's entity,
under its own names and fields; the screen sends it with a call id and says
Refused when Home Assistant refuses. Sensors round by display precision, and
tiles, the top bar, timelines, vacuum chips and the inspector use Home
Assistant's words where they showed raw states. Tiles show Home Assistant's
icons, picked as its frontend does (the fonts grow to 309 glyphs).

Existing screens keep every setting and tap as before: stored layouts load
leniently, legacy taps route the same (1020 combinations), and messages are
byte-identical without Home Assistant's words and icons. Firmware 0.2.58.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 15:41:38 +02:00

332 lines
9.4 KiB
C++

#pragma once
// GENERATED by tools/generate_icons.py from screen_manager/app/tile_icons.py; do not edit.
#include <cstdint>
#include <string>
namespace tile_icon {
struct Named { const char *name; uint32_t codepoint; };
// Every glyph the three icon fonts of both boards carry, by Material Design Icons name.
inline constexpr Named NAMES[] = {
{"lightbulb", 0xF0335},
{"lightbulb-group", 0xF1253},
{"ceiling-light", 0xF0769},
{"chandelier", 0xF1793},
{"lamp", 0xF06B5},
{"floor-lamp", 0xF08DD},
{"desk-lamp", 0xF095F},
{"wall-sconce-flat", 0xF091D},
{"light-recessed", 0xF179B},
{"spotlight-beam", 0xF04C9},
{"led-strip-variant", 0xF1051},
{"outdoor-lamp", 0xF1054},
{"home", 0xF02DC},
{"sofa", 0xF04B9},
{"bed", 0xF02E3},
{"silverware-fork-knife", 0xF0A70},
{"chef-hat", 0xF0B7C},
{"shower", 0xF09A0},
{"bathtub", 0xF1818},
{"toilet", 0xF09AB},
{"desk", 0xF1239},
{"garage", 0xF06D9},
{"fireplace", 0xF0E2E},
{"thermometer", 0xF050F},
{"thermostat", 0xF0393},
{"air-conditioner", 0xF001B},
{"radiator", 0xF0438},
{"heat-pump", 0xF1A43},
{"fire", 0xF0238},
{"snowflake", 0xF0717},
{"water-percent", 0xF058E},
{"fan", 0xF0210},
{"ceiling-fan", 0xF1797},
{"air-purifier", 0xF0D44},
{"molecule-co2", 0xF07E4},
{"weather-sunny", 0xF0599},
{"weather-partly-cloudy", 0xF0595},
{"weather-cloudy", 0xF0590},
{"weather-rainy", 0xF0597},
{"weather-snowy", 0xF0598},
{"weather-windy", 0xF059D},
{"weather-night", 0xF0594},
{"weather-sunset-up", 0xF059C},
{"music-note", 0xF0387},
{"music", 0xF075A},
{"playlist-music", 0xF0CB8},
{"album", 0xF0025},
{"record-player", 0xF099A},
{"spotify", 0xF04C7},
{"radio", 0xF0439},
{"podcast", 0xF0994},
{"speaker", 0xF04C3},
{"speaker-multiple", 0xF0D38},
{"soundbar", 0xF17DB},
{"headphones", 0xF02CB},
{"piano", 0xF067D},
{"guitar-acoustic", 0xF0771},
{"television", 0xF0502},
{"projector", 0xF042E},
{"movie-open", 0xF0FCE},
{"cast", 0xF0118},
{"gamepad-variant", 0xF0297},
{"remote-tv", 0xF0EC5},
{"lock", 0xF033E},
{"lock-open-variant", 0xF0FC6},
{"shield-home", 0xF068A},
{"alarm-light", 0xF078F},
{"bell", 0xF009A},
{"doorbell", 0xF12E6},
{"cctv", 0xF07AE},
{"motion-sensor", 0xF0D91},
{"door-closed", 0xF081B},
{"door-open", 0xF081C},
{"window-closed-variant", 0xF11DB},
{"smoke-detector", 0xF0392},
{"water-alert", 0xF1502},
{"washing-machine", 0xF072A},
{"tumble-dryer", 0xF0917},
{"dishwasher", 0xF0AAC},
{"fridge", 0xF0290},
{"stove", 0xF04DE},
{"microwave", 0xF0C99},
{"toaster-oven", 0xF0CD3},
{"coffee-maker", 0xF109F},
{"kettle", 0xF05FA},
{"robot-vacuum", 0xF070D},
{"robot-mower", 0xF11F7},
{"printer-3d", 0xF042B},
{"power-plug", 0xF06A5},
{"power-socket-eu", 0xF07E7},
{"laptop", 0xF0322},
{"router-wireless", 0xF0469},
{"flash", 0xF0241},
{"solar-power", 0xF0A72},
{"solar-panel", 0xF0D9B},
{"home-battery", 0xF1901},
{"battery-high", 0xF12A3},
{"ev-station", 0xF05F1},
{"car-electric", 0xF0B6C},
{"meter-electric", 0xF1A57},
{"meter-gas", 0xF1A59},
{"water", 0xF058C},
{"water-boiler", 0xF0F92},
{"gauge", 0xF029A},
{"window-shutter", 0xF111C},
{"window-shutter-open", 0xF111E},
{"blinds", 0xF00AC},
{"blinds-open", 0xF1011},
{"roller-shade-closed", 0xF1A6C},
{"curtains", 0xF1846},
{"curtains-closed", 0xF1847},
{"awning-outline", 0xF1B88},
{"flower", 0xF024A},
{"tree", 0xF0531},
{"sprout", 0xF0E66},
{"grass", 0xF1510},
{"sprinkler", 0xF105F},
{"pool", 0xF0606},
{"grill", 0xF0E45},
{"mailbox", 0xF06EE},
{"trash-can", 0xF0A79},
{"recycle", 0xF044C},
{"dog", 0xF0A43},
{"cat", 0xF011B},
{"account", 0xF0004},
{"account-group", 0xF0849},
{"account-child", 0xF0A89},
{"home-account", 0xF0826},
{"sleep", 0xF04B2},
{"run", 0xF070E},
{"briefcase", 0xF00D6},
{"car", 0xF010B},
{"bike", 0xF00A3},
{"airplane", 0xF001D},
{"map-marker", 0xF034E},
{"power", 0xF0425},
{"toggle-switch", 0xF0521},
{"gesture-tap-button", 0xF12A8},
{"play", 0xF040A},
{"script-text", 0xF0BC2},
{"palette", 0xF03D8},
{"alarm", 0xF0020},
{"clock-outline", 0xF0150},
{"timer-outline", 0xF051B},
{"calendar", 0xF00ED},
{"bell-ring", 0xF009E},
{"heart", 0xF02D1},
{"alert-outline", 0xF002A},
{"cog", 0xF0493},
{"broom", 0xF00E2},
{"alert-circle-outline", 0xF05D6},
{"check", 0xF012C},
{"pause", 0xF03E4},
{"stop", 0xF04DB},
{"skip-next", 0xF04AD},
{"skip-previous", 0xF04AE},
{"volume-high", 0xF057E},
{"volume-off", 0xF0581},
{"arrow-up", 0xF005D},
{"arrow-down", 0xF0045},
{"arrow-expand-horizontal", 0xF084E},
{"arrow-collapse-horizontal", 0xF084C},
{"home-map-marker", 0xF05F8},
{"plus", 0xF0415},
{"minus", 0xF0374},
{"chevron-left", 0xF0141},
{"chevron-right", 0xF0142},
{"close", 0xF0156},
{"arrow-left", 0xF004D},
{"sun-snowflake-variant", 0xF1A79},
{"thermostat-auto", 0xF1B17},
{"weather-fog", 0xF0591},
{"weather-hail", 0xF0592},
{"weather-lightning", 0xF0593},
{"weather-lightning-rainy", 0xF067E},
{"weather-pouring", 0xF0596},
{"weather-snowy-rainy", 0xF067F},
{"weather-sunset-down", 0xF059B},
{"dots-horizontal", 0xF01D8},
{"arrow-oscillating", 0xF1C91},
{"monitor", 0xF0379},
{"information-outline", 0xF02FD},
{"restart", 0xF0709},
{"lightbulb-off", 0xF0E4F},
{"account-arrow-right", 0xF0B53},
{"air-filter", 0xF0D43},
{"air-humidifier", 0xF1099},
{"air-humidifier-off", 0xF1466},
{"alert-circle", 0xF0028},
{"angle-acute", 0xF0937},
{"arrow-bottom-left", 0xF0042},
{"arrow-bottom-right", 0xF0043},
{"arrow-down-box", 0xF06C0},
{"arrow-left-right", 0xF0E73},
{"arrow-right", 0xF0054},
{"arrow-split-vertical", 0xF093C},
{"arrow-top-left", 0xF005B},
{"arrow-top-right", 0xF005C},
{"arrow-up-box", 0xF06C3},
{"audio-video", 0xF093D},
{"audio-video-off", 0xF11B6},
{"battery", 0xF0079},
{"battery-10", 0xF007A},
{"battery-20", 0xF007B},
{"battery-30", 0xF007C},
{"battery-40", 0xF007D},
{"battery-50", 0xF007E},
{"battery-60", 0xF007F},
{"battery-70", 0xF0080},
{"battery-80", 0xF0081},
{"battery-90", 0xF0082},
{"battery-alert", 0xF0083},
{"battery-charging", 0xF0084},
{"battery-outline", 0xF008E},
{"battery-unknown", 0xF0091},
{"blinds-horizontal", 0xF1A2B},
{"blinds-horizontal-closed", 0xF1A2C},
{"bluetooth", 0xF00AF},
{"bluetooth-connect", 0xF00B1},
{"brightness-5", 0xF00DE},
{"brightness-7", 0xF00E0},
{"button-pointer", 0xF1B50},
{"car-battery", 0xF010C},
{"car-coolant-level", 0xF1019},
{"cash", 0xF0114},
{"cast-connected", 0xF0119},
{"cast-off", 0xF078A},
{"check-circle", 0xF05E0},
{"check-circle-outline", 0xF05E1},
{"check-network-outline", 0xF0C54},
{"checkbox-marked-circle", 0xF0133},
{"circle-slice-8", 0xF0AA5},
{"clock", 0xF0954},
{"clock-start", 0xF0155},
{"close-circle-outline", 0xF015A},
{"close-network-outline", 0xF0C5F},
{"compass-rose", 0xF1382},
{"crop-portrait", 0xF01A1},
{"crosshairs-question", 0xF1136},
{"current-ac", 0xF1480},
{"database", 0xF01BC},
{"ear-hearing", 0xF07C5},
{"eye", 0xF0208},
{"eye-check", 0xF0D04},
{"fan-off", 0xF081D},
{"format-list-bulleted", 0xF0279},
{"garage-open", 0xF06DA},
{"gate", 0xF0299},
{"gate-open", 0xF116A},
{"home-outline", 0xF06A1},
{"lan-connect", 0xF0318},
{"lan-disconnect", 0xF0319},
{"lightning-bolt", 0xF140B},
{"lock-alert", 0xF08EE},
{"lock-clock", 0xF097F},
{"lock-open", 0xF033F},
{"molecule", 0xF0BAC},
{"molecule-co", 0xF12FE},
{"motion-sensor-off", 0xF1435},
{"music-note-off", 0xF038A},
{"octagon", 0xF03C3},
{"package", 0xF03D3},
{"package-up", 0xF03D5},
{"ph", 0xF17C5},
{"pipe-valve", 0xF184D},
{"power-plug-off", 0xF06A6},
{"progress-clock", 0xF0996},
{"projector-off", 0xF1A23},
{"radioactive", 0xF043C},
{"ray-vertex", 0xF0445},
{"roller-shade", 0xF1A6B},
{"script-text-play", 0xF1727},
{"security", 0xF0483},
{"shield", 0xF0498},
{"shield-airplane", 0xF06BB},
{"shield-lock", 0xF099D},
{"shield-moon", 0xF1828},
{"shield-off", 0xF099E},
{"shield-outline", 0xF0499},
{"sine-wave", 0xF095B},
{"smoke-detector-alert", 0xF192E},
{"smoke-detector-variant", 0xF180B},
{"smoke-detector-variant-alert", 0xF1930},
{"speaker-off", 0xF04C4},
{"speaker-pause", 0xF1B73},
{"speaker-play", 0xF1B72},
{"speedometer", 0xF04C5},
{"spoon-sugar", 0xF1429},
{"sprout-outline", 0xF0E67},
{"square", 0xF0764},
{"square-outline", 0xF0763},
{"storage-tank", 0xF1A75},
{"sun-wireless", 0xF17FE},
{"television-off", 0xF083B},
{"television-pause", 0xF0F89},
{"television-play", 0xF0ECF},
{"texture-box", 0xF0FE6},
{"thermometer-lines", 0xF0510},
{"toggle-switch-variant", 0xF1A25},
{"toggle-switch-variant-off", 0xF1A26},
{"transmission-tower", 0xF0D3E},
{"vibrate", 0xF0566},
{"water-boiler-off", 0xF11B4},
{"water-off", 0xF058D},
{"water-opacity", 0xF1855},
{"weight", 0xF05A1},
{"wifi", 0xF05A9},
{"window-closed", 0xF05AE},
{"window-open", 0xF05B1},
};
inline constexpr size_t NAME_COUNT = sizeof(NAMES) / sizeof(NAMES[0]);
// Codepoint of a name the fonts carry; 0 for any other name.
inline uint32_t named(const std::string &name) {
for (const auto &entry : NAMES) if (name == entry.name) return entry.codepoint;
return 0;
}
// True when the fonts carry this codepoint, so a label can draw it.
inline bool carried(uint32_t codepoint) {
for (const auto &entry : NAMES) if (entry.codepoint == codepoint) return true;
return false;
}
} // namespace tile_icon