Genellikle bu sayfalarda Apple teknolojilerinin kurumsal dünyada kullanım senaryolarına uygun çözümler üzerine yazıyorum. Ve doğal olarak da son kullanıcıyı ilgilendirebilecek konulara çok da fazla değinmiyorum. Ama bir süredir yaşadığım bir soruna çözüm, can ciğer dostum tarafından geliştirilmiş native bir Mac uygulaması olarak gelince bir istisna yapmaya karar verdim.

Use Case örnekleri
Uygulamanın ismine cismine geçmeden önce çözdüğü sorunu tarif ederek başlamak istiyorum. Tüm işlerimi MacBook Pro bilgisayarımda yapıyorum. Ve çalışma ortamımda iken bilgisayarımı harici bir monitöre HDMI portu üzerinden bağlayarak çalışma alanımı genişletiyorum.
Çalışma ortamım dışında, örneğin on-site bir danışmanlıkta veya bir eğitimde iken bazen sadece MacBook Pro‘nun ekranı ile çalışıyorum. Bazen de yanımda iPad‘imi de taşıyıp onu Mac’ime ikinci monitör olarak ekliyorum.
Sadece Mac, Mac + harici monitör, Mac + iPad kullanımlarının tamamında kullandığım ekran çözünürlükleri değişebiliyor. Ve buna bağlı olarak da masaüstündeki ikonlarımın yerleri de öyle. Ben istiyorum ki, MacBook Pro’yu tek başına kullanıyorken de harici bir monitöre bağladığım zaman da ikonlarım aynı yerde kalsınlar.
Hatta bununla da kalmayıp, bütün bu farklı ekran kullanımları ve ekran çözünürlüğü farklılıklarında bile uygulamaların hep ekranın aynı yerinde açılmasını da istiyorum. Bunu bir örnek ile anlatayım. Örneğin Settings Blog için yazı yazarken ekranımda WordPress‘in Web App’ini, yazdığım konu ile ilgili araştırma yapmak için Safari‘yi, yazıların Medium‘da yayınladığım İngilizce versiyonları için DeepL gibi bir çeviri yazılımını aynı anda kullanabiliyorum. Bu açık uygulamalar için pencere yerleşimlerini ayarlayıp bazılarını ekranımın sağına, bazılarını soluna alabilirim elbette. Ama istiyorum ki, bu uygulamalara ait pencereler her farklı monitör kullanımımda aynı kalsın. Örneğin, ben sadece MacBook Pro‘nun ekranı ile çalışırken de, harici monitöre veya iPad‘e bağladığım kullanımlarda da WordPress uygulamasının yeri hep aynı kalsın.
macOS‘a window tiling özelliği Sequoia sonrasında geldi. Ama benim yukarıda anlattığım Use Case’lerin hiçbirinin sistemin standart window tiling özelliğinde birer karşılığı bulunmuyor.
Settle ile tanışın
Bütün bu dertlerimi çözecek uygulamanın ismi Settle. Geliştiricisi ise 20 küsür yıllık dostum Gökhan Gökova. Settle uygulamasını bu adresten indirebilirsiniz. 7 gün için ücretsiz olarak deneyebilirsiniz. Sonrasında ise eski usül Shareware lisanslama modelinde olduğu gibi uygun fiyatlı tek bir satın alma ile kullanılabilir. Hayır, abonelik gerektirmiyor. Gerçekten… Ne acayip değil mi, şu dönemde.

Settle uygulamasını açtığınızda Layouts menüsü üzerinden farklı kullanım senaryolarınız için pencere konumlarını kaydedebileceğiniz Workspace‘ler oluşturabilirsiniz. Ben yukarıda yazdıklarıma paralel olarak üç adet Workspace oluşturdum: Mac, Mac + Monitör ve Mac + iPad şeklinde…

Her bir workspace içine de istediğiniz kadar pencere yerleşimini (Layout) kaydedebilir, bu yerleşimlere istediğiniz gibi isimler verebilirsiniz.
Uygulamanın bir menu bar eklentisi de bulunuyor. Yani siz bir kere Workspace ve Layout‘ları oluşturduktan sonra bunlar arasındaki geçişleri yapmak için her seferinde uygulamanın ana ekranını açmak yerine menu bar eklentisini de kullanabilirsiniz.

Uygulamanın ikinci sekmesi olan Automation başlığı altındaki Monitor Detection özelliği harici monitör ile çözünürlüğünün değiştiği durumlarda ekrandaki ikonların aynı yerlerinde kalmasını sağlıyor. Bunu eğer isterseniz önceden belirlediğiniz bir Workspace‘e bağlayarak da kullanabiliyorsunuz.

Aynı sekmede bulunan Time Based seçeneği ile belirli zaman aralıkları için farklı ekran kurallarının uygulanmasını sağlayabilirsiniz. Sabah 9:00 ile akşam 18:00 arası şu kurallar geçerli olsun, bu saatler dışında da şu kurallar geçerli olsun diyebiliyorsunuz. Hatta Pomodoro çalışma tekniğine uygun olarak 45 dakika çalışma ve 15 dakika Call of Duty gibi bir ayrım da yapabilirsiniz.
App Rules seçeneği ise örneğin, Spotify uygulamasının her açılışta nereye konumlanacağı ile ilgili bir kural yazmak istediğiniz senaryo için kullanılabilir.
Diğer tüm ayarları ve seçenekleri burada anlatmayayım, Gökhan bir video oluşturarak Youtube’a yüklemiş. Buyurun ondan dinleyin.
Uygulamayı MDM ile dağıtabiliyor muyuz?
Evet, tabi ki. Settle uygulamasını kullandığınız MDM çözümü ile dağıtmak isterseniz bir DMG dosya olarak kullanıcılarınıza gönderebilirsiniz. Uygulama sadece Accessibility izni istiyor. Bu izni de PPPC ayarlarını konfigüre ederek otomatik olarak verebilirsiniz.
Hatta siz uğraşmayın, ben sizin için bir mobileconfig dosyası oluşturdum. Aşağıdaki XML kodunu kopyalayıp bir Plain Text dosyasına yapıştırıp dosya uzantısını .mobileconfig yaparak dağıtabilir ve Accessibility iznini verebilirsiniz.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadDescription</key>
<string>settle_accessibility</string>
<key>PayloadDisplayName</key>
<string>settle_accessibility</string>
<key>PayloadIdentifier</key>
<string>F4E15405-15CA-4A55-B6B5-293E6CD93570</string>
<key>PayloadOrganization</key>
<string>Settle</string>
<key>PayloadType</key>
<string>com.apple.TCC.configuration-profile-policy</string>
<key>PayloadUUID</key>
<string>F744A57A-163B-417D-9BED-E427051E2330</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>Services</key>
<dict>
<key>Accessibility</key>
<array>
<dict>
<key>Authorization</key>
<string>Allow</string>
<key>CodeRequirement</key>
<string>identifier "com.gokhangokova.settle" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = "64K5VWNKN6"</string>
<key>Comment</key>
<string></string>
<key>Identifier</key>
<string>com.gokhangokova.settle</string>
<key>IdentifierType</key>
<string>bundleID</string>
</dict>
</array>
</dict>
</dict>
</array>
<key>PayloadDescription</key>
<string>settle_accessibility</string>
<key>PayloadDisplayName</key>
<string>settle_accessibility</string>
<key>PayloadIdentifier</key>
<string>F4E15405-15CA-4A55-B6B5-293E6CD93570</string>
<key>PayloadOrganization</key>
<string>Settle</string>
<key>PayloadScope</key>
<string>System</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>05E895FA-AC24-47FB-9A68-242B92B5C363</string>
<key>PayloadVersion</key>
<integer>1</integer>
</dict>
</plist>
Bir Cevap Yazın