Skip to content

noirlang/airplax

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

airplax

airplax, Linux icin modern bir AirPlay Screen Mirroring receiver arayuzudur.

Mevcut surumde gercek iPhone/iPad/macOS ekran yansitma akisi icin UxPlay backend olarak calistirilir. airplax Qt 6/QML arayuzu, ayarlar, log paneli ve receiver kontrolunu saglar. Native C++ AirPlay protokol implementasyonu henuz tamamlanmis degildir; UxPlay kurulu degilse uygulama yalnizca placeholder discovery/log moduna duser.

Receiver Adi

Receiver adi her zaman su formatta uretilir:

kullaniciadi@bilgisayaradi

Ornek:

raodrin@noirlang

Bu ad manuel kaydedilmez. Uygulama her acilista sistemdeki $USER / $LOGNAME ve hostname bilgisinden tekrar hesaplar. iPhone'da Ekran Yansitma / Screen Mirroring listesinde bu ad gorunur.

Ozellikler

  • iPhone/iPad/macOS Screen Mirroring listesinde gorunme.
  • UxPlay backend ile gercek AirPlay mirroring.
  • Qt 6 + QML tek butonlu sade arayuz.
  • Start Search / Stop Search ile receiver baslat/durdur.
  • PIN modu ayari.
  • GStreamer plugin kontrolu.
  • Avahi/mDNS service discovery.
  • Wayland/X11 ortaminda UxPlay/GStreamer render destegi.

Proje Yapisi

src/
  main.cpp
  app/
    ApplicationController.cpp
    ApplicationController.h
  airplay/
    AirPlayServer.cpp
    AirPlayServer.h
    MdnsPublisher.cpp
    MdnsPublisher.h
    PairingManager.cpp
    PairingManager.h
    RtspSession.cpp
    RtspSession.h
    UxPlayBackend.cpp
    UxPlayBackend.h
  config/
    SettingsManager.cpp
    SettingsManager.h
  media/
    AudioRenderer.cpp
    AudioRenderer.h
    GStreamerPipeline.cpp
    GStreamerPipeline.h
    VideoRenderer.cpp
    VideoRenderer.h
  ui/qml/
    Main.qml
    ReceiverView.qml
    Settings.qml
    Logs.qml
  utils/
    Logger.cpp
    Logger.h

Arch / CachyOS Kurulum

sudo pacman -Syu --needed \
  base-devel cmake ninja pkgconf \
  qt6-base qt6-declarative qt6-quickcontrols2 \
  gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav \
  avahi nss-mdns openssl libplist uxplay

sudo systemctl enable --now avahi-daemon

UFW kullaniyorsan:

sudo ufw allow 5353/udp
sudo ufw allow 7000/tcp
sudo ufw allow 7001/tcp
sudo ufw allow 7100/tcp
sudo ufw allow 6000/udp
sudo ufw allow 6001/udp
sudo ufw allow 7011/udp
sudo ufw reload

Fedora Kurulum

sudo dnf install \
  cmake ninja-build gcc-c++ pkgconf-pkg-config \
  qt6-qtbase-devel qt6-qtdeclarative-devel qt6-qtquickcontrols2-devel \
  gstreamer1-devel gstreamer1-plugins-base-devel gstreamer1-plugins-good \
  gstreamer1-plugins-bad-free gstreamer1-plugin-libav \
  avahi-devel avahi-tools openssl-devel libplist-devel uxplay

sudo systemctl enable --now avahi-daemon
sudo firewall-cmd --add-service=mdns --permanent
sudo firewall-cmd --add-port=7000/tcp --permanent
sudo firewall-cmd --add-port=7001/tcp --permanent
sudo firewall-cmd --add-port=7100/tcp --permanent
sudo firewall-cmd --add-port=6000/udp --permanent
sudo firewall-cmd --add-port=6001/udp --permanent
sudo firewall-cmd --add-port=7011/udp --permanent
sudo firewall-cmd --reload

Codec paketleri Fedora'da sistem politikasina gore RPM Fusion gerektirebilir.

Ubuntu / Debian Kurulum

sudo apt update
sudo apt install \
  build-essential cmake ninja-build pkg-config \
  qt6-base-dev qt6-declarative-dev qt6-quickcontrols2-dev \
  qml6-module-qtquick qml6-module-qtquick-controls qml6-module-qtquick-layouts \
  libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-tools \
  gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \
  gstreamer1.0-plugins-ugly gstreamer1.0-libav \
  libavahi-client-dev avahi-daemon avahi-utils libssl-dev libplist-dev uxplay

sudo systemctl enable --now avahi-daemon

UFW kullaniyorsan Arch bolumundeki portlari ac.

Derleme

cmake -S . -B build -G Ninja
cmake --build build

Derlenen binary:

./build/airplax

Receiver'i uygulama acilir acilmaz baslatmak icin:

./build/airplax --start-receiver

AppImage

AppImage uretmek icin:

scripts/build-appimage.sh

Uretilen dosya:

dist/airplax-x86_64.AppImage

Calistirma:

./dist/airplax-x86_64.AppImage

Receiver'i acilista baslatmak icin:

./dist/airplax-x86_64.AppImage --start-receiver

Notlar:

  • AppImage icine airplax ve uxplay binaryleri eklenir.
  • UxPlay video render icin host sistemdeki GStreamer pluginlerini kullanmaya devam edebilir.
  • Avahi daemon ve firewall izinleri host sistemde ayarlanmis olmalidir.
  • AppImageLauncher kullanan sistemlerde dogrudan test icin gerekirse APPIMAGELAUNCHER_DISABLE=1 ./dist/airplax-x86_64.AppImage kullan.

Kullanim

  1. airplax'i baslat:

    ./build/airplax --start-receiver
  2. Penceredeki Start Search butonuna bas.

  3. iPhone/iPad/macOS cihazinin ayni yerel agda oldugundan emin ol.

  4. iPhone'da Denetim Merkezi'ni ac.

  5. Ekran Yansitma / Screen Mirroring sec.

  6. Listeden kullaniciadi@bilgisayaradi adini sec.

UxPlay backend video icin ayri bir GStreamer penceresi acabilir. Bu mevcut MVP icin normaldir.

Kontrol Komutlari

UxPlay kurulu mu:

command -v uxplay

Avahi calisiyor mu:

systemctl is-active avahi-daemon

mDNS kaydi yayinlaniyor mu:

avahi-browse -a -t | grep -i airplay

Receiver portlari dinleniyor mu:

ss -ltn
ss -lun

GStreamer codec kontrolu:

gst-inspect-1.0 avdec_h264
gst-inspect-1.0 avdec_aac
gst-inspect-1.0 avdec_alac

Sorun Giderme

iPhone listesinde cikmiyor

  • avahi-daemon aktif olmayabilir.
  • Telefon ve Linux makine ayni agda olmayabilir.
  • Router mDNS/multicast trafigini engelliyor olabilir.
  • UFW/firewall UDP 5353 paketlerini engelliyor olabilir.

Listede cikiyor ama baglanmiyor

  • UxPlay backend calismiyor olabilir.
  • TCP 7000, 7001, 7100 veya UDP 6000, 6001, 7011 kapali olabilir.
  • Eksik GStreamer codec/sink paketi olabilir.
  • DRM korumali icerik yansitilmaya calisiliyor olabilir.

UxPlay yoksa

Uygulama placeholder moda duser. Bu mod iPhone'dan gelen baglanti girisimlerini loglar, fakat gercek mirroring yapmaz.

Lisans ve Yasal Sinir

AirPlay Apple'a ait kapali/proprietary bir protokoldur. airplax Apple DRM/FairPlay kirma amaci tasimaz ve Netflix, Apple TV+ gibi DRM korumali iceriklerin oynatilacagini garanti etmez.

UxPlay GPLv3 lisanslidir ve airplax tarafindan ayri bir process olarak calistirilir. UxPlay kodu bu repoya kopyalanmamistir. Ileride GPL kod vendorlama veya linkleme yapilirsa proje lisansi buna gore yeniden degerlendirilmelidir.

Kaynaklar

About

airplax, Linux icin modern bir AirPlay Screen Mirroring receiver arayuzudur.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors