-
-
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.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.
When the device is idle for a period of time, Ava automatically displays a screensaver. Touch the screen to exit.
Screensaver Types:
- Xiaomi Wallpaper (recommended)
- Web Screensaver
- Image Screensaver
- Simple Clock (floating window, see Floating Windows)
Xiaomi Wallpaper is Ava's built-in beautiful screensaver, mimicking Xiaomi phone's wallpaper style.
┌─────────────────────────────────────┐
│ │
│ 12:34 │
│ │
│ Thursday, January 9, 2026 │
│ │
│ │
│ │
└─────────────────────────────────────┘
| Feature | Chinese Environment | English Environment |
|---|---|---|
| Time | 24-hour format | 24-hour format |
| Date | 2026年1月9日 星期四 | Thursday, January 9, 2026 |
| Poetry | Shown (changes on refresh) | Hidden |
- Go to Settings -> Screensaver
- Turn on Screensaver switch
- Turn on Xiaomi Wallpaper switch
- 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.
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.
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 ModDeviceSupport
When 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 |
| Xiaomi Wallpaper | Screensaver | Use built-in Xiaomi Wallpaper | Off |
| 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 | 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_screensaver
service: 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 Xiaomi Wallpaper
- 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