#!/bin/bash # == USER DEFINED LOGOS == declare -A logo_map=( ["signal"]="/usr/share/icons/hicolor/32x32/apps/signal-desktop.png" ["mattermost"]="/usr/share/icons/hicolor/32x32/apps/mattermost-desktop.png" ) # == CONST == icon_theme="Paper" dunstctl history | jq -cr '.data[0][] | map(.data) | @tsv' | sed 's/\t/|/g' | while IFS="|" read -r body message summary appname category defaut_action_name icon_path id timestamp timeout progress do if [[ $summary == "" || $summary == 'null' ]]; then continue fi # Fix for Brave if [[ $appname == "Brave" ]]; then swap=$(sed 's|]*>||gm' <<< "$body") body=$summary summary=$swap fi output="${id}: ${summary}" if [[ $appname != "" && $appname != 'null' ]]; then output="${output} (${appname})" if [[ $icon_path == "" || $icon_path == 'null' ]]; then lc_appname=$(echo "$appname" | tr '[:upper:]' '[:lower:]') if [[ $icon_path == "" ]] || [ ! -f $icon_path ]; then icon_path="${logo_map[$lc_appname]}" fi if [[ $icon_path == "" ]] || [ ! -f $icon_path ]; then icon_path="/usr/share/icons/${icon_theme}/32x32/apps/${lc_appname}.png" fi fi fi if [[ $body != "" && $body != 'null' ]]; then output="${output}\n${body}" fi if [[ $icon_path != "" && $icon_path != 'null' ]]; then output="${output}\0icon\x1f${icon_path}" fi echo -en "${output}|" done exit 0