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 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.
- iPhone/iPad/macOS Screen Mirroring listesinde gorunme.
- UxPlay backend ile gercek AirPlay mirroring.
- Qt 6 + QML tek butonlu sade arayuz.
Start Search/Stop Searchile receiver baslat/durdur.- PIN modu ayari.
- GStreamer plugin kontrolu.
- Avahi/mDNS service discovery.
- Wayland/X11 ortaminda UxPlay/GStreamer render destegi.
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
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-daemonUFW 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 reloadsudo 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 --reloadCodec paketleri Fedora'da sistem politikasina gore RPM Fusion gerektirebilir.
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-daemonUFW kullaniyorsan Arch bolumundeki portlari ac.
cmake -S . -B build -G Ninja
cmake --build buildDerlenen binary:
./build/airplaxReceiver'i uygulama acilir acilmaz baslatmak icin:
./build/airplax --start-receiverAppImage uretmek icin:
scripts/build-appimage.shUretilen dosya:
dist/airplax-x86_64.AppImageCalistirma:
./dist/airplax-x86_64.AppImageReceiver'i acilista baslatmak icin:
./dist/airplax-x86_64.AppImage --start-receiverNotlar:
- AppImage icine
airplaxveuxplaybinaryleri 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.AppImagekullan.
-
airplax'i baslat:
./build/airplax --start-receiver
-
Penceredeki
Start Searchbutonuna bas. -
iPhone/iPad/macOS cihazinin ayni yerel agda oldugundan emin ol.
-
iPhone'da Denetim Merkezi'ni ac.
-
Ekran Yansitma / Screen Mirroring sec.
-
Listeden
kullaniciadi@bilgisayaradiadini sec.
UxPlay backend video icin ayri bir GStreamer penceresi acabilir. Bu mevcut MVP icin normaldir.
UxPlay kurulu mu:
command -v uxplayAvahi calisiyor mu:
systemctl is-active avahi-daemonmDNS kaydi yayinlaniyor mu:
avahi-browse -a -t | grep -i airplayReceiver portlari dinleniyor mu:
ss -ltn
ss -lunGStreamer codec kontrolu:
gst-inspect-1.0 avdec_h264
gst-inspect-1.0 avdec_aac
gst-inspect-1.0 avdec_alacavahi-daemonaktif olmayabilir.- Telefon ve Linux makine ayni agda olmayabilir.
- Router mDNS/multicast trafigini engelliyor olabilir.
- UFW/firewall UDP
5353paketlerini engelliyor olabilir.
- UxPlay backend calismiyor olabilir.
- TCP
7000,7001,7100veya UDP6000,6001,7011kapali olabilir. - Eksik GStreamer codec/sink paketi olabilir.
- DRM korumali icerik yansitilmaya calisiliyor olabilir.
Uygulama placeholder moda duser. Bu mod iPhone'dan gelen baglanti girisimlerini loglar, fakat gercek mirroring yapmaz.
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.