Musik-App automatisch beim Verbinden von Bluetooth in Linux öffnen
Suchen Sie nach einer Möglichkeit, Ihren bevorzugten Musikplayer automatisch zu starten, wenn Sie ein Bluetooth-Gerät (z. B. Headset oder Lautsprecher) an Ihr Linux-System anschließen? Dieser Leitfaden zeigt Ihnen, wie Sie eine Automatisierung einrichten, um eine Musik-App automatisch zu öffnen, wenn ein Bluetooth-Gerät verbunden wird, mithilfe von systemd und einem einfachen Bash-Skript. Wir verwenden Rhythmbox als Musikplayer, aber Sie können ihn durch jede andere App ersetzen.
Ich habe dieses Setup mit meinem Fingers Bluetooth-Headset auf einem Debian 12 Cinnamon-Desktop-System getestet, und es hat perfekt funktioniert!
Schritte zum automatischen Öffnen einer Musik-App bei Bluetooth-Verbindung in Linux
Schritt 1: Finden Sie die MAC-Adresse Ihres Bluetooth-Geräts
Bevor Sie das Skript einrichten, müssen Sie die MAC-Adresse Ihres Bluetooth-Geräts finden. Eine MAC-Adresse ist ein eindeutiger Identifikator für Ihr Gerät.
A. Schalten Sie Ihr Bluetooth-Gerät ein
Stellen Sie sicher, dass Ihr Bluetooth-Gerät eingeschaltet und im Kopplungsmodus ist.
B. Aufgelistete verbundene Bluetooth-Geräte
Öffnen Sie ein Terminal und führen Sie aus:
bluetoothctl devices
Dies zeigt eine Liste von Bluetooth-Geräten zusammen mit ihren MAC-Adressen. Identifizieren Sie die richtige MAC-Adresse für Ihr Gerät.
Beispielausgabe:
Device 01:B6:ED:14:1F:8F FINGERS FC-SoundStormNotieren Sie die MAC-Adresse (z. B. 01:B6:ED:14:1F:8F). Sie werden diese in den nächsten Schritten benötigen.
Schritt 2: Ein Skript erstellen, um die Bluetooth-Verbindung zu erkennen
Erstellen Sie zunächst ein Skript, das überprüft, ob Ihr Bluetooth-Gerät verbunden ist, und Rhythmbox startet, falls es noch nicht läuft.
Öffnen Sie ein Terminal und erstellen Sie eine neue Datei:
nano ~/bluetooth-music.shFügen Sie das folgende Skript hinzu:
#!/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- Ersetzen Sie
01:B6:ED:14:1F:8Fdurch die MAC-Adresse Ihres Bluetooth-Geräts. - Ersetzen Sie
rhythmboxdurch den Befehl für Ihre bevorzugte Musik-App (z. B.clementine,spotify,vlc).
Speichern Sie die Datei und beenden Sie sie, indem Sie Ctrl + X, dann Y und dann Enter drücken.
Führen Sie den folgenden Befehl aus, um das Skript ausführbar zu machen:
chmod +x ~/bluetooth-music.shSchritt 3: Erstellen Sie einen systemd-Dienst, um das Skript auszuführen
Jetzt müssen wir einen systemd-Dienst einrichten, um das Skript im Hintergrund auszuführen.
Erstellen Sie die systemd-Dienstdatei:
nano ~/.config/systemd/user/bluetooth-music.service
Fügen Sie die folgende Konfiguration hinzu:
[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.targetStellen Sie sicher, dass der Pfad zur Datei bluetooth-music.sh in der Service-Konfiguration korrekt ist. Drücken Sie CTRL+O und CTRL+X, um die Datei zu speichern und zu schließen.
Führen Sie die folgenden Befehle aus, um den Dienst zu aktivieren und zu starten:
systemctl --user daemon-reload
systemctl --user enable bluetooth-music.service
systemctl --user start bluetooth-music.serviceNun wird Rhythmbox automatisch geöffnet, wenn Ihr Bluetooth-Gerät sich verbindet!
Ein kleines Problem mit diesem Ansatz ist, dass das Skript die Rhythmbox-Anwendung automatisch neu startet, wenn Sie sie schließen. Dies geschieht, weil das Skript alle paar Sekunden prüft, ob Ihr Bluetooth-Gerät verbunden ist. Wenn Rhythmbox nicht läuft, startet das Skript es erneut. Ihnen könnte dies unangenehm sein und störend erscheinen.
Um dieses Verhalten zu verhindern, führen Sie den folgenden Schritt aus.
Schritt 4: Verhindern, dass Rhythmbox nach manuellem Schließen neu startet
Da das Skript Rhythmbox immer wieder neu öffnet, verwenden Sie eine Flag-Datei, um anzuzeigen, wann Sie es manuell schließen.
Um dies zu tun, erstellen Sie ein Alias, um Rhythmbox manuell zu schließen:
echo "alias closemusic='touch /tmp/bluetooth_music.flag && pkill rhythmbox'" >> ~/.bash_aliasesDies erstellt einen Befehl namens closemusic, der Rhythmbox schließt und eine Markierung setzt, um zu verhindern, dass es wieder geöffnet wird.
Bitte beachten Sie, dass wir die Datei /tmp/bluetooth_music.flag bereits in unserem Skript definiert haben, das wir zuvor in Schritt 2 erstellt haben.
Jetzt überprüft das Skript die Datei /tmp/bluetooth_music.flag. Wenn sie existiert, wird Rhythmbox nicht neu gestartet.
Lade die Datei ~/.bash_aliases neu:
source ~/.bash_aliasesAb sofort können Sie den Befehl closemusic ausführen, anstatt Rhythmbox normal zu schließen:
closemusicDies sagt dem Skript, Rhythmbox nicht erneut zu öffnen, es sei denn, Ihr Bluetooth-Gerät trennt die Verbindung und verbindet sich erneut.
Schritt 5: Fehlerbehebung
Wenn Rhythmbox nicht startet oder der Dienst sich unerwartet verhält, versuchen Sie diese Schritte:
A. Überprüfen Sie, ob das Skript manuell ausgeführt wird
Führen Sie das Skript aus, um zu sehen, ob es funktioniert:
./bluetooth-music.shWenn Rhythmbox nicht startet, überprüfen Sie, ob Ihr Bluetooth-Gerät verbunden ist:
bluetoothctl info 01:B6:ED:14:1F:8FStellen Sie sicher, dass Connected: yes in der Ausgabe erscheint.
Beispielausgabe:
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. Überprüfen Sie den Systemd-Dienststatus
systemctl --user status bluetooth-music.serviceSuche nach Fehlern im Output.
C. Überprüfen Sie die Protokolle auf detaillierte Fehler
journalctl --user -u bluetooth-music.service -n 50 --no-pagerWenn Sie Cannot open display sehen, bestätigen Sie, dass DISPLAY=:0 in der Service-Datei gesetzt ist.
D. Überprüfen Sie den Pfad des Skripts in der Systemd-Konfiguration
Stellen Sie sicher, dass Sie den korrekten Pfad des Skripts bluetooth-music.sh in Ihrer systemd-Konfiguration definiert haben.
E. Starten Sie den Dienst nach Änderungen neu
systemctl --user restart bluetooth-music.serviceFazit
Mit dieser Einrichtung wird Ihr Musikplayer automatisch gestartet, wenn Sie Ihr Bluetooth-Gerät verbinden, und Sie haben die volle Kontrolle, ihn bei Bedarf zu stoppen. Diese Methode sorgt für ein reibungsloses Erlebnis unter Linux ohne unnötige Neustarts.
Wenn Sie diesen Leitfaden hilfreich fanden, teilen Sie ihn bitte mit anderen Linux-Benutzern!
Ausgewähltes Bild von LIN LONG von Pixabay.