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 devicesCela 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-SoundStormNotez 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.shAjoutez 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:8Fpar l’adresse MAC de votre appareil Bluetooth. - Remplacez
rhythmboxpar 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.serviceAjoutez 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.targetAssurez-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.serviceMaintenant, 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_aliasesCela 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 :
closemusicCela 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.shSi Rhythmbox ne démarre pas, vérifiez si votre appareil Bluetooth est connecté :
bluetoothctl info 01:B6:ED:14:1F:8FAssurez-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.serviceCherchez 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-pagerSi 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.serviceConclusion
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.