-
-
Notifications
You must be signed in to change notification settings - Fork 13
Browser
The built-in browser lets you display web pages inside Ava, such as Home Assistant dashboards. It supports two render engines: System WebView and GeckoView.
The browser is a full-screen overlay that can display any web content on top of Ava.
Main Uses:
- Display Home Assistant dashboards
- Display custom control panels
- Display information websites
- Kiosk mode for old devices
Ava supports two browser engines:
| Engine | Description | Use Case |
|---|---|---|
| System WebView | Uses Android system WebView | Most devices, lightweight |
| GeckoView | Mozilla Gecko engine pack | Old devices with outdated WebView |
GeckoView provides a modern browser engine for devices with outdated or missing system WebView.
Setup:
- Go to Settings -> Browser
- Select GeckoView as render engine
- Tap to download the engine pack
- When the install dialog appears, tap Install
- Wait for installation to complete
Notes:
- Requires downloading the engine pack (separate APK)
- Supports arm64-v8a and armeabi-v7a
- Can check for engine updates and uninstall from settings
- If the engine pack is not installed, browser falls back to System WebView
| Feature | Description |
|---|---|
| Full Screen | Web page fills entire screen |
| Pull to Refresh | Pull down to refresh page |
| JavaScript | Full JS support |
| Local Storage | LocalStorage supported |
| Page Scale | Initial zoom (0-500, 0=auto) |
| Font Size | Page font size percentage (50-300) |
| Touch / Drag | Toggle touch and drag interaction |
| Feature | Description |
|---|---|
| Render Mode | Hardware/software rendering switch |
| Dark Mode Sync | Sync dark mode with Ava and HA dashboard |
| User Agent | Switch browser identity (Android/Desktop/macOS/iOS) |
| Tampermonkey | Userscript support |
| Browser Sidebar | Slide-out menu on the edge |
| Gesture Navigation | Swipe from left edge to go back, swipe left to go forward |
| Browser Commands | Remote control via Home Assistant |
| Sync URL | Sync current browser URL back to HA |
| Clear Cache | Clear browser cache, cookies, and history |
| Scale Slider Entity | Expose a bidirectional scale slider in HA |
Go to Settings -> Browser
| Setting | Description | Default |
|---|---|---|
| Render engine | System WebView or GeckoView | System WebView |
| Pull to Refresh | Allow pull-down to refresh | On |
| Page Scale | Initial zoom (0=auto) | 0 |
| Font Size | Page font size percentage | 100 |
| Touch Enabled | Allow touch interaction | On |
| Drag Enabled | Allow drag operations | On |
| Render Mode | Hardware/software rendering | Hardware |
| Follow Dark Mode | Sync dark mode with app and HA | Off |
| User Agent | Browser identity | Default (Android) |
| Tampermonkey | Enable userscript support | Off |
| Browser Sidebar | Slide-out menu on the edge | Off |
| Gesture Navigation | Swipe to navigate back/forward | Off |
| Settings Button | Show gear icon in bottom right | Off |
| Back Key Hide | Press back key to hide browser | On |
| Sync Current URL | Sync browser URL to HA entity | Off |
| Advanced Control | Enable remote browser commands | Off |
| Scale Slider Entity | Expose scale slider in HA | Off |
| Mode | Description | Use Case |
|---|---|---|
| Hardware | Uses GPU, better performance | Most devices |
| Software | Uses CPU, better compatibility | Old devices or rendering issues |
| Option | Description |
|---|---|
| Default (Android) | Standard Android browser |
| Desktop (Windows) | Pretend to be Windows desktop |
| macOS (Safari) | Pretend to be macOS Safari |
| iOS (iPhone) | Pretend to be iPhone Safari |
Ava includes a lightweight userscript manager based on the Android-WebMonkey project.
- GM_getValue / GM_setValue
- GM_addStyle
- GM_xmlhttpRequest
- GM_cookie
- GM_notification
- GM_download
- GM_webRequest
- unsafeWindow
- Go to Settings -> Browser -> Tampermonkey
- Enable Tampermonkey
- Tap Add Script to install userscripts
- Manage installed scripts from the same page
A slide-out menu on the edge of the browser overlay for quick access to features.
- Go to Settings -> Browser -> Browser Sidebar
- Enable sidebar
- Choose position (left or right edge)
Create a dedicated dashboard view for Ava:
# configuration.yaml
lovelace:
mode: yaml
dashboards:
ava-dashboard:
mode: yaml
filename: ava_dashboard.yaml
title: Ava
icon: mdi:tablet
show_in_sidebar: falseUse custom CSS to hide HA sidebar and header:
ha-sidebar { display: none !important; }
.header { display: none !important; }
home-assistant { --app-drawer-width: 0px; }After enabling Advanced Control, you can remotely control the browser via Home Assistant services.
action: esphome.xxx_webview_command
data:
command: 'your command'| Command | Format | Description |
|---|---|---|
| Reload page | {"reload": true} |
Reload current page |
| Clear cache | {"clearCache": true} |
Clear browser cache |
| Set brightness | {"brightness": 128} |
Set screen brightness (0-255) |
| Set volume | {"volume": 50} |
Set volume (0-100) |
| Execute JS | {"eval": "alert('hello')"} |
Execute JavaScript code |
| Clear injected | {"eval": ""} |
Clear injected effects |
service: text.set_value
target:
entity_id: text.your_device_name_ha_remote_url
data:
value: "http://your-ha-address:8123/lovelace/0"service: text.set_value
target:
entity_id: text.your_device_name_ha_remote_url
data:
value: ""# Show browser
service: switch.turn_on
target:
entity_id: switch.your_device_name_browser_display
# Hide browser
service: switch.turn_off
target:
entity_id: switch.your_device_name_browser_displayYou can use AI tools to generate custom animation effects (cherry blossoms, snow, stars, etc.) and inject them via the eval command.
service: text.set_value
target:
entity_id: text.your_device_name_browser_command
data:
value: '{"eval": "!function(d,b,c,s){d=document,b=d.body,c=d.createElement(\"div\"),s=d.createElement(\"style\"),c.style.cssText=\"position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;overflow:hidden;pointer-events:none\",s.textContent=\".s{position:absolute;top:-10%;background:linear-gradient(135deg,#fff 20%,#ffb7c5 100%);border-radius:100% 0 120% 0;box-shadow:1px 1px 2px rgba(0,0,0,.1);animation:f linear infinite,w ease-in-out infinite alternate}@keyframes f{0%{opacity:0;transform:translateY(0) rotateX(0) rotateZ(0)}20%{opacity:1}100%{opacity:0;transform:translateY(110vh) rotateX(360deg) rotateZ(720deg)}}@keyframes w{0%{margin-left:-50px}100%{margin-left:50px}}\",d.head.appendChild(s),b.appendChild(c),setInterval(function(p,w,t){p=d.createElement(\"div\"),w=Math.random()*20+8,t=Math.random()*10+6,p.className=\"s\",p.style.cssText=\"left:\"+Math.random()*100+\"%%;width:\"+w+\"px;height:\"+w*1.4+\"px;animation-duration:\"+t+\"s,\"+(Math.random()*4+3)+\"s;animation-delay:-\"+Math.random()*8+\"s\",c.appendChild(p),setTimeout(function(){c.removeChild(p)},t*1e3)},100)}()"}'service: text.set_value
target:
entity_id: text.your_device_name_browser_command
data:
value: '{"eval": ""}'- Check if URL is correct
- Check network connection
- Try switching render mode (hardware/software)
- Try switching to GeckoView engine
- Check if HA is accessible
- Check network speed
- Simplify dashboard content
- Reduce animation effects
- Try GeckoView engine on old devices
- Check if Touch Enabled is on
- Check overlay permission
- Try restarting service
- Check if other overlays are blocking
- This may be a WebView issue on certain devices
- Try switching to GeckoView engine
- Check if the system WebView is up to date
- Enable Follow Dark Mode in Settings -> Web Browser
- Check if Ava dark mode is enabled
- Check if HA dashboard supports dark mode
- Check device architecture (arm64-v8a or armeabi-v7a required)
- Check network connection
- Ensure overlay permission is granted for the engine pack
- Try again later if download fails
Back to Home