Я установил playerctl
для этой задачи (и для управления Spotify с помощью клавиш dwm, например META+F8(toggle play )).
Затем его можно использовать, например, так:
status=$(playerctl -p spotify status)
artist=$(playerctl -p spotify metadata artist)
album=$(playerctl -p spotify metadata album)
title=$(playerctl -p spotify metadata title)
length=$(playerctl -p spotify metadata mpris:length | sed 's/.\{6\}$//')
if [[ "$status" == "Playing" ]] ; then status="▶" ; else status="◼" ; fi
echo "$artist/$album/$title [$status] ${length}s"
Однако
$length
немного интереснее. Обычное значение (, извлеченное из metadata
), равно:
'mpris:length': ,
Я обнаружил, что последние 6 символов (093000 )не важны (? ), а остальные — продолжительность песни в секундах, отсюда и sed
. Вы также можете изменить это в minutes:seconds
, используя этот код здесь . Я протестировал его с некоторыми образцами песен (, а также с более длинными ), и он работает.
К сожалению, я не нашел подходящего источника для своих предположений или оставшихся символов..
amule
работает на переднем плане. Ваш скрипт никогда не доберется до sleep 240
. Запустите amule
в фоновом режиме, чтобы скрипт мог продолжить работу.
#!/bin/sh
while :; do
amule & # run in background
sleep 240
killall amule
# or wmctrl -c aMule
wait # in case amule needs time to close
done
Вы можете попробовать заменить wmctrl -c aMule;
на killlall amule
или pkill amule
, в зависимости от того, какой из killall
или pkill
у вас установлен. Вам может понадобиться добавить опцию -KILL
перед amule
, если amule игнорирует сигнал TERM.