Uyap Doküman Editörü'nü (UDE) Apple Silicon (M1/M2/M3/M4)
Mac'lerde Rosetta olmadan native çalıştırır. Rosetta çeviri katmanı olmadığı için
daha hızlı açılır ve çalışır. Java gömülü gelir; ayrıca bir şey kurmaya gerek yoktur
ve .udf dosyalarına çift tıklayarak açabilirsiniz.
💻 Intel Mac'iniz mi var? Aşağıdaki tüm mimari-bağımsız iyileştirmeler (keskin metin, modern ikonlar, Mac kısayolları, native pencereler, e-imza, PDF Türkçe harf) Intel'de de geçerli. Kurulum komutu için bkz. Intel işlemcili Mac'ler için.
Modern Material ikonlar + Java 11 HiDPI ile Retina'da keskin metin ve arayüz.
⚠️ Bu depo UYAP Doküman Editörü'nün kaynak kodunu içermez. Tamamen bağımsız, gayriresmî bir Mac yamasıdır: hiçbir kamu kurumu tarafından geliştirilmemiş/onaylanmamıştır. Burada bulunan yalnızca yama ve build betikleridir; resmî UDE paketi build sırasında uyap.gov.tr'den siz indirir ve yamayı uygulamanın üstüne siz çalıştırırsınız. "Olduğu gibi" sunulur.
✅ E-imza çalışıyor: Akıllı kart okuyucu algılaması (
5.4.17_4+) çözüldü — gömülü Java artık PCSC üzerinden kartı görüyor ve imzalama akışı baştan sona çalışıyor. Belge açma/düzenleme de sorunsuz.
🗂️ Native macOS dosya pencereleri: Aç / Kaydet / Farklı Kaydet artık eski görünümlü Java penceresi yerine macOS'un kendi dosya penceresini kullanır — Finder kenar çubuğu, iCloud Drive, son kullanılanlar ve
.udffiltresiyle.
Aç/Kaydet pencereleri artık macOS'un native dosya seçicisi.
📦 Hazır (paketlenmiş) uygulama dağıtılmaz. İşgüzarlarla uğraşmak istemediğim için paketlenmiş hâlini dağıtmıyorum; uygulamayı kendiniz derleyip paketlersiniz. Bu sayfada bir "Releases" / hazır indirme bağlantısı bulmazsınız. Aşağıdaki adımlar derlemeyi olabildiğince kolaylaştırır — komutları kopyala-yapıştır ile çalıştırmanız yeterli.
Programcı olmanıza gerek yok. Terminal uygulamasını açın (klavyede
Command (⌘) + Boşluk'a basıp açılan kutuya Terminal yazın ve Enter'a basın),
ardından aşağıdaki tek satırı kopyalayıp yapıştırın ve Enter'a basın:
arch -arm64 bash -c "$(curl -fsSL https://raw.githubusercontent.com/saidsurucu/ude-mac-arm64/main/kur.sh)"Hepsi bu kadar. Manuel indirme, klasöre girme, Java kurma gibi adımlar yok. Bu komut gerisini sizin için yapar:
- Gerekiyorsa geliştirici araçlarını (Xcode komut satırı araçları) kurar — bir pencere açılırsa yalnızca **"Yükle"**ye basıp bitmesini bekleyin, betik kendiliğinden devam eder.
- Kaynak kodu
~/ude-mac-arm64klasörüne indirir (zaten varsa en güncel sürüme günceller). - Gereken Java sürümlerini otomatik indirir.
- Uygulamayı modern ikonlarla derler + imzalar ve doğrudan /Applications klasörüne kurar.
İlk derleme internet hızınıza göre birkaç dakika sürebilir.
Bittiğinde uygulama Launchpad ve Applications klasöründe hazırdır; çift tıklayarak
ya da .udf dosyalarına çift tıklayarak açabilirsiniz. (Kendiniz derleyip imzaladığınız
için macOS "geliştirici doğrulanamadı" uyarısı çıkmaz; xattr ile uğraşmanıza gerek
yoktur.)
Yeni Editör sürümü çıktığında yukarıdaki tek satırı yeniden çalıştırmanız yeterli. En güncel sürüm otomatik inecek ve yamalanacak.
Mac'iniz Intel (x86_64) işlemcili ise — yani Apple Silicon (M1/M2/M3/M4) değilse —
aynı kurulumu şu tek satırla yapın (Apple Silicon'dakinin aksine arch -arm64
yoktur; Intel zaten yalnız x86_64'tür):
bash -c "$(curl -fsSL https://raw.githubusercontent.com/saidsurucu/ude-mac-arm64/main/kur.sh)"Mimarinizden emin değil misiniz? Sol üstteki Apple () menüsü → Bu Mac Hakkında'ya bakın: "Apple M…" yazıyorsa üstteki Apple Silicon komutunu, "Intel" yazıyorsa bu komutu kullanın. (Betik mimariyi kendisi de algılar; yanlış komutu çalıştırırsanız sizi uyarır.)
Intel'de resmî UDE paketi zaten x86_64 olduğu için burada kazanç "Rosetta'sız native hız" değildir; kazanç şunlardır: Java 11 ile Retina'da keskin metin, modern Material ikonlar, Mac klavye kısayolları, native macOS Aç/Kaydet pencereleri, trackpad / ⌘ ile yakınlaştırma, e-imza (akıllı kart) düzeltmesi, panodan görsel yapıştırma, macOS dikte düzeltmesi ve PDF dışa aktarımında Türkçe harfler. Yani mimariye bağlı olmayan tüm iyileştirmeler Intel'de de geçerlidir.
Akıllı kart / e-imza sürücünüzün de Mac'inizin mimarisine uygun sürümünün kurulu olması gerekir. TÜBİTAK BİLGEM AKİS — Destek/İndirme sayfasından (https://akiskart.bilgem.tubitak.gov.tr/destek/):
- Apple Silicon (M1/M2/M3/M4): "Mac OS Arm (Apple Silicon)" başlığı altındaki
güncel paketi indirin (ör.
Akia_macos_arm_6_8_9.pkg). - Intel: "Mac OS Intel" başlığı altındaki paketi indirin.
İndirilen .pkg'a çift tıklayıp kurulumu tamamlayın (yönetici şifresi ister). Mac'inizin
mimarisine uymayan paketi seçmeyin.
Bu derlemede kısayollar Mac'e uyarlanmıştır (kalın ⌘B, kaydet ⌘S, hizalama
⌘L/E/R/J, yazı boyutu ⌘⇧./⌘⇧, …). Tam liste için bkz. KISAYOLLAR.md.
Yukarıdaki adımlar derlemek için yeterlidir. Bu bölüm, dönüşümün neyi nasıl çözdüğünü ve tek tek build hedeflerini açıklar.
Build, çalıştığı Mac'in mimarisini uname -m ile otomatik algılar (Apple Silicon=arm64,
Intel=x86_64) ve gömülecek Java ile launcher'ı o mimari için üretir. Aşağıdaki çözümler
arm64'ün özgün gerekçesiyle anlatılır; 2, 3, 6, 7, 8, 9, 11 maddeleri mimariden bağımsızdır
ve Intel'de de aynen geçerlidir. Madde 4 (sqlite) arm64'te zorunluydu (3.7.2'nin arm64
native'i yoktu); Intel'de 3.7.2 zaten x86_64 native içerir ama tek tip build için 3.46.x'e
geçiş orada da uygulanır (jar hem Mac/aarch64 hem Mac/x86_64 dylib taşır).
Resmî paket x86_64. Native arm64 için:
-
Launcher →
jpackageile arm64 Java 11 runtime gömülü, gerçek native launcher üretilir. Kullanıcı Java kurmaz; macOS çift-tık (dosya açma) çalışır. -
Retina/keskin metin → arm64 Java 8 Swing'i Retina'da bulanık render ediyordu. Java 11 (JEP 263 otomatik HiDPI) ile metin keskin. UDE'nin Java 8 bytecode'u Java 11'de çalışır (WebLaF illegal-access uyarıyla geçer).
-
eawt-shim → UDE'nin kullandığı eski
com.apple.eawtAPI'si Java 11'de kaldırılmış.scripts/eawt-shimile bu sınıflar--patch-module java.desktopüzerinden sağlanır; dosya açma, Java 11'in native dispatcher'ına reflection ile köprülenir → çift-tık korunur. -
sqlite-jdbc 3.7.2 (arm64 native'i yok) → 3.46.x ile değiştirilir.
-
JNA → uygulama JNA'yı hiç çağırmıyor (bytecode taramasıyla doğrulandı), dokunulmaz.
-
Modern ikonlar (
ICONS=1) → UDE'nin ~324 toolbar/aksiyon ikonu modern Material setiyle değiştirilir ve Retina-keskin yapılır. UDE ikonları düzImageIconolarak yüklenip HiDPI-farkında olmadığından, yükleyici (Utils.b) Javassist ileBaseMultiResolutionImage'a (1x +@2x) köprülenir. Override görsellerscripts/icons/overrides, yamascripts/icons/IconLoaderPatch.java. Yayınlanan sürümler bu modu açık derlenir. -
E-imza (
5.4.17_4+) → JDK'nınjavax.smartcardio+sun.security.pkcs11API'leriyle çalışır (JNA değil). Gömülü Java'nınjavax.smartcardiokatmanı macOS'ta PCSC native kütüphanesini varsayılan yolda bulamadığından kart okuyucu görünmüyordu. Çözüm-Dsun.security.smartcardio.library=/System/Library/Frameworks/PCSC.framework/Versions/A/PCSCile bu yolu vermek; ancakjpackage'ın.cfgjava-option'ları çift-tıkla açılan launcher'da bu JVM'e ulaşmıyordu (kullanıcılsofile doğruladı: framework yüklenmiyordu). Bu yüzden parametre, JVM'in her zaman okuduğuJAVA_TOOL_OPTIONSortam değişkenine,.app'inInfo.plist'indekiLSEnvironment(Launch Services) anahtarıyla gömülür → çift-tık açılışta garanti uygulanır. (Versions/Currentsymlink yerine kanıtlanmışVersions/Ayolu kullanılır.) -
Trackpad ile yakınlaştırma → UDE'de zoom yalnızca durum çubuğundaki kaydırıcıyla yapılabiliyordu; trackpad jesti yoktu.
scripts/macos-zoomjavaagent'ı ⌘ + iki parmak kaydırma jestini bu kaydırıcıya bağlar: Cmd basılıyken gelenMouseWheelEventyakalanıp yutulur (belge kaymaz) ve uygulamanın zoom kaydırıcısı sürülür → belge büyür/küçülür. Gerçek iki-parmak pinch jesti modern Java'ya iletilmediğinden ⌘ tuşu gerekir; ⌘'süz kaydırma belgeyi normal kaydırır. Olayı yutabilmek için sistemEventQueue'su ilk odak olayında devralınır (premain'de erken devralma WebLaF tarafından baypas edilir). Ayrıca⌘+/⌘−klavye kısayolları da aynı kaydırıcıyı sürer (birKeyEventDispatcherile); macOS'un standart yakınlaştır/uzaklaştır tuşları beklendiği gibi çalışır. -
Standart Mac kısayolları → UDE'nin editörü Windows kökenli; kısayollar Ctrl tabanlı ve bir kısmı alışılmadık tuşlarda (kalın
Ctrl+K, italikCtrl+T, altı çiziliCtrl+Shift+A, bulCtrl+B). Üstelik macOS, metin bileşenlerine yerleşik Emacs imleç bağlamaları ekler (Ctrl+Asatır başı,Ctrl+Bharf geri,Ctrl+N/P/O/F,Ctrl+Vsayfa aşağı…) ve bunlar uygulamanın komutlarından önce çalışır → sentetik birCtrl+A"tümünü seç" değil "satır başı" yapar.scripts/macos-textkeys'tekiMacShortcutRemap(birKeyEventDispatcher) bu yüzden üç katmanlı çalışır:- Menü-etiketi: Menüde karşılığı olan komutlar için odaktaki pencerenin menü ağacında
etiketle eşleşen etkin
JMenuItembulunupdoClick()edilir. Bu, uygulamanın gerçek eylemini (zengin-metin yapıştırma vb.) çağırır ve odak bileşenini kullanmadığından Emacs gölgesini tamamen baypas eder. (Menü öğelerinin hızlandırıcısı yoktur; eşleme etiketledir.) - Metin API'si: Seç/kopyala/kes/yapıştır için yedek olarak doğrudan
JTextComponent. - Sentetik Ctrl: Menüde olmayan biçimlendirme (kalın/italik/altı çizili) için odaktaki bileşene sentetik Ctrl gönderilir (uygulama bu tuşları Emacs'in üzerine ezdiğinden çalışır).
Eşlemeler:
⌘B/⌘I/⌘U→kalın/italik/altı çizili,⌘C/⌘V/⌘X/⌘A→kopyala/yapıştır/kes/tümünü seç,⌘Z/⌘⇧Z→geri/ileri al,⌘N/⌘O/⌘S/⌘⇧S→yeni/aç/kaydet/farklı kaydet,⌘P/⌘⇧P→yazdır/önizleme,⌘F→bul,⌘T→yazı özellikleri. Mevcut Ctrl kısayolları aynen çalışır;⌘Q/⌘W/⌘H/⌘Mgibi gerçek macOS kısayollarına dokunulmaz. - Menü-etiketi: Menüde karşılığı olan komutlar için odaktaki pencerenin menü ağacında
etiketle eşleşen etkin
-
Modern düz görünüm (
SKIN=1, varsayılan açık) → Menüler, paneller, şerit ve durum çubuğu degradesiz nötr renklere geçer; arayüz yazı tipi modernleşir; belge çevresindeki eski turkuaz arka plan nötr griye düzeltilir. Şerit düzeni ve belge içeriği değişmez. Ek olarak:- Koyu mod: Mac'iniz koyu görünümdeyse UDE de koyu temayla açılır (belge sayfası okunabilirlik için beyaz kalır). Görünümü değiştirdikten sonra uygulamayı yeniden başlatmanız yeterlidir.
- Bütünleşik başlık çubuğu: Çifte başlık kalkar; şerit, modern Mac uygulamalarındaki gibi pencerenin tepesiyle kaynaşır. Durum çubuğundaki bellek göstergesi kaldırılır.
- Sade şerit: "Pano/Font/Paragraf" grup kutuları ve eski kırmızı küre logosu yerine sade gruplar ve düz grafit UDE simgesi kullanılır.
- Görünüm açılışta garanti kurulur; UDE'nin tema ayarındaki "standart tema" seçeneğinin
tercihi silmesinden etkilenmez. Kapatmak için
SKIN=0 make all.
-
Panodan görsel yapıştırma → Panoda bir görsel varken (ekran görüntüsü, tarayıcıdan "görseli kopyala") Yapıştır/⌘V macOS'ta hiçbir şey yapmıyordu: macOS Java'sı pano görselini Retina'ya özel
MultiResolutionCachedImagetipiyle verir, UDE'nin imaj yapıştırma dalı iseinstanceof BufferedImagedenetiminde bu tipi tanımayıp dalı sessizce atlar (Windows/Linux'ta tip zatenBufferedImageolduğundan sorun görülmez).scripts/macos-pasteimagebuild yaması pano görselini güvenli biçimde dönüştürür (Retina'da en yüksek çözünürlüklü varyant), yapıştırma anındaki yıkıcı sayfaya-sığdırma küçültmesini kaldırır (görünen boyut değişmez, tam çözünürlük gömülür) ve görüntü çizimine bicubic interpolasyon ekler → ekranda/PDF'te keskin. Metin önceliği korunur: panoda metin de varsa eskisi gibi metin yapışır. Varsayılan açıktır (PASTEIMG=0ile kapatılır). -
Fare ile imaj boyutlandırma → Belgedeki bir imaja tıkladığınızda köşelerde dört tutamaç belirir; Word'deki gibi bir köşeyi sürükleyerek oran korumalı yeniden boyutlandırabilirsiniz. Sürükleme sırasında kesik çizgili önizleme gösterilir; fare bırakıldığında görsel yeni boyutuna oturur. Yeni boyut belgeye yazılır ve UYAP'ın resmî editöründe de aynı şekilde görünür. Tek geri alma adımıyla (
⌘Z) sıfırlanır. Varsayılan açıktır (IMGRESIZE=0ile kapatılır). -
macOS dikte düzeltmesi → Resmî pakette dikte konuşurken yazıyor ama dikte kapanınca yazılan metin kayboluyor, ardından uygulama donup zorla kapatma gerektiriyordu (yeniden açılışta "düz metin olarak kurtar" uyarısı). Kök neden: Java, dikteyle gelen metni tuş basımı gibi işlerken editörün kelime denetimi geçici imleç tipine takılıp çöküyordu. Bu derlemede metin bileşenlerine eklenen küçük bir dinleyiciyle dikte metni editörün normal yazma yolundan işlenir; dikte edilen metin kalıcıdır, donma olmaz. Şapkalı harfler (
^+a → â) ve emoji seçici (⌃⌘Space) etkilenmez.
Not: macOS codesign,
.appadındaki Türkçe karakterlerle imzayı bozuyor; bu yüzden executable ASCII (UyapDokumanEditoru) tutulur, görünen ad sonradan Türkçe yapılır.
- macOS Mac (Apple Silicon veya Intel — mimari
uname -mile otomatik algılanır) - Java 11 (gömülecek runtime, Mac'inizin mimarisi için) — yoksa
make jdkAzul Zulu 11'i kurar - jpackage'lı 17+ JDK (jpackage + shim derlemesi) — yoksa
make jpackage-jdkAzul Zulu 21'i kurar curl,unzip,zip,codesign,plutil(macOS'ta hazır gelir)
Build, host mimarisi için derler: Apple Silicon'da arm64, Intel'de x86_64 (çapraz derleme yapılmaz; gömülecek Java ve jpackage host mimarisiyle eşleşir).
make jdk # gömülecek Java 11 yoksa kur (host mimarisi)
make jpackage-jdk # jpackage'lı 17+ JDK yoksa kur
make all # build/Uyap Doküman Editörü.app üret
ICONS=1 make all # + modern Material/Retina ikonlar + modern düz görünüm (yayın sürümleri böyle; SKIN varsayılan açık)
SKIN=0 ICONS=1 make all # modern düz görünümü kapat (eski turkuaz arka plan döner)make help # tüm hedefler
make check-deps # araç + Java 11 (host mimarisi) + jpackage denetimi
make download # paketi indir + kaynağı aç
make deps # sqlite-jdbc indir + host mimarisi dylib doğrula
make shim # eawt-shim derle (Java 11 com.apple.eawt yerine)
make patch # editor-app.jar yamala (sqlite swap + eawt çıkar)
make package # jpackage ile .app üret (Java 11 + shim, .udf ilişkilendirmeli)
make sign # ad-hoc codesign
make clean / distclean
make distclean
UDE_URL="https://rayp.adalet.gov.tr/.../yeni-paket.zip" make allUyarı: İleride paket yapısı (jar/sqlite sürümü) değişirse betiklerin güncellenmesi gerekebilir.
.github/workflows/release.yml (elle tetiklenir): macOS arm64 runner'da make all
çalıştırır ve .app'i imzayı bozmadan zip'ler. Sürüm, UDE sürümünden türetilir:
<ude_surumu>_<N> (ör. 5.4.17_1). Bu yalnızca derlemenin doğrulanması/kişisel kullanım
içindir; bu depo hazır paket dağıtmaz (bkz. en üstteki not).
Not: CI yalnızca arm64 runner kullanır; Intel (x86_64) build'i yerelde bir Intel Mac'te (
bash kur.shveyamake all) üretilir. İstenirsemacos-13Intel runner ile ayrı bir CI işi eklenebilir.
Bu çalışmaya ilham veren ve sorunun çözüm yolunu ortaya koyan tosbaha kullanıcısına (tosbaha/uyap-arm) teşekkürler.
Bu depodaki paketleme betikleri, yamalar ve belgeler MIT Lisansı ile sunulur. Uyap Doküman Editörü'nün kendisi UYAP / T.C. Adalet Bakanlığı'na ait olup bu lisansın kapsamı dışındadır; ilgili kullanım koşullarına tabidir.

