-
-
Notifications
You must be signed in to change notification settings - Fork 20
Screensaver
The screensaver system displays beautiful content when your device is idle, while protecting the screen.
The screensaver layers on top of the Home Launcher desktop. When the device wakes from idle, it returns to the launcher workspace.
0.6.2 turned Simple Clock into a smart display centerpiece: up to three live Home Assistant status slots, automatic Pixel Shift to fight burn-in, and disk-cached network wallpapers. 0.7.3 improved Pixel Shift with smoother sub-pixel movement and added CPU throttling during screensaver idle to reduce heat on always-on wall panels.
0.6.3 adds Smart AOD: an idle dark mask that dims the Web screensaver, Simple Clock, or Quick Entity panel to reduce burn-in and power use. Any touch or voice interaction fades the mask back to full brightness and restarts the timer.
0.6.4 rebuilds the Xiaomi-style screensaver as Dawn · Magazine Screensaver: rotating artwork with time, date, a short quote, and up to four live Home Assistant status capsules, plus a weather forecast strip. 0.6.5 made the Web screensaver a truly resident page with Pixel Shift improvements. 0.6.9 added screensaver timeout=0 (dashboard stays visible, HA can still open screensaver on demand), bidirectional screensaver switch sync, and camera view on the screensaver layer.
When the device is idle for a period of time, Ava automatically displays a screensaver. Touch the screen to exit.
Screensaver Types:
- Dawn · Magazine Screensaver (recommended, formerly Xiaomi Wallpaper)
- Web Screensaver
- Image Screensaver
- Simple Clock (floating window, see Floating Windows)
The former Xiaomi-style screensaver has been rebuilt as Dawn · Magazine Screensaver. It treats the idle screen like a new magazine page at the start of the day: a rotating wallpaper establishes the atmosphere, while time, date, a short quote, weather, and a few chosen Home Assistant states remain glanceable without taking over the composition.
Dawn automatically selects a corner, centered, or dashboard layout based on the available weather data, status capsules, and portrait/landscape space — nothing needs to be hand-tuned per orientation.
Up to four Home Assistant entity slots can be configured. Sensors, binary sensors, lights, and switches appear as compact status capsules with icons inferred from their entity type and name.
A weather entity is treated specially: instead of becoming another capsule, it supplies a forecast strip along the bottom whenever forecast data is available.
Path: Ava Settings → Screensaver → Magazine & Content → Entity Slots
The wallpaper source is configurable:
- Point it at a JSON API, or an address that directly returns a random image
- Leave it empty to use Ava's default source
Images are preloaded before each transition, and the last successful image is replayed from cache during startup or a temporary network outage, so the screen is never left blank.
Path: Ava Settings → Screensaver → Magazine & Content → Wallpaper Source
Dawn includes compatibility handling for older Android WebView versions and pushes an initial batch of Home Assistant data on load, keeping the page useful on the older wall panels that Ava commonly supports.
- Go to Settings -> Screensaver
- Turn on Screensaver switch
- Turn on Dawn · Magazine Screensaver switch
- Configure up to 4 entity slots and a wallpaper source under Magazine & Content
- Set Timeout (how long before screensaver shows)
Web screensaver can display any web content, such as weather, calendar, dashboards, etc.
- Display Home Assistant dashboard
- Display weather website
- Display custom web page
- Go to Settings -> Screensaver
- Turn on Screensaver switch
- Turn off Xiaomi Wallpaper switch
- Enter web address in Screensaver URL
- Set Timeout
Tip: To use Home Assistant as screensaver, first enable Browser Display, enter your HA URL in Remote Browser URL and login to sync cookies, then the screensaver can auto-login to HA dashboard.
Enable Show Screensaver URL to expose the URL entity in Home Assistant.
Image screensaver can display network images, supports MJPEG video streams.
- JPEG/JPG
- PNG
- GIF
- MJPEG video stream
Set image URL via Home Assistant service:
service: esphome.your_device_name_screensaver_image
data:
url: "http://example.com/image.jpg"Load a remote wallpaper image behind the simple clock.
- Go to Settings -> Screensaver
- Enter Clock Wallpaper URL (direct image URL)
- Leave blank for plain black background
Reload the wallpaper at a set interval (in seconds). Default: 30 seconds.
Fetch the same wallpaper URL twice and show it in left/right split view. Useful for wide screens.
Add a black translucent overlay above the wallpaper. When enabled, text shadow stays off for better readability.
Network wallpapers are now cached on disk. A cold start or temporary network outage shows the last successful image immediately while refreshing in the background.
The wallpaper editor can clear the current URL and restore the default black background; confirming that change also removes the old wallpaper cache.
Simple Clock can now replace its date row with up to three live Home Assistant entity states — making it a genuinely useful information panel, not just a clock.
What You Can Show:
- Current temperature, humidity, or weather summary
- Door lock state, alarm state, or any binary/text sensor
- Up to three entities at once, each with its own label and icon
How to Set Up:
- Go to Ava Settings → Interaction → Information & Scenes → Simple Clock → Appearance & Status
- Fill in the entity ID, display name, and icon for each of the three slots
- The status items arrange horizontally in landscape and vertically in portrait
- The clock, weather, and status areas adapt their size and position to the available space
Automate It (optional):
- Home Assistant text entities allow automations to swap the entity assigned to any slot without touching the device.
Pixel Shift (0.6.2):
To protect long-running wall panels from burn-in, Ava slightly moves the complete clock, weather, and entity-status layer every 45 seconds. The shift is subtle — enough to change which pixels are on, but not enough to distract.
Simple Clock now has independent portrait layouts for narrow screens:
| Layout | Description |
|---|---|
| Simple portrait | Single-line time display — works on all screen sizes |
| Portrait magazine | Hour and minute stacked vertically — magazine-style layout for tall displays |
Time, date, AM/PM, and weather redistribute for narrow screens without changing the landscape design. The portrait style only affects portrait orientation — landscape is unchanged.
Path: Ava Settings → Interaction → Information & Scenes → Simple Clock → Appearance & Status → Portrait style
Smart AOD (Always-On Display power-saving mode) puts a dark cover over long-running displays when the device has been idle for a configurable time. It works on top of the Web screensaver, Simple Clock, and Quick Entity panel, so you can leave useful information visible at night without running the screen at full brightness.
What it does:
- After the idle timeout, a dark mask fades in over the current overlay
- The mask strength is adjustable from 5% to 100%
- Any touch, wake word, or screen interaction immediately fades the mask back out
- The timer restarts automatically after each interaction
- Each overlay has its own Smart AOD toggle and timeout, so they can be configured independently
Where to enable it:
| Overlay | Path |
|---|---|
| Web Screensaver | Settings → Screensaver → Smart AOD |
| Simple Clock | Settings → Interaction → Information & Scenes → Simple Clock → Smart AOD |
| Quick Entity | Settings → Interaction → Quick Entity → Smart AOD |
Recommended starting values for wall panels:
- Wait time: 60 seconds of idle before dimming
- Mask strength: 80% for OLED panels, 50% for LCD panels
Smart AOD works together with Pixel Shift and Turn off in dark. For the best burn-in protection, enable all three on panels that stay on 24/7.
Rooted devices can optionally use Smart CPU Throttle while the display is dimmed by Smart AOD, reducing CPU usage during idle. Normal performance restores immediately when activity resumes.
Path: Ava Settings → Power User → Smart CPU Throttle
Web Screensaver dimming is configured separately from Smart AOD. Discrete entity changes, such as a light or door changing state, can wake the display, while continuously updating sensors will not repeatedly disturb it.
The screensaver timeout can now be set to 0. The dashboard then remains visible during ordinary idle time, while Home Assistant can still open the screensaver when needed. To restore an automatic screensaver later, simply choose a normal waiting time again.
This is useful for doorbell camera scenarios: when motion is detected at the door at night, Home Assistant can display the camera on the screensaver layer. Closing it returns to the dashboard exactly where it was.
Path: Ava Settings -> Screensaver -> Timeout (set to 0)
With the two-way screensaver switch enabled, the panel and Home Assistant show the same state.
- Dismissing the screensaver on the panel turns the HA switch off
- Opening or closing it from HA updates the panel immediately
The screensaver idle timeout is also exposed to Home Assistant as a number entity, allowing remote control of the wait time.
Home Assistant can display a camera feed on the screensaver layer. When motion is detected at the door at night, the camera appears on top of the dashboard. Closing the camera view returns to the dashboard exactly where it was.
This works together with the timeout=0 setting: the dashboard stays visible by default, and the camera screensaver is triggered only when needed.
When the screensaver is active and nothing is animating, Ava reduces background CPU activity to minimize heat on always-on wall panels. This is especially important for devices mounted in enclosed spaces or running 24/7 without active cooling.
- Throttling engages only when the screensaver is fully idle (no active animation, no camera view)
- Any wake event — touch, wake word, announcement, timer — immediately restores full performance
- Does not affect Bluetooth scanning, presence detection, or voice satellite operation
- Most visible on older devices that tend to run warm after hours of idle display
No configuration needed — throttling is automatic.
Set how long before screensaver shows when idle.
| Option | Description |
|---|---|
| 15 seconds | Quick screensaver |
| 30 seconds | Default |
| 60 seconds | Longer wait |
| 120 seconds | Much longer wait |
| 300 seconds | 5 minutes |
Touch anywhere on screen to exit screensaver.
When ambient light is very low (e.g., lights off at night), automatically turn off screen to save power.
How to Enable:
- Go to Settings -> Screensaver
- Turn on Turn off in dark switch
How It Works:
- Screen turns off when light below threshold (≤ 1.5 lx)
- Screen turns on when light restored (≥ 10 lx)
- Both transitions are debounced to prevent flickering
When the screensaver uses the camera, those same frames now feed a lightweight motion probe. The screen can stay off or remain dimmed while the room is empty, then come back to full brightness the moment someone enters — without running heavy full-frame analysis continuously.
This lowers background CPU while the screensaver is visible and restores normal operation as soon as interaction resumes. It works together with Proximity Wake and Turn off in dark for a smarter idle experience.
How to Enable:
- Use a screensaver that accesses the camera, such as an MJPEG stream or camera-aware web screensaver
- Keep Screensaver enabled
- The motion probe runs automatically when the camera source is active
**Device-Specific Screen Control (Mod Hook):
On devices where the standard Android screen-off API doesn't work (e.g., Echo Show with Fire OS), Ava delegates to a device support mod if one is installed and enabled.
Data flow:
darkOffEnabled + light sensor ≤ 1.5 lx
→ hide screensaver (remove KEEP_SCREEN_ON)
→ ModDeviceSupport.trySleepScreenForDark()
→ echo-show-support mod (if isSupported)
→ Shizuku setDisplayPower(0)
→ root input keyevent 223
→ root input keyevent 26
→ fallback: minimum brightness 10
→ if mod returns false → ScreenControlUtils.setScreenOn(false)
Without a mod or on unsupported devices, trySleepScreenForDark returns false immediately and Ava uses the standard ScreenControlUtils — identical to behavior without any mod installed.
The echo-show-support mod (v1.1.0+) adds Shizuku/root-based screen control for Echo Show devices (crown and similar) where the standard Android API cannot turn off the display.
Requirements:
- Mod installed and enabled
- Device must have root and/or Shizuku authorization
- Screensaver enabled + "Turn off in dark" enabled
Enable via ADB (headless):
adb shell am broadcast -a com.example.ava.ACTION_SET_MOD_ENABLED \
--es mod_id echo-show-support --ez mod_enabled trueSleep strategy (dark detected):
- Check Shizuku or root availability — if neither, return
false(fall back to core) - Shizuku
setDisplayPower(0)— turns off display panel - Root
input keyevent 223(KEYCODE_SLEEP) - Root
input keyevent 26(KEYCODE_POWER) + verify!isInteractive - Fallback: set brightness to minimum (10)
Wake strategy (light restored):
- Shizuku
setDisplayPower(2)— turns on display panel - Root
input keyevent 26(KEYCODE_POWER) - Restore cached brightness
Limitations:
- Complete darkness may still be affected by ROM-level Ambient Display or clock widgets
- The mod attempts
display power offwhich is darker than brightness-only approaches - Strategy updates can be deployed via mod update without changing the main APK
Debug logging:
adb logcat -s ScreensaverController EchoShowSupport ModDeviceSupportWhen someone approaches the device, automatically wake the screen.
How to Enable:
- Go to Settings -> Screensaver
- Turn on Proximity Wake switch
Pause the screensaver when another app is in foreground. This prevents the screensaver from interfering with other apps.
| Setting | Location | Description | Default |
|---|---|---|---|
| Enable Screensaver | Screensaver | Enable/disable screensaver | Off |
| Dawn · Magazine Screensaver | Screensaver | Rotating artwork + HA entity slots + weather strip (formerly Xiaomi Wallpaper) | Off |
| Dawn Entity Slots | Screensaver → Magazine & Content | Up to 4 HA entities shown as status capsules | Empty |
| Dawn Wallpaper Source | Screensaver → Magazine & Content | Custom JSON/image API, empty = default | Empty |
| Screensaver URL | Screensaver | Custom web screensaver address | Empty |
| Show Screensaver URL | Screensaver | Show URL entity in HA | Off |
| Show in HA | Screensaver | Show screensaver control in HA | Off |
| Timeout | Screensaver | How long before screensaver shows (0 = dashboard stays visible, HA can still trigger screensaver) | 30s |
| Turn off in dark | Screensaver | Auto screen off in dark | Off |
| Background Pause | Screensaver | Pause when another app is foreground | Off |
| Proximity Wake | Screensaver | Auto wake when approached | Off |
| Clock Wallpaper URL | Screensaver | Remote wallpaper behind clock (cached on disk) | Empty |
| Wallpaper Refresh | Screensaver | Reload interval in seconds | 30 |
| Dual Pane Wallpaper | Screensaver | Split view for wide screens | Off |
| Dark Wallpaper Overlay | Screensaver | Black translucent overlay | Off |
| Smart AOD | Screensaver | Idle dark mask for web screensaver | Off |
| Smart AOD Wait | Screensaver | Seconds before mask appears | 60 |
| Smart AOD Mask Depth | Screensaver | Darkness of the mask | 100% |
| Simple Clock Status Slots | Interaction → Information & Scenes → Simple Clock | Up to 3 HA entity states replacing the date row | Off |
| Pixel Shift | Interaction → Information & Scenes → Simple Clock | Subtle movement every 45s to prevent burn-in | Off |
| Simple Clock Smart AOD | Interaction → Information & Scenes → Simple Clock | Idle dark mask for Simple Clock | Off |
| Simple Clock Smart AOD Wait | Interaction → Information & Scenes → Simple Clock | Seconds before mask appears | 60 |
| Simple Clock Smart AOD Mask Depth | Interaction → Information & Scenes → Simple Clock | Darkness of the mask | 100% |
Screensaver is controlled via switch and text entities.
# Show screensaver
service: switch.turn_on
target:
entity_id: switch.your_device_name_screensaver
# Hide screensaver
service: switch.turn_off
target:
entity_id: switch.your_device_name_screensaverservice: text.set_value
target:
entity_id: text.your_device_name_screensaver_url
data:
value: "http://example.com/image.jpg"- Check if screensaver switch is on
- Check if overlay permission is granted
- Check timeout setting
- If using web screensaver, check if URL is correct
- Check network connection
- Check if URL is accessible
- Try using built-in Dawn · Magazine Screensaver
- Try switching render mode
- Check if device has light sensor
- Make sure sensor isn't blocked
- Check permission settings
- Check if Clock Wallpaper URL is a direct image URL
- Check network connection
- Check wallpaper refresh interval
- Try a different image URL
Back to Home
- Quick-Start
- System-Requirements
- Voice-Control
- Chorus-Wake
- ESPHome-Encryption
- HA-Direct-Connection
- Browser
- Screensaver
- Floating-Windows
- Home-Launcher
- Home-Screen-Widgets
- Notification-Scenes
- Quick-Entity
- Sensors
- Backup
- Sendspin
- Bluetooth
- Voice-Messages-Calls
- Music-Playback
- Camera
- Screen-Control
- Intent-Launcher
- ADB-Commands
- Mod-Store
- Ava-Fleet