Recherche de site Web

Ouvrir automatiquement une application de musique lors de la connexion Bluetooth sous Linux


Cherchez-vous un moyen de lancer automatiquement votre lecteur de musique préféré lorsque vous connectez un appareil Bluetooth (par ex. casque ou enceinte) à votre système Linux ? Ce guide vous montrera comment configurer une automatisation pour ouvrir automatiquement une application musicale lors de la connexion d'un appareil Bluetooth en utilisant systemd et un script Bash simple. Nous utiliserons Rhythmbox comme lecteur de musique, mais vous pouvez le remplacer par toute autre application.

J'ai testé cette configuration avec mon casque Bluetooth Fingers sur le système de bureau Debian 12 Cinnamon, et cela a parfaitement fonctionné !

Étapes pour ouvrir automatiquement une application musicale lors de la connexion Bluetooth sous Linux

Étape 1 : Trouvez l'adresse MAC de votre appareil Bluetooth

Avant de configurer le script, vous devez trouver l'adresse MAC de votre appareil Bluetooth. Une adresse MAC est un identifiant unique pour votre appareil.

A. Allumez votre appareil Bluetooth

Assurez-vous que votre appareil Bluetooth est allumé et en mode de couplage.

B. Lister les appareils Bluetooth connectés

Ouvrez un terminal et exécutez :

bluetoothctl devices

Cela affichera une liste des appareils Bluetooth ainsi que leurs adresses MAC. Identifiez l'adresse MAC correcte pour votre appareil.

Exemple de sortie :

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

Notez l'adresse MAC (par exemple, 01:B6:ED:14:1F:8F). Vous en aurez besoin dans les étapes suivantes.

Étape 2 : Créez un script pour détecter la connexion Bluetooth

Tout d'abord, créez un script qui vérifie si votre appareil Bluetooth est connecté et lance Rhythmbox s'il n'est pas déjà en cours d'exécution.

Ouvrez un terminal et créez un nouveau fichier :

nano ~/bluetooth-music.sh

Ajoutez le script suivant :

#!/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
  • Remplacez 01:B6:ED:14:1F:8F par l’adresse MAC de votre appareil Bluetooth.
  • Remplacez rhythmbox par la commande de votre application de musique préférée (par exemple, clementine, spotify, vlc).

Enregistrez et quittez le fichier en appuyant sur Ctrl + X, puis Y, puis Entrée.

Exécutez la commande suivante pour rendre le script exécutable :

chmod +x ~/bluetooth-music.sh

Étape 3 : Créer un service systemd pour exécuter le script

Maintenant, nous devons configurer un service systemd pour exécuter le script en arrière-plan.

Créez le fichier de service systemd :

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

Ajoutez la configuration suivante :

[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

Assurez-vous que le chemin vers le fichier bluetooth-music.sh est correct dans la configuration du service. Appuyez sur CTRL+O puis sur CTRL+X pour enregistrer et fermer le fichier.

Exécutez les commandes suivantes pour activer et démarrer le service :

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

Maintenant, lorsque votre appareil Bluetooth se connecte, Rhythmbox s'ouvrira automatiquement !

Un petit problème avec cette approche est que si vous fermez l'application Rhythmbox, le script la redémarrera automatiquement. Cela se produit parce que le script vérifie toutes les quelques secondes si votre appareil Bluetooth est connecté. Si Rhythmbox n'est pas en cours d'exécution, le script le lance à nouveau. Cela peut ne pas vous plaire et vous sembler agaçant.

Pour prévenir ce comportement, suivez l'étape suivante.

Étape 4 : Empêcher Rhythmbox de redémarrer après une fermeture manuelle

Puisque le script continue de rouvrir Rhythmbox, utilisez un fichier indicateur pour indiquer quand vous le fermez manuellement.

Pour ce faire, créez un alias pour fermer manuellement Rhythmbox :

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

Cela crée une commande appelée closemusic qui ferme Rhythmbox et définit un drapeau pour empêcher sa réouverture.

Veuillez noter que nous avons déjà défini le fichier /tmp/bluetooth_music.flag dans notre script que nous avons créé précédemment à l'Étape 2.

Maintenant, le script vérifie la présence du fichier /tmp/bluetooth_music.flag. S'il existe, Rhythmbox ne redémarrera pas.

Recharger le fichier ~/.bash_aliases :

source ~/.bash_aliases

À partir de maintenant, vous pouvez exécuter la commande closemusic au lieu de fermer Rhythmbox normalement :

closemusic

Cela indique au script de ne pas rouvrir Rhythmbox à moins que votre appareil Bluetooth ne se déconnecte et se reconnecte.

Étape 5 : Dépannage

Si Rhythmbox ne se lance pas ou si le service se comporte de manière inattendue, essayez ces étapes :

A. Vérifiez si le script s'exécute manuellement

Exécutez le script pour voir si cela fonctionne :

./bluetooth-music.sh

Si Rhythmbox ne démarre pas, vérifiez si votre appareil Bluetooth est connecté :

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

Assurez-vous que Connected : yes apparaisse dans la sortie.

Exemple de sortie :

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. Vérifier le statut du service systemd

systemctl --user status bluetooth-music.service

Cherchez des erreurs dans le résultat.

C. Vérifiez les journaux pour des erreurs détaillées

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

Si vous voyez Cannot open display, confirmez que DISPLAY=:0 est défini dans le fichier de service.

D. Vérifiez le chemin du script dans la configuration de Systemd

Assurez-vous d'avoir défini le chemin correct du script bluetooth-music.sh dans votre configuration systemd.

E. Redémarrez le service après les modifications

systemctl --user restart bluetooth-music.service

Conclusion

Avec cette configuration, votre lecteur de musique se lancera automatiquement lorsque vous connecterez votre appareil Bluetooth, et vous avez un contrôle total pour l'arrêter lorsque nécessaire. Cette méthode garantit une expérience fluide sur Linux sans redémarrages inutiles.

Si vous avez trouvé ce guide utile, veuillez le partager avec d'autres utilisateurs de Linux !

Image en vedette par LIN LONG de Pixabay.