The following works:
# play file1 and then file 2:
mpv "file1" "file 2"
# use fzf to select a file and play that file:
mpv "$(fdfind . /path/to/Music | fzf)"
Now fzf -m
allows for multi-select. However the following doesn't work:
mpv "$(fdfind . /path/to/Music | fzf -m)" #select at least 2 files here
At first I thought the problem is that fzf -m
returns the selections separated by newline, such as:
file1
file 2
So I tried some sed
/ awk
stuff:
fdfind . /path/to/Music | fzf -m |
sed 's/^/"/;s/$/"/' | #double quotes every line
awk 1 ORS=' ' | #replace newline with ' '
head -c -1 | #delete the last ' '
To format it as:
"file1" "file 2"
This also doesn't work. So I also tried kdialog
with the following:
mpv "$(kdialog --getopenfilename --multiple /path/to/Music/)" #select at least 2 files here
And it doesn't work. However the kdialog-open-files.lua user-script works fine for me!
I think I am making a mistake in how I am passing the arguments to mpv
, as the following (obviously) works:
mpv "$(fdfind . /path/to/Music | fzf)" "$(fdfind . /path/to/Music | fzf)"
Found it from this stack-overflow post:
fdfind . Music/ | fzf -m | xargs -d "\n" mpv
You can also pass command line arguments to mpv
this way:
fdfind . Music/ | fzf -m | xargs -d "\n" mpv --volume=50 --loop-playlist=inf
etc.