Home Assistant projects
All projects

Cover Card

Lovelace card · Home & energy
v1.0.0 · Nov 13, 2026 HA 2024.8.0+ Marketplace

Shutters, blinds, curtains, awnings, garage doors and gates, drawn as little animated scenes.

Cards for the covers of any integration: each one is drawn as a scene that follows its position, and the picture itself is the slider. One cover, a list, or every cover of an area, with favorite positions and a confirmation for doors and gates.

Highlights

  • A drawn scene per kind of cover: shutter, venetian blind, shade, curtains, awning, garage door, gate, door, roof window, damper
  • The picture is the position slider, dragged the way the cover moves
  • Tilt slider for slats that tilt, only when the cover supports it
  • Favorite positions in one tap, Open all / Stop / Close all for a group
  • Every cover of an area in one card
  • Confirmation before moving a garage door, a gate or a door
  • Mini card with a detail button showing the full card

Cards

cover-cardcover-mini-card
type: custom:cover-card

Install

  1. 1Open the repository in the Marketplace with the Add to Marketplace button above, or addgithub.com/juju35/ha-cover-card as a custom repository (category Dashboard).
  2. 2Download it from the Marketplace.
  3. 3Reload the browser and add the card from the dashboard editor.

Documentation

From the README

Features

Features

  • Two cards: a full Cover Card (custom:cover-card) and a compact Cover Mini Card (custom:cover-mini-card)
  • One cover, a list of covers, or every cover of an area (area), mixed freely
  • A drawn scene per device class: roller shutter, venetian blind, roller shade, curtains, awning, garage door, sliding gate, door, roof window and damper (a cover without a device class is a roller shutter; device_class draws another one)
  • The picture is the position slider: drag it (mouse, touch or pen) the way the cover moves (up for what rises, down for an awning that unrolls, sideways for curtains and a sliding gate, whose rail lies under the picture and leaves vertical swipes to the page) or use the arrow keys, Page Up / Down, Home and End; the position is sent once you let go, and the picture holds it until the cover reports its new state
  • While a cover moves, its scene animates its own way (rolling slats, swaying folds, blinking warning lamp, flowing air…) and a mark on the rail shows where it is going
  • Tilt slider and buttons for slats that tilt (venetian blinds, some shutters and awnings), shown only when the cover supports it
  • Open / Stop / Close buttons for the features each cover supports; Open is disabled once fully open, Close once fully closed (unless the cover only assumes its state, as a radio motor that reports nothing back), and the button of the way the cover moves gets the accent color
  • Favorite positions: one-tap buttons for a position, a tilt or both (favorites), per cover or for the whole group; the favorite reached is lit
  • Several covers: Open all / Stop / Close all buttons for the covers that support them, and one foldable row per cover (folded rows unfold to the full detail, a click elsewhere folds them back)
  • Confirmation before opening, closing or moving a garage door, a gate or a door, by its buttons, the group buttons, a favorite or its slider, in a popup at the top of the card; confirm: true asks for every cover, confirm: false never
  • Header with an icon of the kind of cover in a tinted badge, colored with the state (blue while moving, green open, orange for an open garage door, gate, door or window, grey closed, red unavailable), a summary ("3 covers · average 53%") and a status chip on the title line
  • Unavailable covers are greyed, their buttons and sliders disabled; a missing entity is reported in its row
  • Detail button on the mini card (top right): it switches the mini card to the full card's content and back; a click anywhere outside the card brings the compact view back
  • Click a position, a thumbnail or the status chip to open the Home Assistant more-info dialog
  • Sections view: the full card takes 12 columns by default and at least 6, the mini card 6; narrow widths keep the icons of the buttons
  • Keyboard and screen readers: sliders with their orientation, range and value, buttons with names, foldable rows that tell whether they are unfolded
  • Visual editor in the dashboard UI for both cards (no YAML needed)
  • Light and dark mode, prefers-reduced-motion honoured, English, French, German, Spanish, Serbian (Cyrillic and Latin), Italian, Dutch, European Portuguese, Polish, Romanian, Danish, Swedish, Bulgarian, Russian, Ukrainian, Hungarian, Slovak, Czech, Slovenian, Latvian and Greek
  • Single file, no external dependency

Supported integrations

Supported integrations

Every integration that provides cover entities: the cards use only the cover services (open_cover, close_cover, stop_cover, set_cover_position, the tilt services) and the standard attributes (current_position, current_tilt_position, supported_features, device_class). For example:

Integration Typical covers
Overkiz (Somfy TaHoma), Somfy MyLink Roller shutters, awnings, blinds, garage doors, gates
Shelly Roller shutters and blinds on Shelly 2PM / Plus 2PM (position and tilt)
Z-Wave, ZHA, Zigbee2MQTT / MQTT Shutter and blind modules, curtain motors, garage door openers
KNX, Velux, Motion Blinds, IKEA / Matter Shutters, roof windows, blinds and shades
Tuya, SwitchBot Curtain robots, blinds, gate and garage openers
Template, Group Any cover you build, cover groups

The picture follows the cover's device_class; set one in Settings → Entities → (the cover) → Show as, or draw another picture with the device_class option of the card.

Prerequisites

Prerequisites

Home Assistant 2024.8 or later.

Configuration

Configuration

Card types#

Card Type
Cover Card custom:cover-card
Cover Mini Card custom:cover-mini-card

Visual editor#

Edit a dashboard, click Add card and search for Cover Card or Cover Mini Card. The full card starts with your first cover, the mini card with the area that has the most covers. Pick covers and/or an area, an optional title, the picture, favorite positions (pick or type them), the parts to show, when to ask for confirmation and the language. The preview updates live, and options left at their default are kept out of the generated YAML. Per-cover options (name, device_class, favorites of one cover) are set in YAML; the editor keeps them.

Minimal#

type: custom:cover-card
entity: cover.living_room_bay_window
type: custom:cover-mini-card
area: living_room

Full options#

type: custom:cover-card
title: Ground floor
area: living_room
entities:
  - cover.kitchen_shade
  - entity: cover.office_blind
    name: Office
    favorites:
      - name: Reading
        position: 15
        tilt: 45
      - name: Privacy
        position: 0
        tilt: 10
  - entity: cover.garage_door
    device_class: garage
favorites:
  - 0
  - 50
  - 100
show_controls: true
show_group_controls: true
show_tilt: true
show_favorites: true
expanded: false
confirm: true
language: fr
type: custom:cover-mini-card
title: Every shutter
entities:
  - cover.living_room_bay_window
  - cover.living_room_patio_door
  - cover.bedroom_curtains
favorites: [25, 75]
zoom: true

Options reference#

Option Card Default Description
entity both — One cover
entities both — Covers: entity ids, or objects with entity and the per-cover options below
area both — An area (its id or its name): every cover of the area is added, after entity and entities (hidden entities left out)
title both Cover name, area name or "Covers" Card title
show_title both true Show the title in the header
show_subtitle both true Show the subtitle (kind of cover and area, or the number of covers and their average position)
device_class both Device class of each cover Picture to draw for every cover: shutter, blind, shade, curtain, awning, garage, gate, door, window or damper
favorites both — Favorite positions: numbers (a position in %) or objects with name, position and/or tilt. With one cover they are its favorites; with several, they move every cover that can take them
show_controls both true Open / Stop / Close buttons (and the tilt buttons)
show_group_controls full true Open all / Stop / Close all buttons above the rows of several covers
show_tilt both true Tilt slider and buttons, for the covers that support tilt
show_favorites both true Favorite position buttons
expanded both false Unfold every row of a card of several covers (otherwise click a row to unfold it; a click elsewhere folds it back)
confirm both Garage doors, gates and doors Ask in a popup before opening, closing or moving a cover (buttons, group buttons, favorites and slider; Stop never asks). Unset, it asks when a garage door, a gate or a door is among the covers moved; true asks for every cover, false never
zoom mini true Detail button at the top right of the mini card: it shows the full card's content (with the same options) and switches back to the compact view; a click outside the card also brings the compact view back. false removes the button
language both Auto Force language: fr, en, de, es, sr, sr-Latn, it, nl, pt, pl, ro, da, sv, bg, ru, uk, hu, sk, cs, sl, lv or el (auto-detects from Home Assistant)

Per-cover options, in an object of entities:

Option Description
entity The cover (required)
name Name shown instead of the friendly name
device_class Picture of this cover (same values as above)
favorites Favorite positions of this cover (same form as above), shown in its detail

How it works

How it works

  • Position: 0 % is closed and 100 % open, as in Home Assistant. The slider follows the moving edge of the picture: the top is open for what rises (shutter, blind, shade, garage door, and by convention door, roof window and damper), the bottom for an awning, the right for curtains and a sliding gate. A cover without current_position is drawn fully open or closed by its state, and half-way while it moves.
  • Features: buttons, sliders and favorites follow supported_features (open, close, set position, stop, and the four tilt features). A cover without supported_features (an old template cover) gets open, close and stop, plus position and tilt when it reports them.
  • Colors: moving is blue, open is green (orange for a garage door, gate, door or window), closed is grey and unavailable red; the header and the summary take the state of the group.
  • Redraws: the card is redrawn only when one of its covers changes, never while a slider is held.

Support

Support

If you find this project useful, you can support its development:

Buy Me a Coffee

Changelog

CHANGELOG.md

1.0.0Nov 13, 2026Latest

Features

  • Cover Card (custom:cover-card) and Cover Mini Card (custom:cover-mini-card) for the cover domain, whatever the integration: one cover, a list of covers or every cover of an area.
  • A drawn scene per device class (roller shutter, venetian blind, roller shade, curtains, awning, garage door, sliding gate, door, roof window, damper) that follows the position and the tilt, and is itself the position slider (pointer and keyboard), dragged the way the cover opens: up, down for an awning, sideways for curtains and a sliding gate.
  • An animation per kind of cover while it opens or closes (rolling slats, swaying folds and valance, blinking warning lamps, flowing air), with the target position marked on the rail; prefers-reduced-motion honoured.
  • Tilt slider and buttons, Open / Stop / Close buttons, favorite positions (position, tilt or both), group buttons and foldable rows, all following each cover's supported_features.
  • Confirmation before opening, closing or moving a garage door, a gate or a door (confirm: true for every cover, false never), unavailable covers greyed with disabled controls, mini card detail button, visual editors, Sections view sizes.
  • 22 languages; English in the bundle, every other language loaded on demand.