diff --git a/modules/home-manager/audio/cmus/files/notify.sh b/modules/home-manager/audio/cmus/files/notify.sh index f22f261..afc5b1d 100755 --- a/modules/home-manager/audio/cmus/files/notify.sh +++ b/modules/home-manager/audio/cmus/files/notify.sh @@ -3,73 +3,73 @@ NOTIFICATION_PROGRAM='mako' process_args() { - while [ "$#" -ge 2 ]; do - printf -v "$1" "%s" "$2" - shift - shift - done + while [ "$#" -ge 2 ]; do + printf -v "$1" "%s" "$2" + shift + shift + done } escape() { - local string - string=$1 - string=${string//"<"/"<"} - string=${string//">"/">"} - string=${string//"&"/"&"} - printf "%s" "$string" + local string + string=$1 + string=${string//"&"/"&"} + string=${string//"<"/"<"} + string=${string//">"/">"} + printf "%s" "$string" } # Just quit this application if our notification program does not exist # With this notification will not be displayed on my work laptop. Avoid # notification pollution! check_notification_program() { - if ! command -v "$NOTIFICATION_PROGRAM"; then - exit 0 - fi + if ! command -v "$NOTIFICATION_PROGRAM"; then + exit 0 + fi } main() { - options=(--app-name=cmus --transient -u low) - filename=${file##*/} - path=${file%/*} + options=(--app-name=cmus --transient -u low) + filename=${file##*/} + path=${file%/*} - if [[ -f "${path}/cover.png" ]]; then - options+=(-i "${path}/cover.png") + if [[ -f "${path}/cover.png" ]]; then + options+=(-i "${path}/cover.png") + fi + + if [[ -f "${path}/cover.jpg" ]]; then + options+=(-i "${path}/cover.jpg") + fi + + ## Get title or filename + title=${title:-$filename} + if [[ ${#title} -gt 25 ]]; then + title="${title:0:24}…" + fi + title="$(escape "$title")" + + if [ -n "$artist" ]; then + if [[ ${#artist} -gt 22 ]]; then + artist="${artist:0:21}…" fi + printf -v l_artist "by %s" "$(escape "$artist")" + fi - if [[ -f "${path}/cover.jpg" ]]; then - options+=(-i "${path}/cover.jpg") + if [ -n "$date" ]; then + date="${date%%-*}" + fi + + # Get Album + if [ -n "$album" ]; then + if [[ ${#album} -gt 19 ]]; then + album="${album:0:19}…" fi + printf -v l_album "on %-20s %s" "$(escape "$album")" "${date:-}" + fi - ## Get title or filename - title=${title:-$filename} - if [[ ${#title} -gt 25 ]]; then - title="${title:0:24}…" - fi - title="$title" - - if [ -n "$artist" ]; then - if [[ ${#artist} -gt 22 ]]; then - artist="${artist:0:21}…" - fi - printf -v l_artist "by %s" "$(escape "$artist")" - fi - - if [ -n "$date" ]; then - date="${date%%-*}" - fi - - # Get Album - if [ -n "$album" ]; then - if [[ ${#album} -gt 19 ]]; then - album="${album:0:19}…" - fi - printf -v l_album "on %-20s %s" "$(escape "$album")" "${date:-}" - fi - - printf -v l_intro "cmus:%s" "$(escape "$status")" - printf -v body "%s\n" "${l_intro:-}" "${title:-}" "${l_artist:-}" "${l_album:-}" - notify-send "${options[@]}" "useless" "$body" + printf -v l_intro "cmus:%s" "$(escape "$status")" + printf -v body "%s\n" "${l_intro:-}" "${title:-}" "${l_artist:-}" "${l_album:-}" + notify-send "${options[@]}" "useless" "$body" } check_notification_program