86 lines
2.8 KiB
Bash
86 lines
2.8 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# --- ИКОНКИ (требуется Nerd Font) ---
|
|||
|
|
# Вы можете заменить их на любые другие символы или эмодзи
|
|||
|
|
ICON_PLAY="" # Play
|
|||
|
|
ICON_PAUSE="" # Pause
|
|||
|
|
ICON_NEXT="" # Next
|
|||
|
|
ICON_PREV="" # Previous
|
|||
|
|
ICON_SHUFFLE="" # Shuffle
|
|||
|
|
ICON_REPEAT="" # Repeat
|
|||
|
|
ICON_ARTIST="" # Artist
|
|||
|
|
ICON_TITLE="" # Title (custom icon, could be for music)
|
|||
|
|
|
|||
|
|
# Проверяем, запущен ли Spotify
|
|||
|
|
if ! playerctl -p spotify status &> /dev/null; then
|
|||
|
|
wofi --show dmenu -p "Spotify" <<< " Spotify не запущен"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# --- Получение текущего состояния плеера ---
|
|||
|
|
STATUS=$(playerctl -p spotify status)
|
|||
|
|
SHUFFLE_STATUS=$(playerctl -p spotify shuffle)
|
|||
|
|
LOOP_STATUS=$(playerctl -p spotify loop)
|
|||
|
|
ARTIST=$(playerctl -p spotify metadata artist)
|
|||
|
|
TITLE=$(playerctl -p spotify metadata title)
|
|||
|
|
|
|||
|
|
# --- Формирование пунктов меню ---
|
|||
|
|
|
|||
|
|
# Строка с информацией о треке
|
|||
|
|
INFO="$ICON_ARTIST $ARTIST\n$ICON_TITLE $TITLE"
|
|||
|
|
|
|||
|
|
# Кнопка Play/Pause
|
|||
|
|
if [ "$STATUS" = "Playing" ]; then
|
|||
|
|
PLAY_PAUSE="$ICON_PAUSE Пауза"
|
|||
|
|
else
|
|||
|
|
PLAY_PAUSE="$ICON_PLAY Воспроизвести"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Кнопка Shuffle
|
|||
|
|
if [ "$SHUFFLE_STATUS" = "On" ]; then
|
|||
|
|
SHUFFLE="[Вкл] $ICON_SHUFFLE Перемешать"
|
|||
|
|
else
|
|||
|
|
SHUFFLE="[Выкл] $ICON_SHUFFLE Перемешать"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Кнопка Repeat
|
|||
|
|
if [ "$LOOP_STATUS" = "Track" ]; then
|
|||
|
|
REPEAT="[Трек] $ICON_REPEAT Повтор"
|
|||
|
|
elif [ "$LOOP_STATUS" = "Playlist" ]; then
|
|||
|
|
REPEAT="[Плейлист] $ICON_REPEAT Повтор"
|
|||
|
|
else
|
|||
|
|
REPEAT="[Выкл] $ICON_REPEAT Повтор"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Остальные кнопки
|
|||
|
|
PREV="$ICON_PREV Пред. трек"
|
|||
|
|
NEXT="$ICON_NEXT След. трек"
|
|||
|
|
|
|||
|
|
# --- Отображение меню Wofi ---
|
|||
|
|
|
|||
|
|
# Собираем все опции в одну переменную, разделяя их новой строкой
|
|||
|
|
options="$PLAY_PAUSE\n$PREV\n$NEXT\n$SHUFFLE\n$REPEAT"
|
|||
|
|
|
|||
|
|
# Вызываем Wofi, передавая ему опции и информацию о треке в качестве заголовка
|
|||
|
|
# Используем кастомные файлы конфигурации и стилей
|
|||
|
|
choice=$(echo -e "$options" | wofi --show dmenu -p "$INFO" --conf ~/.config/wofi/spotify/config --style ~/.config/wofi/spotify/style.css)
|
|||
|
|
|
|||
|
|
# --- Обработка выбора пользователя ---
|
|||
|
|
case "$choice" in
|
|||
|
|
"$PLAY_PAUSE")
|
|||
|
|
playerctl -p spotify play-pause
|
|||
|
|
;;
|
|||
|
|
"$PREV")
|
|||
|
|
playerctl -p spotify previous
|
|||
|
|
;;
|
|||
|
|
"$NEXT")
|
|||
|
|
playerctl -p spotify next
|
|||
|
|
;;
|
|||
|
|
"$SHUFFLE")
|
|||
|
|
playerctl -p spotify shuffle Toggle
|
|||
|
|
;;
|
|||
|
|
"$REPEAT")
|
|||
|
|
playerctl -p spotify loop Playlist
|
|||
|
|
;;
|
|||
|
|
esac
|