hyprdots/Configs/.local/share/bin/notifications.py
2024-12-10 23:54:56 +01:00

55 lines
1.7 KiB
Python
Executable file

#!/usr/bin/python3
import subprocess
import json
import sys
def get_dunst_history():
result = subprocess.run(['dunstctl', 'history'], stdout=subprocess.PIPE)
history = json.loads(result.stdout.decode('utf-8'))
return history
def format_history(history):
count = len(history['data'][0])
alt = 'none'
tooltip_click = []
tooltip_click.append("󰎟 Notifications")
tooltip_click.append("󰳽 scroll-down:  history pop")
tooltip_click.append("󰳽 click-left:  Enable & Disable DND")
tooltip_click.append("󰳽 click-middle: 󰛌 clear history")
tooltip_click.append("󰳽 click-right: 󱄊 close all")
tooltip = []
if count > 0:
notifications = history['data'][0][:10] # Get the first 10 notifications
for notification in notifications:
body = notification.get('body', {}).get('data', '')
category = notification.get('category', {}).get('data', '')
if category:
alt = category + '-notification'
tooltip.append(f"{body} ({category})\n")
else:
alt = 'notification'
tooltip.append(f"{body}\n")
isDND = subprocess.run(['dunstctl', 'get-pause-level'], stdout=subprocess.PIPE)
isDND = isDND.stdout.decode('utf-8').strip()
if isDND != '0':
alt = "dnd"
formatted_history = {
"text": str(count),
"alt": alt,
"tooltip": '\n '.join(tooltip_click) + '\n\n ' + '\n '.join(tooltip),
"class": alt
}
return formatted_history
def main():
history = get_dunst_history()
formatted_history = format_history(history)
sys.stdout.write(json.dumps(formatted_history) + '\n')
sys.stdout.flush()
if __name__ == "__main__":
main()