Gabble'ı sadece tarayıcıdan kullanan oyuncuların sık dile getirdiği bir istek vardı: arka planda çalışan, oyunu yavaşlatmayan, sahici bir masaüstü uygulaması. Discord'un 400–600 MB RAM yutmasına, TeamSpeak'in 2006 arayüzüne alternatif bir şey. Bu yazıda Gabble Desktop'ın nasıl inşa edildiğini, neden Electron yerine WebView2 seçtiğimizi ve iki dünya arasındaki köprüyü nasıl kurduğumuzu anlatıyoruz.
Tek Cümleyle
Gabble Desktop; WPF ile yazılmış ince bir C# kabuğu içinde, Microsoft WebView2 kontrolü aracılığıyla mevcut web uygulamasını barındırır. Ayrı bir backend yok, ayrı bir ses katmanı yok — sadece yerel işletim sistemi entegrasyonu.
Neden Electron Değil?
Masaüstü uygulaması geliştirmek istediğinizde akla gelen ilk seçenek genellikle Electron oluyor. GitHub, VS Code, Discord — hepsi Electron üzerine kurulu. Peki neden biz farklı bir yol seçtik?
-
Electron = İki Chromium
Electron, kendi Chromium kopyasını bundlar. Zaten Chrome yüklü bir sistemde ikinci bir tarayıcı motoru belleğe giriyor. 150–250 MB sadece motor için harcanıyor. -
Güncelleme Yükü
Electron uygulamaları güvenlik yamaları için Chromium sürümünü kendileri güncellemek zorunda. WebView2 ise sistemdeki Edge ile birlikte Windows Update üzerinden otomatik güncelleniyor. -
WebView2 = Paylaşılan Motor
WebView2, Windows 10/11'de zaten yüklü olan Edge (Chromium) motorunu paylaşarak kullanır. Ek indirme yok, ek bellek tüketimi minimal. -
Native C# Entegrasyonu
WPF + WebView2 ile global klavye hook'ları, sistem tepsisi, bildirimler ve pencere yönetimi doğrudan .NET API'leriyle yapılabiliyor. Node.js gerektirmiyor.
Mimari: WPF + WebView2 + WebRTC
Sistem üç katmandan oluşuyor. Her katmanın sorumluluğu net biçimde ayrılmış durumda.
Sistem Tepsisi
Always-on-Top
postMessage köprüsü
SignalR / Chat
Masaüstü Uygulamasının Kazandırdıkları
-
Odak Bağımsız PTT
Oyun tam ekranda bile çalışıyor. Global hook, hangi pencere açık olursa olsun tuşu yakalar. -
Sistem Tepsisi Entegrasyonu
Mikrofon durumu, konuşan kişi sayısı ve oda bilgisi Windows sistem tepsisinde anlık güncelleniyor. -
Always-on-Top Mini Mod
Küçük bir yüzen pencereyle oyununuzun üzerinde kim konuşuyor görebilirsiniz, tıklanamaz modda. -
Otomatik Başlatma
Windows başlangıcında çalışır, arka planda bekler. Oyunu açtığınızda Gabble zaten hazır.
Mikrofon İzni ve Gizlilik
WebView2 varsayılan olarak mikrofon iznini tarayıcı gibi sorar. Gabble Desktop bu izni açılışta tek sefer alıyor ve WPF katmanında saklıyor. Kullanıcı her oturumda tekrar onay vermek zorunda değil. İzinler Chrome profili gibi persist ediliyor.
Sıradaki Adımlar
Gabble Desktop şu an erken erişim aşamasında. Aktif olarak geliştirilen özellikler:
- Oyun sesini algılayan akıllı PTT (VAD entegrasyonu)
- Özelleştirilebilir mini panel — konum ve şeffaflık ayarı
- Oyun adına göre otomatik oda önerileri
- macOS desteği (yakında)