Put Home Asstisant in your top bar! An Argos/Kargos/Xbar/SwiftBar script.
Gnome/Argos:
None of the existing top bar clients were suitable for me, so I wrote this one.
Name | Platforms | Features | Configuration |
---|---|---|---|
ha-argos | Linux (Gnome, Kde), |
Lot | yaml file |
ha-menu | Mac, Windows | Lot | json file |
Home Assistant Extension | Linux (Gnome) | Limited | Gui |
- Install Argos, Kargos or Xbar
- Clone the repo or download as zip
- Install python and dependencies
- Make sure
ha-argos.py
andha-service.py
are executable - Symlink
ha-argos.py
to the config dir - Set up configuration.yaml
After installing Argos or Kargos:
sudo apt install python3 python3-pip
git clone https://github.com/infeeeee/ha-argos
cd ha-argos
pip install -r requirements.txt
chmod +x ha-argos.py ha-service.py
ln -s `readlink -f .`/ha-argos.py ~/.config/argos/
cp configuration.yaml.example configuration.yaml
After installing Argos or Kargos:
pacman -S python python-yaml python-requests python-lxml python-cairosvg
git clone https://github.com/infeeeee/ha-argos
cd ha-argos
chmod +x ha-argos.py ha-service.py
ln -s `readlink -f .`/ha-argos.py ~/.config/argos/
cp configuration.yaml.example configuration.yaml
After installing xbar or swiftbar and homebrew
brew install git py3cairo
git clone https://github.com/infeeeee/ha-argos
cd ha-argos
$(brew --prefix)/opt/python/libexec/bin/pip install -r requirements.txt
chmod +x ha-argos.py ha-service.py
# With swiftbar use your manually set folder instead:
ln -s $PWD/ha-argos.py "$HOME/Library/Application Support/xbar/plugins/"
cp configuration.yaml.example configuration.yaml
Everything is set up in the configuration.yaml
. Just place it next to the script. you can start from configuration.yaml.example
, just copy and edit it.
The variable names are based on Home Assistant's Lovelace yaml config.
To reload the changed config use the reload button.
settings:
url: https://myserver.url
token: my-secret-token
lines:
- entity: sensor.livingroom_temperature
attribute:
- state
- unit_of_measurement
icon: mdi:home-assistant
- separator
- entity: light.livingroom
service: light.toggle
data:
brightness: 255
- name: Garage
icon: mdi:garage
entities:
- entity: cover.garage
service: cover.open_cover
name: Open garage door
- entity: cover.garage
service: cover.close_cover
name: Close garage door
settings:
url: https://myserver.url
token: my-secret-token
icon_color: ffffff
icon_size: 22
url
: [required] The full url of your Home Assistace instance. Include http(s) at the beginning and port umber at the end.
token
: [required] Your long-lived access token. You can generate this on your profile. Official help.
Create token on your instance:
icon_color
: [optional] [Argos only] The color of the icon. Defaults to black. Add an RGB hex code, without the #
sign
icon_size
: [optional] [Argos only] The width of the image in pixels, it's the imageWidth
Argos parameter: Argos help
In this section just put the lines on the same order as they will show up on the dropdown. Possible lines:
separator
entity
entities
A separator between lines. One separator is required: entity
lines above the first separator display on the bar. If multiple entity
lines are above the first separator
they will cycle, and each will be displayed for 3 seconds.
After the first separator
latter ones will display as a horizontal line.
lines:
- entity: sensor.livingroom_temperature
attribute:
- state
- unit_of_measurement
icon: mdi:home-assistant
# Another example:
- entity: light.livingroom
service: light.toggle
icon: mdi:ceiling-light
name: Livingroom ceiling light
data:
brightness: 255
color_temp: 423
# Example to show what's playing on a media player:
- entity: media_player.mpd
attribute_separator: ' - '
attribute:
- media_artist
- media_title
entity
: [required] A entity id from Home Assistant. If the service
is a Home Assistant script, it can be omitted.
name
: [optional] The name how it should appear. If omitted, it will display the attribute selected. If attribute omitted, it will display the friendly_name
attribute of the entity.
attribute
: [optional] An attribute or a list of attributes to get from Home Assistant.
service
: [optional] A service to run when this line is clicked.
data
: [optional] Data for the service
prefix
: [optional] Some text before any other data. Useful to write something about sensors.
attribute_separator
: [optional] Use this character between multiple attributes. Defaults to a
space character.
icon:
[optional] An icon for that line. It depends on the prefix of this line, where it will get the icon:
gtk:
[argos only] A gtk icon will be displayed. See possible values on freedesktop.org icon naming specificationmdi:
Material Design Icon, as on Home Assistant ui- Without prefix a base64 encoded image can be added
A dropdown list of other entities.
lines:
- name: A list of entities
icon: gtk:view-list
entities:
- entity: sensor.mysensor
attribute:
- entity: light.livingroom
service: light.toggle
entities
: [required] A list of entities. Separator is also possible. All options available for them as normal entity
lines.
name
: [optional] The title of the dropdown.
icon
: [optional] Same as for entity
lines
Open an issue if something isn't working!
The script is an executable, so if you just simply run it in the terminal you should see some sane output. You can check the exact error message, while it's hidden on the gui. It's also possible to hide the long base64 image strings with the argument --noimage
, so it's easier to read the code:
cd ha-argos
./ha-argos.py --noimage
--noimage
: Do not add images
--nocache
: Do not cache images
The script caches the icons and friendly_name
s of the entities to a cache.json
file. If some icons or names are not updating, just simply delete this file, it will be recreated during next call to Home Assistant.
MIT