Initial commit.
This commit is contained in:
commit
dfec8f2e8a
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
**/__pycache__/
|
47
README.md
Normal file
47
README.md
Normal file
@ -0,0 +1,47 @@
|
||||
favicon
|
||||
=======
|
||||
|
||||
Change the favicon and app icons of your Home Assistant instance
|
||||
|
||||

|
||||
|
||||
# Installation instructions
|
||||
|
||||
- Copy the contents of `custom_components/favicon/` to `<your config dir>/custom_components/favicon/`.
|
||||
|
||||
- Get some icons
|
||||
|
||||
There are some nice ones available [here](https://github.com/home-assistant/home-assistant-assets/tree/master/Alternates), and you can generate favicons from them using an online tool, such as [this one](https://realfavicongenerator.net/).
|
||||
|
||||
- Put your icons in e.g. `<your config dir>/www/favicons/`
|
||||
|
||||
- Add the following to your `configuration.yaml`:
|
||||
|
||||
```yaml
|
||||
favicon:
|
||||
favicon: /local/favicons/favicon.ico
|
||||
apple: /local/favicons/apple-touch-icon-180x180.png
|
||||
32: /local/favicons/favicon-32x32.png
|
||||
512: /local/favicons/android-chrome-512x512.png
|
||||
```
|
||||
|
||||
- Restart Home Assistant
|
||||
|
||||
- Make sure to clear the cache of your browser to get the new icons.
|
||||
|
||||
# Options
|
||||
|
||||
- `favicon` - an .ico file which is displayed in your browser tab or bookmark menu.
|
||||
|
||||
- `apple` - a 180 x 180 px image that will be displayed on your iDevice home screen if you save the link there
|
||||
|
||||
- `<number>` - a `<number>` x `<number>` px image that will be displayed wherever it's needed for non-apple devices.
|
||||
|
||||
You can add as few or as many of those you'd like. It's my understanding that the next smaller size will be used if one is requested which doesn't quite fit the need.
|
||||
|
||||
For reference, Home Assistant includes icons of sizes 192, 384, 512 and 1024 px square by default. Specifying even a single size will override all of those.
|
||||
|
||||

|
||||
|
||||
---
|
||||
<a href="https://www.buymeacoffee.com/uqD6KHCdJ" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/white_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;" ></a>
|
50
custom_components/favicon/__init__.py
Normal file
50
custom_components/favicon/__init__.py
Normal file
@ -0,0 +1,50 @@
|
||||
import logging
|
||||
|
||||
import homeassistant.components.frontend
|
||||
from homeassistant.components.frontend import _frontend_root
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
DOMAIN = "favicon"
|
||||
|
||||
async def async_setup(hass, config):
|
||||
|
||||
favicon = config[DOMAIN].get('favicon')
|
||||
apple = config[DOMAIN].get('apple')
|
||||
|
||||
if favicon or apple:
|
||||
get_template = homeassistant.components.frontend.IndexView.get_template
|
||||
|
||||
def new_get_template(self):
|
||||
tpl = get_template(self)
|
||||
render = tpl.render
|
||||
def new_render(*args, **kwargs):
|
||||
text = render(*args, **kwargs)
|
||||
if favicon:
|
||||
text = text.replace("/static/icons/favicon.ico", favicon)
|
||||
if apple:
|
||||
text = text.replace("/static/icons/favicon-apple-180x180.png", apple)
|
||||
return text
|
||||
tpl.render = new_render
|
||||
return tpl
|
||||
|
||||
homeassistant.components.frontend.IndexView.get_template = new_get_template
|
||||
|
||||
icons = []
|
||||
for size in config[DOMAIN]:
|
||||
if not isinstance(size, int):
|
||||
continue
|
||||
i = config[DOMAIN].get(size)
|
||||
if i:
|
||||
icons.append({
|
||||
"src": i,
|
||||
"sizes": f"{size}x{size}",
|
||||
"type": "image/png",
|
||||
})
|
||||
|
||||
if icons:
|
||||
homeassistant.components.frontend.MANIFEST_JSON["icons"] = icons
|
||||
|
||||
return True
|
||||
|
||||
|
8
custom_components/favicon/manifest.json
Normal file
8
custom_components/favicon/manifest.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"domain": "favicon",
|
||||
"name": "Favicon changer",
|
||||
"documentation": "",
|
||||
"dependencies": ["frontend"],
|
||||
"codeowners": [],
|
||||
"requirements": []
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user