/* * DWN - Desktop Window Manager * retoor * D-Bus Notification daemon */ #ifndef DWN_NOTIFICATIONS_H #define DWN_NOTIFICATIONS_H #include "dwn.h" #include #include typedef enum { NOTIFY_URGENCY_LOW, NOTIFY_URGENCY_NORMAL, NOTIFY_URGENCY_CRITICAL } NotifyUrgency; typedef struct Notification { uint32_t id; char app_name[64]; char summary[512]; char *body; size_t body_len; char icon[256]; int timeout; NotifyUrgency urgency; long expire_time; Window window; int width; int height; struct Notification *next; } Notification; extern DBusConnection *dbus_conn; bool notifications_init(void); void notifications_cleanup(void); void notifications_process_messages(void); bool notifications_register_service(void); uint32_t notification_show(const char *app_name, const char *summary, const char *body, const char *icon, int timeout); void notification_close(uint32_t id); void notification_close_all(void); Notification *notification_find(uint32_t id); Notification *notification_find_by_window(Window window); void notification_render(Notification *notif); void notifications_render_all(void); void notifications_update(void); void notifications_position(void); void notifications_raise_all(void); DBusHandlerResult notifications_handle_message(DBusConnection *conn, DBusMessage *msg, void *user_data); void notifications_get_server_info(const char **name, const char **vendor, const char **version, const char **spec_version); void notifications_get_capabilities(const char ***caps, int *count); #endif