WallPanel: turning a Home Assistant dashboard into a wall panel
🖼️ Wall panel mode and photo screensaver for your Home Assistant Dashboards
At a glance
- What is it?
- WallPanel is a Lovelace extension that puts a photo or video slideshow behind a Home Assistant dashboard, hides the sidebar and toolbar, wakes the screen, and detects motion, with content coming from the media source, Immich, entity pictures, websites, or Unsplash. It is a browser-side card, not a server component, which decides what it can and cannot do.
- Who is it for?
- Use WallPanel when you have a tablet or panel mounted on a wall that should behave like a photo frame while still showing a few live dashboard cards, because the whole design is a browser-side overlay with an idle timer and a hidden chrome. Do not expect it to work when Home Assistant is not the browser in charge, since the extension lives in the Lovelace frontend and runs inside the dashboard you open.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 24 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A frontend extension, not a Home Assistant integration
WallPanel arrives through the Home Assistant Community Store, and the install is a matter of searching for WallPanel, opening the repository entry, clicking Download, and optionally picking a specific version before downloading again. Once installed, you enable it per dashboard through the dashboard YAML rather than through a global setting, which is the detail that makes it usable on more than one screen. The repository layout confirms what it is: a wallpanel-src.js source file, a built wallpanel.js, a rollup configuration, a babel configuration, a hacs.json manifest and a docs directory built with mkdocs. There is no server component, no Python package and no add-on in the tree. Everything runs in the browser of whatever device is showing the dashboard, which is why it works on a cheap tablet without extra hardware.
Turning the dashboard into a wall panel with five YAML keys
The activation path is deliberately manual, and it goes through the raw configuration editor. You open the dashboard, click Overview in the sidebar, use the three dots menu at the top right to edit the dashboard, then use the three dots menu again to reach the raw configuration editor. There you add the wallpanel configuration above anything else in the file.
wallpanel:
enabled: true
hide_toolbar: false
hide_sidebar: true
fullscreen: false
idle_time: 10After saving and closing the configuration, the panel is active for that dashboard. The sidebar should be hidden and the screensaver should start after an idle time of 10 seconds. The ordering requirement is the one thing to get right, since the block has to come first in the YAML, and the keys are few enough to set entirely from the documentation rather than by guessing.
What the screensaver can pull its pictures from
The image sources are the interesting part of the feature list. Home Assistant Media-source is one, which means anything your media source already exposes is fair game. Immich is another, so a self-hosted photo library can drive the display. Home Assistant entities with the entity_picture attribute form a third, which lets a camera entity act as the picture source. Full websites can be rendered as an iframe, so a live map or a weather page can stand in for a photograph. Unsplash completes the list. Credits in the README thank Unsplash and the photographers, and also OpenStreetMap for the Nominatim search engine and Jacob Seidelin for exif-js, which is the library used to read image orientation metadata. That last credit matters more than it looks: a photo shot in portrait on a phone carries EXIF orientation flags, and without handling them the image renders rotated.
Hiding the chrome and keeping the screen awake
The panel mode features listed are a photo and video slideshow screensaver, the ability to show dashboard views, cards and badges of your choice on top of the images, full-screen mode, hiding the side bar or the top bar, screen wake lock, and motion detection. The distinction between the two bars matters in practice: on a wall-mounted tablet you usually want the sidebar gone but keep some way back to the normal dashboard, which is why hide_toolbar and hide_sidebar are separate keys. The wake lock and motion detection pair is the physical counterpart of the screensaver. The screensaver starts when nobody touches the screen, and the wake lock stops the display from powering down in the meantime. The README lists NoSleep.js among the projects that inspired this one, along with a milestone-flavoured NoSleep implementation and two earlier screensaver projects for Lovelace.
The browser target is set in the build config
The package metadata tells you exactly which browsers the bundle is written for, and it is a short list. The browserslist field reads greater than 0.25 percent, Chrome 80 and above, which is the constraint that decides what JavaScript features survive the Babel and Rollup pipeline. The dependency list is thin: core-js and regenerator-runtime in the runtime dependencies, and nothing else. The build itself is a single script, rollup -c, with the Rollup plugins for Babel, CommonJS and node-resolve, plus rollup-plugin-terser for minification. The linting stack is ESLint 9 with the compatibility plugin, and formatting is handled by Prettier with a prettier-eslint wrapper. There is a DEVELOPMENT.md file at the root alongside an eslint.config.mjs, which suggests the project has grown enough to need documented contributor steps, though the README itself is short and points at the mkdocs site for anything deeper.
Release rhythm and what the version numbers say
The release history is dense and the numbering tells a story. Version v4.67.2 was published on 2026-09-29, v4.67.1 on 2026-09-20 and v4.67.0 on 2026-09-19, and the last push to the repository was on 2026-09-29. Three patch releases inside eleven days is the signature of a project that ships small fixes continuously rather than in scheduled batches. The four-digit minor version also indicates a long-lived line rather than a new rewrite, and the HACS badge in the README marks the repository as a default entry in the Community Store, which is the distribution channel that matters here since that is how most Home Assistant users install frontend cards. The licence field on the repository says GPL-3.0, which for a frontend card that people copy into their own dashboards and customise is worth reading before you start forking it.
Where this extension is the wrong choice
Three limitations follow from the architecture. First, it only works where the Lovelace frontend is running, so a wall panel that shows a Home Assistant dashboard in kiosk browser mode is in scope, while a tablet running a plain browser tab against a different dashboard system is not. Second, there is no server-side orchestration, which means there is no way for a script to push a specific image to the panel or to schedule content changes from the server side; the content is chosen by the configuration and by whatever the sources expose. Third, a browser-based screensaver that wakes a tablet every day is harder on the battery than a native application, and the wake lock is a browser API rather than a device-level guarantee. The documented tutorials reflect the intended use, pairing WallPanel with Fully Kiosk browser on Fire tablets for a wall-mounted control panel setup.
Editorial conclusion
Use WallPanel when you have a tablet or panel mounted on a wall that should behave like a photo frame while still showing a few live dashboard cards, because the whole design is a browser-side overlay with an idle timer and a hidden chrome. Do not expect it to work when Home Assistant is not the browser in charge, since the extension lives in the Lovelace frontend and runs inside the dashboard you open. Verify first that your browser matches the build target in package.json, which lists Chrome 80 and above at more than 0.25 percent share, that the photo source you choose is reachable from the panel itself, and that your idle_time value matches the screensaver delay you actually want, since the quick start sets it to 10 seconds.
Frequently asked questions
How do I install WallPanel in Home Assistant?
Search for WallPanel in the Home Assistant Community Store, click on the repository entry, then click the Download button, optionally selecting a specific version first, and click Download again. The documentation site is at j-a-n.github.io/lovelace-wallpanel.
How do I enable WallPanel on a dashboard?
Open the dashboard, click Overview in the sidebar, use the three dots menu to edit the dashboard, then use the three dots menu again to open the raw configuration editor, and add the wallpanel configuration above anything else in the file.
Which image sources can WallPanel use for the screensaver?
The Home Assistant Media-source, Immich, Home Assistant entities with the entity_picture attribute, full websites rendered as an iframe, and Unsplash. The project credits Unsplash, OpenStreetMap for the Nominatim search engine and Jacob Seidelin for exif-js.
How long does WallPanel wait before starting the screensaver?
The idle_time key in the dashboard configuration sets the delay in seconds, and the quick start example sets it to 10. The screensaver starts once the screen has been idle for that long.
What browsers does WallPanel support?
The build configuration targets browsers matching greater than 0.25 percent share, Chrome 80 and above. The bundle is built with Rollup and Babel, with terser for minification, and the runtime dependencies are core-js and regenerator-runtime.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/j-a-n-lovelace-wallpanel)Was this useful?