core/source/logic/channels/libnotify.py

91 lines
1.5 KiB
Python
Raw Normal View History

class implementation_notification_channel_libnotify(interface_notification_channel):
'''
[implementation]
'''
def parameters_schema(self):
return {
"type": "object",
"additionalProperties": False,
"properties": {
"icon": {
"type": "string"
}
},
"required": [
]
}
'''
[implementation]
'''
def normalize_conf_node(self, node):
return dict_merge(
{
"icon": "/usr/local/share/icons/heimdall.png",
},
node
)
'''
[implementation]
'''
2022-11-30 23:14:38 +01:00
def notify(self, parameters, name, data, state, info):
def condition_translate(condition):
return {
enum_condition.unknown: "normal",
enum_condition.ok: "low",
2023-03-04 16:00:35 +01:00
enum_condition.concerning: "normal",
enum_condition.critical: "critical",
}[condition]
parts = []
parts.append(
"notify-send"
)
## app name
parts.append(
string_coin(
"--app-name={{app_name}}",
{
"app_name": "heimdall",
}
)
)
## urgency
parts.append(
string_coin(
"--urgency={{urgency}}",
{
"urgency": condition_translate(state["condition"]),
}
)
)
## icon
if ("icon" not in parameters):
pass
else:
parts.append(
string_coin(
"--icon={{icon}}",
{
"icon": parameters["icon"],
}
)
)
## summary
parts.append(
string_coin(
"{{condition}} | {{title}}",
{
"title": data["title"],
"condition": condition_show(state["condition"]).upper(),
}
)
)
## body
parts.append(_json.dumps(info, ensure_ascii = False))
_subprocess.run(parts)