-
-
Notifications
You must be signed in to change notification settings - Fork 13
Screensaver
The screensaver system displays beautiful content when your device is idle, while protecting the screen.
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.
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
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 |
| 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 | 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 |
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 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