91 lines
1.5 KiB
Python
91 lines
1.5 KiB
Python
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]
|
|
'''
|
|
def notify(self, parameters, name, data, state, info):
|
|
def condition_translate(condition):
|
|
return {
|
|
enum_condition.unknown: "normal",
|
|
enum_condition.ok: "low",
|
|
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)
|
|
|