#!/usr/bin/bash

DBUS_CMD="dbus-send --session --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications"

dismiss() {
    $DBUS_CMD org.freedesktop.Notifications.DismissPopup uint32:$1
}

close() {
    $DBUS_CMD org.freedesktop.Notifications.CloseNotification uint32:$1
}

action() {
    $DBUS_CMD org.freedesktop.Notifications.InvokeAction uint32:$1 string:$2
}

get_current() {
    $DBUS_CMD org.freedesktop.Notifications.GetCurrent
}

clear_all() {
    $DBUS_CMD org.freedesktop.Notifications.ClearAll
}

listen() {
    $DBUS_CMD org.freedesktop.Notifications.Listen
}

toggle_dnd() {
    $DBUS_CMD org.freedesktop.Notifications.ToggleDND
}

case "$1" in
--dismiss)
    dismiss "$2"
    ;;
--close)
    close "$2"
    ;;
--action)
    action "$2" "$3"
    ;;
--current)
    get_current
    ;;
--clear)
    clear_all
    ;;
--listen)
    listen
    ;;
--toggle)
    toggle_dnd
    ;;
*)
    echo "Usage: $0 {--dismiss|--close|--action|--clear|--listen|--toggle} [args]"
    exit 1
    ;;
esac
