Adem Gökhan Tüfekci

2026

Dikte’ye katkı

Dikte, yusufipk’in yazdığı açık kaynak sesten yazıya uygulaması — bana ait değil. macOS’ta yazının yanlış pencereye düşmesine yol açan odak hatasını bulup düzelten bir katkı gönderdim.

Açık kaynak katkısıHata ayıklamamacOS

Bu proje kimin

Dikte’yi yusufipk yazdı: Linux önceliğiyle geliştirilen, GPL-3.0 lisanslı, açık kaynak bir sesten yazıya uygulaması. Uygulamanın kendisi bana ait değil; buradaki payım tek bir katkı. Bu sayfa o katkıyı anlatıyor.

Problem

macOS’ta her dikte, yazının gitmesi gereken pencereden öne olma sırasını alıyordu. Kısayola bir metin düzenleyicide basınca düzenleyici pasifleşiyor, imleç duruyor, başlık çubuğu griye dönüyor ve iş bitince yapıştırma tuşu belgeye değil başka bir yere düşüyordu. Metnin doğru yere gitmesinin tek yolu, yazı gelmeden önce elle pencereye geri tıklamaktı.

Sebebini tahminle değil ölçerek buldum

İlk şüpheli, kayıt sırasında açılan gösterge penceresiydi; değildi. Kayıt ffmpeg’in avfoundation girişinden geçiyor ve orada bir yakalama oturumu açmak, açan süreci öne getiriyor. ffmpeg Dikte’nin çocuk süreci ve kendi paketi olmadığı için sistem bu hareketi Dikte’ye yazıyor. Süreç içinden tutulan kayıtla dışarıdaki `lsappinfo front` çıktısını tek saat üzerinde karşılaştırdım: kısayola basıldığında ön pencere hâlâ düzenleyici, kayıt başlatma işlevi döndüğünde de hâlâ düzenleyici, 89 milisaniye sonra Dikte. Hatayı göstergeye benzeten şey bu boşluktu.

İşe yaramayan iki yol

Bunları da yazdım ki aynı öğleden sonrayı başkası harcamasın: ffmpeg’i ayrı bir oturumda başlatmak hiçbir şeyi değiştirmedi, çocuk sürecin ortamından paket kimliğini silmek de değiştirmedi. Yakalama oturumu bir pencere olmadığı için “öne geçme” davranışı ona hiçbir ayarla kapatılamıyor.

Çözüm

Kayıt başlamadan — göstergeden de önce — o an hangi pencerenin önde olduğu not ediliyor, Dikte öne geçtiği anda sıra ona geri veriliyor. Ön pencerenin alınmasından geri verilmesine kadar ölçülen süre 99 milisaniye; öncesinde başlık çubuğu dikte boyunca gri kalıyordu. Kullanıcı bu sırada kendi isteğiyle başka bir pencereye geçtiyse metni orada istiyor demektir, oraya dokunulmuyor. Yapıştırma anında ikinci bir kontrol daha var.

Testler

52 yeni test yazdım, hiçbiri atlanmıyor. macOS’a özel arayüzler içe aktarma anında değil çalışma anında yükleniyor; böylece bu kod AppKit bulunmayan bir makinede de içe aktarılabiliyor ve Linux üzerinde koşan sürekli entegrasyon her satırını çalıştırabiliyor. Proje testleri 1081’den 1133’e çıktı, ikisi de hatasız.

Durum

16 Ağustos 2026’da açıldı, hâlâ inceleme bekliyor — henüz projeye birleştirilmedi. Kabul edilip edilmemesi proje sahibinin kararı.