macOS Tahoe’da Pano (Clipboard) Nasıl Çalışır?
Kısa cevap: macOS‘teki pano, «pasteboard» adı verilen sistem genelinde bir servistir. Kopyaladığınızda kaynak uygulama sisteme aynı içeriğin bir veya birden fazla temsilini (düz metin, zengin metin, görsel, dosya referansı) teslim eder ve bir sayaç artar. Yapıştırdığınızda hedef uygulama, anladığı en zengin biçimi seçer. Tahoe bu modeli korur, Spotlight‘a yerleşik bir pano geçmişi ekler ve arka planda panoyu okuyan uygulamalar konusunda gizlilik önlemlerini sıkılaştırmaya devam eder.
Günde kırk kez ⌘C‘ye basıyorsunuz. Bu basışlardan birini baştan sona takip edelim, çünkü karşılaştığınız pano tuhaflıklarının neredeyse hepsi (yanlış yazı tipiyle yapışan metin, dosya olarak gelen görsel, geçmiş uygulamasında beliren parola) bu yolculuktaki bir adımdan kaynaklanır.
macOS’te pano nedir?
Pano, teknik olarak general pasteboard‘dur: uygulamaların NSPasteboard API’si üzerinden eriştiği, ortak bir sistem servisi. Bir dosya ya da görünür bir uygulama değildir. Aynı anda yalnızca tek bir güncel «öğe kümesi» tutar ve yeniden kopyaladığınızda bu küme değiştirilir. pbcopy ve pbpaste gibi Terminal araçlarındaki pb öneki de adını «pasteboard»dan alır.
Aşağıdaki her şey için iki ayrıntı önemli:
- Aynı anda tek şey tutar. macOS, genel pasteboard için Windows’taki ⊞V gibi yerel bir çoklu öğe geçmişi hiçbir zaman sunmadı. Geçmiş, üstüne eklenen bir şeydi. Tahoe’daki Spotlight özelliği, Apple’ın sistem düzeyindeki ilk adımı (aşağıya bakın).
- Tek bir kopya aslında birkaç kopyadır. Tek bir ⌘C, aynı içeriğin pek çok temsilini aynı anda panoya koyabilir.
⌘C’ye bastığınızda ne olur?
- Uygulama panoyu üstlenir. Eski içeriği temizler ve neyi sunacağını bildirir. Pasteboard’un change count (değişiklik sayacı) değeri tam bu anda bir artar.
- Uygulama birden fazla tür sunar. Her biri, dosya türlerini tanımlayan sistemin aynısı olan bir Uniform Type Identifier (UTI) ile belirtilir.
- Veri tembel (lazy) biçimde teslim edilebilir. Uygulama bir biçimi vaat edip baytları yalnızca biri gerçekten yapıştırdığında üretebilir. Büyük kopyalar (iri bir görsel, bir elektronik tablo aralığı) gerekene kadar bu sayede ucuza mal olur.
Farklı uygulamalara yapıştırınca neden farklı sonuçlar alıyorum?
Çünkü seçimi hedef uygulama yapar. Safari’den biçimlendirilmiş bir paragraf kopyaladığınızda pano aynı anda birkaç sürüm barındırabilir:
| Temsil | Tipik tür tanımlayıcısı | Kim seçer |
|---|---|---|
| Düz metin | public.utf8-plain-text |
Terminaller, kod editörleri, arama alanları |
| Zengin metin | public.rtf |
TextEdit, Pages, Mail |
| HTML | public.html |
Web editörleri, Notlar, zengin metin alanları |
| Görsel | public.png / public.tiff |
Önizleme, Keynote, tasarım araçları |
| Dosya referansı | public.file-url |
Finder, Mail ekleri, mesajlaşma uygulamaları |
Bir kod editörü düz metni alır, HTML’i yok sayar; dolayısıyla stil kaybolur. Notlar ise HTML’i alır ve korur. İkisi de hata değildir. ⌥⇧⌘V (Yapıştır ve Stili Eşleştir) kısayolunun var olma sebebi de budur: hedeften düz metin temsilini tercih etmesini ve yerel biçimlendirmeyi uygulamasını ister.
Terminal’de kendiniz görün
Bunu körü körüne kabul etmeniz gerekmiyor. Bir şey kopyalayın, ardından şunu çalıştırın:
osascript -e 'clipboard info'
Komut, panoda o an bulunan her türü bayt cinsinden boyutuyla birlikte listeler. Numbers’tan bir hücre aralığı, ardından bir web sayfasından bir paragraf kopyalayıp iki listeyi karşılaştırın. Yapıştırmanın uygulamadan uygulamaya neden farklı davrandığının bütün hikâyesi aradaki farkta yatar. Metin sürümü için pbpaste içeriği yazdırır, echo "hello" | pbcopy ise panoya yazar.
Mac, panonun değiştiğini nasıl anlar?
Çoğunlukla kimseye haber vermez. Herkese açık belgelenmiş API’ler söz konusu olduğunda, NSPasteboard bir «pano değişti» bildirimi sunmaz. Bu konuyu önemseyen uygulamalar, yani tüm pano yöneticileri, kısa bir zamanlayıcıyla change count değerini yoklar (poll eder) ve içeriği yalnızca sayı değiştiğinde okur. Bu ucuzdur, çünkü bir tamsayıyı okumanın maliyeti neredeyse sıfırdır.
Bunun pratikte sonuçları var:
- Bir geçmiş uygulaması, çalışmadığı sırada kopyalanan hiçbir şeyi göremez.
- İki kopyalama yoklama aralığından daha hızlı gerçekleşirse ilki kaçırılabilir. Maccy’nin yoklama aralığı ayarlarından değiştirilebilir .
- Bir uygulama aynı içeriği yeniden yazdığında da change count artar; bu yüzden bir geçmiş aracının kendi tekrar eleme (de-duplication) mantığına ihtiyacı vardır.
Tahoe’da neler yeni?
Spotlight’ta pano geçmişi
Tahoe’nun bu konudaki en çarpıcı değişikliği, Spotlight’a bir Pano görünümünün eklenmesi. Spotlight’ı açıp bu görünüme geçtiğinizde (Apple’ın yeni Spotlight kategorileri için belirlediği kısayol seti panoyu ⌘4‘e atıyor ) son kopyalarınıza göz atabilir ve birini geri yapıştırabilirsiniz. Apple bu geçmişi kısa ömürlü olarak tanımlıyor; yalnızca yaklaşık sekiz saat geriye gidiyor .
Bu, Spotlight’ı «bir saat önce kopyalamıştım» durumları için makul bir güvenlik ağı yapıyor. Belirtilen tasarımına bakılırsa uzun vadeli bir arşiv değil: haftalık eski parçacıklar, sabitlenmiş favoriler ve özel araçların sunduğu türden uygulama bazlı yok sayma kuralları yok .
Pano okumalarında daha sıkı gizlilik
Apple, programatik pano okumalarını kullanıcıya görünür kılmaya doğru ilerliyor. Temeli, geliştiriciler için yeni pasteboard erişim davranışı API’leri olarak atıldı; yön ise bir uygulama kullanıcının yapıştırma eylemi olmadan panoyu okuduğunda iOS tarzı bir uyarı gösterilmesi. Tahoe’nun bunu sıradan üçüncü taraf uygulamalar için ne kadar katı uyguladığını ve kullanıcının hangi ayarı gördüğünü, güvenmeden önce bir Tahoe makinesinde doğrulamanızı öneririm . Pano yöneticileri için bu önemli, çünkü onların bütün işi panoyu arka planda okumak; Tahoe’daki izinler için her uygulamanın kendi belgelerine bakın.
Pano Mac ile iPhone arasında senkronize olur mu?
Evet, Evrensel Pano (Universal Clipboard) sayesinde. Continuity’nin bir parçasıdır: iki cihazda da aynı Apple Hesabı ile oturum açın, Handoff’u etkinleştirin, Bluetooth ve Wi-Fi’ı açık tutun ve cihazları birbirine yakın bulundurun. Bir cihazda kopyalayın, diğerinde yapıştırın. Aktarılan içerik yalnızca kısa bir süre için kullanılabilir; yani senkronize bir geçmiş gibi değil, bir devir teslim (handoff) gibi davranır. Ayrıca tek öğelidir: her yeni kopya öncekinin yerini alır.
Çalışmayı bırakırsa olağan sebepler Handoff’un kapalı olması, Bluetooth’un devre dışı kalması ya da cihazların farklı Apple Hesaplarında olmasıdır. Handoff’u kapatıp açmak klasik ilk çözümdür.
Neler gizli kalır, neler kalmaz?
Pano, okumasına izin verilen her uygulama tarafından okunabilir. Kopya başına şifreleme yoktur. Bu yüzden topluluk bir gelenek oluşturdu: hassas veri kopyalayan uygulamalar, nspasteboard.org’da belgelenen özel pasteboard türleriyle bunu işaretler; örneğin org.nspasteboard.ConcealedType (parolalar) ve org.nspasteboard.TransientType (kısa ömürlü içerik). Parola yöneticileri bunları genellikle ayarlar, düzgün davranan pano yöneticileri de bunları taşıyan her şeyi atlar.
Maccy bu geleneğe uyar. Ayarlarında, Ignore (Yok Say) bölümünde, yok sayılan pasteboard türlerinin listesini görüntüleyip düzenleyebilir ve belirli uygulamaları tamamen yok sayabilirsiniz . Dürüstçe iki uyarı: işaretler bir gelenektir, bir zorlama mekanizması değildir; dolayısıyla bunları ayarlamayan bir uygulama verisini ortada bırakır ve kopyaladığınız her şey, üzerine yazılana kadar panoyu okuma iznine sahip her uygulama tarafından görülebilir.
Yerleşik pano mu, pano yöneticisi mi?
| Yerleşik pano (pasteboard) | Spotlight geçmişi (Tahoe) | Özel yönetici (ör. Maccy) | |
|---|---|---|---|
| Tutulan öğe | Bir | Yalnızca son öğeler, kabaca saatler | Yapılandırılabilir geçmiş |
| Arama | Yok | Spotlight üzerinden | Var, yazarak filtreleme |
| Hassas uygulama/türleri yok sayma | Geçerli değil | Var | |
| Diskte saklama | Hayır | Mac’inizde yerel olarak | |
| Maliyet | Dahil | Dahil | Maccy: ücretsiz ve açık kaynak |
Yalnızca ara sıra yakın zamandaki bir kopyayı kurtarmanız gerekiyorsa Spotlight’ın geçmişi tek ihtiyacınız olabilir. Her gün aynı parçacık kümesinden yapıştırıyorsanız ya da hassas uygulama istisnaları ve daha uzun bir geçmiş istiyorsanız, özel bir yönetici yerini hak eder. Maccy App menü çubuğundan çalışır, varsayılan olarak ⇧⌘C ile açılır ve klavye öncelikli filtreleme etrafında kurgulanmıştır . Hangi yolu seçerseniz seçin, yukarıdaki her şey geçerli kalır, çünkü her araç aynı pasteboard’un üzerinde durur.
Sorun giderme: pano bozulduğunda
- Yapıştırma hiçbir şey yapmıyor ya da eski içeriği yapıştırıyor. Durumu sıfırlamak için düz metin bir alandan önemsiz bir şey kopyalayın, sonra tekrar deneyin. Sorun sürerse yapıştırdığınız uygulamayı yeniden başlatın.
- Biçimlendirme peşinizi bırakmıyor. Yapıştır ve Stili Eşleştir’i (⌥⇧⌘V) kullanın.
- Dosya kopyaladınız, yolunu aldınız (ya da tersi). Uygulama, beklediğinizden farklı bir temsili seçiyor. Panoda ne olduğunu
osascript -e 'clipboard info'ile kontrol edin. - Evrensel Pano tutarsız çalışıyor. Aynı Apple Hesabını, açık Handoff’u, Bluetooth’u ve Wi-Fi’ı doğrulayın.
- Son çare. Oturumu kapatıp açın ya da yeniden başlatın. Pasteboard servisi sistem tarafından yönetilir ve oturumunuzla birlikte yeniden başlar.
Akılda tutulacak zihinsel model
Kopyalamak, bir biçim demetini yayımlar ve bir sayacı artırır. Yapıştırmak, hedef uygulamanın bu demetten seçim yapmasıdır. Geçmiş, senkronizasyon ve gizlilik dahil geri kalan her şey bu basit temelin üzerine kurulur. Demeti clipboard info ile görebildiğiniz anda, pano gizemlerinin çoğu gizem olmaktan çıkar.
Hangi yapıştırma sürprizi sizi en çok rahatsız ediyor: kaybolan biçimlendirme, kaybolan geçmiş ya da başka bir şey? Bize yazın, bir sonraki rehberimiz olabilir.