ncmpcpp: Nixify on-song-change.sh

This commit is contained in:
Donovan Glover 2023-06-16 09:55:50 -04:00
parent bbf1b1f030
commit 9841ad09c6
No known key found for this signature in database
GPG Key ID: EA7408A77AE1BE65
2 changed files with 42 additions and 36 deletions

View File

@ -8,11 +8,49 @@ let VARIABLES = import ../../src/variables.nix; in {
musicDirectory = "/home/${VARIABLES.username}/Music";
};
xdg.configFile."mpd/mpd.conf".text = ''
auto_update "yes"
'';
xdg.configFile = {
"mpd/mpd.conf".text = ''
auto_update "yes"
'';
xdg.configFile."ncmpcpp/on-song-change.sh".source = ./on-song-change.sh;
"ncmpcpp/on-song-change.sh" = {
executable = true;
text = /* bash */ ''
#!/usr/bin/env bash
music_dir="$HOME/Music"
fallback_image="$HOME/a.jpg"
main () {
find_cover 2>/dev/null
send 2>/dev/null
}
find_cover () {
ext="$(mpc --format %file% current | sed 's/^.*\.//')"
if [ "$ext" != "flac" ]; then
ffmpeg -y -i "$(mpc --format "$music_dir"/%file% | head -n 1)" \
/tmp/cover.jpg && cover_path="/tmp/cover.jpg" && return
else
# ffmpeg doesn't work for flacs
metaflac --export-picture-to=/tmp/cover.jpg \
"$(mpc --format "$music_dir"/%file% current)" && cover_path="/tmp/cover.jpg" && return
fi
#without embedded images this is used as a fallback
file="$music_dir/$(mpc --format %file% current)"
album="''${file%/*}"
#search for cover image
cover_path=$(find "$album" -maxdepth 1 | grep -m 1 ".*\.\(jpg\|png\|gif\|bmp\)")
}
send () {
notify-send -i "''${cover_path:-$fallback_image}" "Now Playing" "$(mpc current)"
}
main
'';
};
};
programs.ncmpcpp = {
enable = true;

View File

@ -1,32 +0,0 @@
#!/usr/bin/env bash
music_dir="$HOME/Music"
fallback_image="$HOME/a.jpg"
main () {
find_cover 2>/dev/null
send 2>/dev/null
}
find_cover () {
ext="$(mpc --format %file% current | sed 's/^.*\.//')"
if [ "$ext" != "flac" ]; then
ffmpeg -y -i "$(mpc --format "$music_dir"/%file% | head -n 1)" \
/tmp/cover.jpg && cover_path="/tmp/cover.jpg" && return
else
# ffmpeg doesn't work for flacs
metaflac --export-picture-to=/tmp/cover.jpg \
"$(mpc --format "$music_dir"/%file% current)" && cover_path="/tmp/cover.jpg" && return
fi
#without embedded images this is used as a fallback
file="$music_dir/$(mpc --format %file% current)"
album="${file%/*}"
#search for cover image
cover_path=$(find "$album" -maxdepth 1 | grep -m 1 ".*\.\(jpg\|png\|gif\|bmp\)")
}
send () {
notify-send -i "${cover_path:-$fallback_image}" "Now Playing" "$(mpc current)"
}
main