Поиск по сайту:
Делать то, что доставляет удовольствие, — значит быть свободным (Ф. Вольтер).

Автоматическое открытие музыкального приложения при подключении Bluetooth в Linux

03.02.2025
Автоматическое открытие музыкального приложения при подключении Bluetooth в Linux

Вы ищете способ автоматически запускать ваш любимый музыкальный проигрыватель при подключении Bluetooth-устройства (например, гарнитуры или динамика) к вашей системе Linux? В этой статье вы узнаете, как настроить автоматизацию для автоматического открытия музыкального приложения при подключении Bluetooth-устройства с помощью systemd и простого сценария Bash. Мы будем использовать Rhythmbox в качестве музыкального проигрывателя, но вы можете заменить его любым другим приложением.

Мы протестировали эту настройку с помощью Bluetooth-гарнитуры Fingers в операционной системе Debian 12 Cinnamon, и она отлично работает!

 

Шаги по автоматическому открытию музыкального приложения при подключении по Bluetooth в Linux

Шаг 1: Найдите MAC-адрес вашего устройства Bluetooth

Прежде чем настраивать скрипт, вам нужно найти MAC-адрес вашего устройства Bluetooth. MAC-адрес — это уникальный идентификатор вашего устройства.

 

A. Включите Свое устройство Bluetooth

Убедитесь, что ваше устройство Bluetooth включено и находится в режиме сопряжения.

 

B. Список подключенных устройств Bluetooth

Откройте терминал и запустите:

bluetoothctl devices

 

Откроется список устройств Bluetooth с их MAC-адресами. Определите правильный MAC-адрес для вашего устройства.

 

Пример вывода:

Device 01:B6:ED:14:1F:8F FINGERS FC-SoundStorm

 

Запишите MAC-адрес (например, 01:B6:ED:14:1F:8F). Он понадобится вам на следующих этапах.

 

Шаг 2: Создайте скрипт для обнаружения соединения Bluetooth

Сначала создайте скрипт, который проверяет, подключено ли ваше устройство Bluetooth, и запускает Rhythmbox, если оно ещё не запущено.

Откройте терминал и создайте новый файл:

#!/usr/bin/env bash

# ------------------------------------------------------------------
# Script Name:   bluetooth-music.sh
# Description:   A Bash script to Auto-launch Music Player 
                 on Bluetooth Connect
# Website:       https://gist.github.com/ostechnix
# Version:       1.0
# ------------------------------------------------------------------

DEVICE_MAC="01:B6:ED:14:1F:8F"
APP="rhythmbox"
FLAG_FILE="/tmp/bluetooth_music.flag"

# Check if Bluetooth device is connected
bluetoothctl info "$DEVICE_MAC" | grep -q "Connected: yes"
if [ $? -eq 0 ]; then
    # If Rhythmbox is not running and wasn't manually closed, start it
    if ! pgrep -f "$APP" > /dev/null && [ ! -f "$FLAG_FILE" ]; then
        DISPLAY=:0 "$APP" &
    fi
else
    # Remove flag when Bluetooth disconnects
    rm -f "$FLAG_FILE"
fi

 

  • Замените 01:B6:ED:14:1F:8F MAC-адресом вашего устройства Bluetooth.
  • Замените rhythmbox на команду для предпочитаемого вами музыкального приложения (например, clementinespotifyvlc).
Читать  Что такое файл HEIC

 

Сохраните файл и выйдите из него, нажав Ctrl + X, затем Y, затем Enter.

Выполните следующую команду, чтобы сделать скрипт исполняемым:

chmod +x ~/bluetooth-music.sh

 

Шаг 3: Создайте службу systemd для запуска скрипта

Теперь нам нужно настроить службу systemd для запуска скрипта в фоновом режиме.

Создайте служебный файл systemd:

nano ~/.config/systemd/user/bluetooth-music.service

 

Добавьте следующую конфигурацию:

[Unit]
Description=Auto-launch Music Player on Bluetooth Connect
After=bluetooth.target

[Service]
ExecStart=/bin/bash -c 'while sleep 2; do ~/bluetooth-music.sh; done'
Restart=always
Environment=DISPLAY=:0
Environment=XDG_RUNTIME_DIR=/run/user/%U

[Install]
WantedBy=default.target

 

Убедитесь, что путь к файлу bluetooth-music.sh указан правильно в конфигурации службы. Нажмите CTRL+O и CTRL+X для сохранения и закрытия файла.

Выполните следующие команды, чтобы включить и запустить службу:

systemctl --user daemon-reload
systemctl --user enable bluetooth-music.service
systemctl --user start bluetooth-music.service

 

Теперь, когда ваше устройство Bluetooth подключится, Rhythmbox откроется автоматически!

Небольшая проблема при таком подходе заключается в том, что если вы закроете приложение Rhythmbox, скрипт автоматически перезапустит его. Это происходит потому, что скрипт каждые несколько секунд проверяет, подключено ли ваше устройство Bluetooth. Если Rhythmbox оно не запущено, скрипт запускает его снова. Вам может не понравиться это, и вы посчитаете, что это раздражает.

Чтобы предотвратить такое поведение, выполните следующий шаг.

 

Шаг 4: Предотвратите перезапуск Rhythmbox после ручного закрытия

Поскольку скрипт продолжает открываться, Rhythmbox используйте файл с флагом, чтобы указать, когда вы закрываете его вручную.

Для этого создайте псевдоним для ручного закрытия Rhythmbox:

echo "alias closemusic='touch /tmp/bluetooth_music.flag && pkill rhythmbox'" >> ~/.bash_aliases

 

Читать  Лучшие инструменты для создания и редактирования снимков экрана в Linux

Это создаёт команду под названием closemusic , которая закрывает Rhythmbox и устанавливает флаг, предотвращающий его повторное открытие.

Обратите внимание, что мы уже определили файл /tmp/bluetooth_music.flag в нашем скрипте, который мы создали ранее на шаге 2.

Теперь скрипт проверяет наличие файла /tmp/bluetooth_music.flag. Если он существует, Rhythmbox не перезапустится.

Перезагрузить ~/.bash_aliases файл:

source ~/.bash_aliases

 

С этого момента вы можете использовать команду closemusic вместо обычного закрытия Rhythmbox:

closemusic

 

Это говорит скрипту о том, что не нужно повторно открывать Rhythmbox, если только ваше Bluetooth-устройство не отключится и не подключится снова.

 

Шаг 5: Устранение неполадок

Если Rhythmbox не запускается или работает некорректно, попробуйте выполнить следующие действия:

A. Проверьте, выполняется ли скрипт вручную

Запустите скрипт, чтобы посмотреть, работает ли он:

./bluetooth-music.sh

 

Если Rhythmbox не запускается, проверьте, подключено ли ваше устройство Bluetooth:

bluetoothctl info 01:B6:ED:14:1F:8F

 

Убедитесь, что Connected: yes отображается в выходных данных.

 

Пример вывода:

Device 01:B6:ED:14:1F:8F (public)
	Name: FINGERS FC-SoundStorm
	Alias: FINGERS FC-SoundStorm
	Class: 0x00260404
	Icon: audio-headset
	Paired: yes
	Bonded: yes
	Trusted: yes
	Blocked: no
	Connected: yes
	LegacyPairing: no
	UUID: Headset
[...]

 

B. Проверьте состояние службы systemd

systemctl --user status bluetooth-music.service

 

Ищите ошибки в выходных данных.

 

C. Проверьте журналы на наличие подробных ошибок

journalctl --user -u bluetooth-music.service -n 50 --no-pager

 

Если вы видите Cannot open display, подтвердите, что DISPLAY=:0 установлено в сервисном файле.

Читать  Как включить темный режим в VLC

 

D. Проверьте путь к скрипту в конфигурации Systemd

Убедитесь, что вы указали правильный путь к скрипту bluetooth-music.sh в конфигурации systemd.

 

E. Перезапустите службу после внесения изменений

systemctl --user restart bluetooth-music.service

 

Заключение

При такой настройке ваш музыкальный проигрыватель будет автоматически запускаться при подключении устройства Bluetooth, и вы сможете полностью управлять его работой, останавливая его при необходимости. Этот метод обеспечивает бесперебойную работу в Linux без лишних перезапусков.

Если вы нашли это руководство полезным, пожалуйста, поделитесь им с другими пользователями Linux!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Сегодня Линус Торвальдс объявил о доступности для публичного тестирования первой версии кандидата…

Спасибо!

Теперь редакторы в курсе.