Uygulama

Linux’ta Bluetooth’u Bağlarken Bir Müzik Uygulamasını Otomatik Olarak Açın

Linux sisteminize bir Bluetooth cihazı (Örneğin Kulaklık veya Hoparlör) bağladığınızda en sevdiğiniz müzik çaları otomatik olarak başlatmanın bir yolunu mu arıyorsunuz? Bu kılavuz, systemd ve basit bir Bash komut dosyası kullanarak bir Bluetooth cihazını bağlarken bir Müzik uygulamasını otomatik olarak açmak için bir otomasyonun nasıl kurulacağını gösterecektir. Müzik çalar olarak Rhythmbox’ı kullanacağız, ancak bunu başka herhangi bir uygulamayla değiştirebilirsiniz.

Bu kurulum Debian 12  masaüstü sisteminde  Bluetooth kulaklıkla test edildi ve mükemmel çalıştı!

Linux’ta Bluetooth Bağlantısında Bir Müzik Uygulamasını Otomatik Olarak Açma Adımları

Adım 1: Bluetooth Cihazınızın MAC Adresini Bulun

Komut dosyasını kurmadan önce Bluetooth cihazınızın MAC adresini bulmanız gerekir. MAC adresi, cihazınız için benzersiz bir tanımlayıcıdır.

A. Bluetooth Cihazınızı Açın

Bluetooth cihazınızın açık ve eşleştirme modunda olduğundan emin olun.

B. Bağlı Bluetooth Cihazlarını Listeleyin

Bir terminal açın ve çalıştırın:

bluetoothctl devices

Bu, MAC adresleriyle birlikte Bluetooth cihazlarının bir listesini gösterecektir. Cihazınız için doğru MAC adresini belirleyin.

Örnek Çıktı:

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

MAC adresini not edin (örneğin, 01:B6:ED:14:1F:8F). Sonraki adımlarda buna ihtiyacınız olacak.

Adım 2: Bluetooth Bağlantısını Algılamak için Bir Komut Dosyası Oluşturun

Öncelikle, Bluetooth cihazınızın bağlı olup olmadığını kontrol eden ve henüz çalışmıyorsa Rhythmbox’ı başlatan bir komut dosyası oluşturun.

Bir terminal açın ve yeni bir dosya oluşturun:

nano ~/bluetooth-music.sh

Aşağıdaki komut dosyasını ekleyin:

#!/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’yi Bluetooth cihazınızın MAC adresiyle değiştirin.
  • Rhythmbox’ı tercih ettiğiniz müzik uygulamasının komutuyla değiştirin (örneğin, clementine, spotify, vlc).

Ctrl + X, ardından Y ve ardından Enter tuşlarına basarak dosyayı kaydedin ve çıkın.

Komut dosyasını yürütülebilir hale getirmek için aşağıdaki komutu çalıştırın:

chmod +x ~/bluetooth-music.sh

Adım 3: Komut Dosyasını Çalıştırmak için bir systemd Hizmeti Oluşturun.

Şimdi, komut dosyasını arka planda çalıştırmak için bir systemd hizmeti kurmamız gerekiyor.Systemd hizmet dosyasını oluşturun:

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

Aşağıdaki yapılandırmayı ekleyin:

[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

Yolun doğru olduğundan emin olun. bluetooth-music.sh hizmet yapılandırmasında dosya doğru. Dosyayı kaydetmek ve kapatmak için CTRL+O ve CTRL+X tuşlarına basın.

Hizmeti etkinleştirmek ve başlatmak için aşağıdaki komutları çalıştırın:

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

Şimdi, Bluetooth cihazınız bağlandığında, Rhythmbox otomatik olarak açılacaktır!

Bu yaklaşımla ilgili küçük bir sorun, Rhythmbox uygulamasını kapatırsanız, komut dosyasının otomatik olarak yeniden başlatılmasıdır. Bunun nedeni, komut dosyasının Bluetooth cihazınızın bağlı olup olmadığını birkaç saniyede bir kontrol etmesidir. Rhythmbox çalışmıyorsa, komut dosyası yeniden başlatır. Bundan hoşlanmayabilir ve sinir bozucu olduğunu hissedebilirsiniz.

Bu davranışı önlemek için aşağıdaki adımı uygulayın.

Adım 4: Manuel Kapatmadan Sonra Rhythmbox’ın Yeniden Başlatılmasını Önleyin

Komut dosyası Rhythmbox’ı yeniden açmaya devam ettiğinden, el ile ne zaman kapattığınızı belirtmek için bir bayrak dosyası kullanın.

Bunu yapmak için Rhythmbox’ı manuel olarak kapatmak üzere bir takma ad oluşturun:

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

Bu, Rhythmbox’ı kapatan ve yeniden açılmasını önlemek için bir bayrak ayarlayan closemusic adlı bir komut oluşturur.

Lütfen /tmp / bluetooth_music öğesini zaten tanımladığımızı unutmayın.2. adımda daha önce oluşturduğumuz komut dosyamızdaki dosyayı işaretleyin.

Şimdi, komut dosyası /tmp/bluetooth_music dosyasını kontrol eder.bayrak. Varsa, Rhythmbox yeniden başlatılmaz.

~/.bash_aliases dosyasını yeniden yükleyin :

source ~/.bash_aliases

Şu andan itibaren Rhythmbox’ı normal şekilde kapatmak yerine closemusic komutunu çalıştırabilirsiniz:

closemusic

Bu, komut dosyasına, Bluetooth cihazınız bağlantıyı kesip yeniden bağlanmadıkça Rhythmbox’ı yeniden açmamasını söyler.

Adım 5: Sorun giderme

Rhythmbox başlatılmazsa veya hizmet beklenmedik şekilde davranıyorsa şu adımları deneyin:

A. Komut dosyasının manuel olarak çalışıp çalışmadığını kontrol edin

Çalışıp çalışmadığını görmek için komut dosyasını çalıştırın:

./bluetooth-music.sh

Rhythmbox’ı başlatmazsa, Bluetooth cihazınızın bağlı olup olmadığını kontrol edin:

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

Çıkışta Connected: yes göründüğünden emin olun.

Örnek Çıktı:

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 hizmet durumunu doğrulayın

systemctl --user status bluetooth-music.service

Çıktıdaki hataları arayın.

C. Ayrıntılı hatalar için günlükleri kontrol edin

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

Görüntü açılamıyor görürseniz, hizmet dosyasında DISPLAY=:0 ‘ın ayarlandığını onaylayın.

D. Systemd yapılandırmasında Komut Dosyasının yolunu kontrol edin

Komut dosyasının doğru yolunu tanımladığınızdan emin olun bluetooth-music.sh systemd yapılandırmanızda.

E. Değişikliklerden sonra hizmeti yeniden başlatın

systemctl --user restart bluetooth-music.service

 

Yazının orijinalini buradan okuyabilirsiniz.