mnuc 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/env bash
  2. # Script intended to be executed from ncmpcpp (execute_on_song_change
  3. # preference) running from urxvt to set album cover as background image
  4. MPD_CONF=~/.config/mpd/mpd.conf
  5. MUSIC_DIR=$(cat "$MPD_CONF" | grep -v '#' | grep 'music_directory' | cut -d ' ' -f2 | awk '{print $2}' | sed 's/"//g')
  6. DARKEN=70
  7. TMP=/tmp
  8. COVER=/tmp/cover.jpg
  9. IMG_REG=".*/.*\(Front\|front\|Cover\|cover\|Art\|art\|Folder\|folder\).*[.]\(jpe?g\|png\|gif\|bmp\)"
  10. function reset_background() {
  11. # is there any better way?
  12. printf "\e]20;;100x100+1000+1000\a"
  13. }
  14. {
  15. album="$(mpc --format %album% current)"
  16. artist="$(mpc --format %artist% current)"
  17. file="$(mpc --format %file% current)"
  18. dir="$MUSIC_DIR/$artist/$album"
  19. if [[ -d "$dir" ]]; then
  20. album_dir="$dir"
  21. else
  22. album_dir="$MUSIC_DIR/${file%/*}"
  23. fi
  24. [[ -z "$album_dir" ]] && exit 1
  25. covers="$(find "$album_dir/" -type d -exec find {} -maxdepth 1 -type f -regex "$IMG_REG" \;)"
  26. src="$(echo -n "$covers" | head -n1)"
  27. darkenimg="$TMP/darken.jpg"
  28. rm -f "$COVER" "$darkenimg"
  29. if [[ -n "$src" ]]; then
  30. light="$((100 - $DARKEN))"
  31. convert "$src" -fill "gray${light}" +level ${light}%,${light}% \
  32. +matte "$darkenimg"
  33. composite "$darkenimg" -compose Multiply "$src" "$COVER"
  34. if [[ -f "$COVER" ]]; then
  35. printf "\e]20;${COVER};100x100+50+50:op=keep-aspect\a"
  36. else
  37. reset_background
  38. fi
  39. else
  40. reset_background
  41. fi
  42. } &