- AeroSpace, macOS'te i3 benzeri bir kullanım sunan, beta aşamasındaki bir döşemeli pencere yöneticisidir; ağaç tabanlı yerleşim ve klavye odaklı iş akışını hedefler
- macOS'in varsayılan Spaces yapısına bağlı kalmaz; kendi sanal çalışma alanı emülasyonunu kullanır, animasyonsuz hızlı çalışma alanı geçişleri sunar ve SIP devre dışı bırakılmadan çalışacak şekilde tasarlanmıştır
- Yapılandırma, düz metin TOML tabanlıdır ve CLI öncelikli bir tasarıma sahiptir; manpage ve kabuk otomatik tamamlama içerir, çoklu monitör desteğini de i3'e benzer bir paradigma ile sunar
- Şu anda Public Beta durumundadır; günlük kullanım mümkündür ancak 1.0 öncesinde breaking change beklenmelidir, ayrıca 1.0 öncesinde büyük refaktör, shell tarzı bileştiriciler ve global kısayol API araştırması gibi işler hâlâ durmaktadır
- Projenin değerleri ileri düzey kullanıcılar ve geliştiriciler, klavye odaklı kullanım, pratik özellikler ve herkese açık erişilebilirlik API'leri etrafında şekillenir; GUI yapılandırması, macOS Spaces ile uyum ve ricing ise düşük önceliklidir
AeroSpace'in sunduğu macOS döşemeli ortamı
- AeroSpace, macOS için i3 benzeri bir döşemeli pencere yöneticisidir
- Demo ve dokümantasyon ayrı olarak sunulmaktadır
Temel özellikler ve tasarım
- Pencere yerleşimi, ağaç paradigması tabanlı bir döşemeli pencere yöneticisi olarak kurgulanmıştır
- Kullanım deneyimi i3'ten ilham alır
- Çalışma alanı geçişleri animasyonsuz ve hızlıdır; SIP'in devre dışı bırakılması gerekmez
- macOS'in varsayılan Spaces sistemi ciddi kısıtlar taşıdığı için kullanılmaz; AeroSpace bunun yerine kendi sanal çalışma alanlarını emüle eder
- Yapılandırma, dotfiles kullanımına uygun düz metin biçimindedir; varsayılan yapılandırma örneği default-config.toml içinde görülebilir
- CLI öncelikli tasarıma sahiptir ve manpage ile kabuk otomatik tamamlamayı içerir
- Çoklu monitör desteği, i3'e benzer bir paradigma ile sunulur
Kurulum ve güvenlikle ilgili koşullar
- Önerilen kurulum yöntemi Homebrew cask'tir ve otomatik güncellemeler alınabilir
brew install --cask nikitabobko/tap/aerospace
- Çoklu monitör ortamında monitörlerin doğru şekilde yerleştirildiğinden emin olunmalıdır
- Diğer kurulum yöntemleri kurulum rehberinde yer alır
- AeroSpace notarized değildir
- Homebrew kurulum betiği,
com.apple.quarantine özniteliğini otomatik olarak kaldıracak şekilde yapılandırılmıştır
- Bu sayede uygulamanın “Apple cannot check AeroSpace for malicious software” uyarısı olmadan doğrudan çalışması gerekir
Proje durumu ve 1.0 öncesi çalışmalar
- Mevcut durum Public Beta'dır
- Günlük kullanım mümkündür, ancak 1.0'a ulaşmadan önce breaking change beklenmelidir
- 1.0 sürümünü engelleyen işler arasında şunlar yer alır
- Performans sorunu: macOS'in blocking AX API'sini aşmak için uygulama başına thread uygulaması tamamlanmıştır
- Büyük refaktör: mutable double-linked core tree veri yapısının immutable single-linked persistent tree olarak yeniden yazılması
- Kararlılık ve potansiyel performans açısından önemlidir
- Pencerelerin odaktaki çalışma alanına rastgele taşınabilmesine yol açan kararlılık sorununu düzeltmeye yardımcı olur
- macOS native tabs desteğine yardımcı olur
- Shell tarzı bileştiricilerin uygulanması
||, &&, ; ve birden fazla komutu tek seferde gönderen eval komutunu getiren minimal yaklaşım olası görünmektedir
- Global kısayollar için
CGEvent.tapCreate API'sinin kullanılma ihtimalinin araştırılması
- Sol ve sağ modifier tuşlarını ayırt etmek mümkün olabilir de olmayabilir de
- 1.0 sonrasına planlanan büyük başlıklar arasında sticky windows ve Dynamic TWM bulunur
Proje değerleri ve hedef dışı konular
- AeroSpace, ileri düzey kullanıcıları ve geliştiricileri hedefler
- Klavye odaklı kullanımı amaçlar
- Yapılandırma dosyası, CLI ve davranıştaki breaking change'lerden mümkün olduğunca kaçınılır, ancak yazılımın durağanlaşmasını önlemek için dikkatli breaking change'ler olabilir
- 1.0 sonrasında, breaking change olduğunda Semver major sürümünün artırılması garanti edilir
- 1.0 öncesinde ise breaking change'ler doğrudan gerçekleşebilir
- GUI, gerçekten gerekli olmadıkça kullanılmaz
- Yapılandırma için GUI sunma planı yoktur
- Görsel geri bildirim için durum menüsü simgesine izin verilir
- Özellikler pratiklik ölçütüne göre değerlendirilir; pencere kenarlıkları, saydamlık ve animasyon gibi görsel özellikler pratik özellik sayılmaz
- private API, kod enjeksiyonu gibi “dark magic” yöntemlerinden mümkün olduğunca kaçınılır
- Şu anda erişilebilirlik nesnesinin window ID'sini almak için yalnızca
_AXUIElementGetWindow private API'si kullanılmaktadır
- Bunun dışında macOS'in herkese açık accessibility API'leri kullanılır
- SIP'in devre dışı bırakılması gerekmez
- Amaç, macOS güncellemelerine dayanıklı ve bakımı kolay bir yapı sunmaktır
- Mevcut macOS özellikleriyle iyi uyum sağlamak bir hedef değildir
- macOS Spaces'in varlığı kabul edilmez; bunun yerine kendi çalışma alanı emülasyonu kullanılır
- ricing düşük önceliklidir
- Yalnızca gaps ve bar entegrasyonu için birkaç callback asgari düzeyde desteklenir
- Mevcut maintainer ricing ile ilgilenmemektedir; ilgili issue'ların çoğu düşük öncelikli ya da görmezden gelinmektedir
- Daha fazla maintainer gelirse ricing konusundaki tutum değişebilir
Uyumluluk, topluluk ve ilgili projeler
- macOS uyumluluğu derleme yöntemine göre değişir
- AeroSpace ikilisini çalıştırma: macOS 13+
- Kaynaktan debug build: macOS 14+
- Kaynaktan release build: macOS 15+, Xcode 26+ gerekir
- Issue'lar doğrudan kabul edilmez; önce Discussion açılması istenir
- GitHub Discussions içinde genel, duyurular, sürüm duyuruları, özellik fikirleri, genel, olası hatalar ve soru-cevap kanalları bulunur
- İlgili projeler olarak şunlar gösterilir
- Amethyst: xmonad tarzı döşemeli pencere yöneticisi
- InstantSpaceSwitcher: yapay olarak çok yüksek hızlı trackpad hareketleri sentezleyerek anında space geçişi sağlar
- yabai: binary space partitioning tabanlı macOS döşemeli pencere yöneticisi
1 yorum
Hacker News yorumları
Bunu her gün kullanıyorum; vardığım sonuç şu: Mac’te pencereleri yönetmenin en iyi yolu, ama i3/sway seviyesinde değil
Özellikle pencereleri birbirlerine göre konumlarına sürükleyerek yeniden yerleştirme desteği çok sınırlı; bu yüzden sway’deki gibi yeni dikey/yatay bölmeler oluşturamıyorsunuz. Dolayısıyla istediğiniz pencere düzenini oluşturmak için çoğu zaman klavye komutlarıyla dolambaçlı yollara başvurmak gerekiyor
Örneğin iki pencere yan yana dururken bir tarafı dikey olarak bölmek istediğinizde, sway’de yeni pencereyi açıp mevcut pencerenin üst/alt yarısına sürükleyip bırakmanız yeterli. AeroSpace’te bulduğum en iyi yol, yeni pencereyi açıp üç pencerenin hepsini dikey stack’e çevirdikten sonra, başlangıçta solda olan pencereye odaklanıp
move leftçalıştırmaktıNormalizasyon (normalization) açıksa “dikey stack’e geçme” adımına gerek yok
Bu düzende:
h_tiles
├── window1 (focused)
├── window2
└── window3
move leftçalıştırınca şöyle olur:h_tiles
├── window1 (focused)
└── v_tiles
├── window2
└── window3
sway’de pencereleri sürükleyip bırakabildiğinizi de bilmiyordum. Ben bölmek istediğim pencereyi seçip
Command + vile dikey bölmeyi ayarlıyor, ardından genelde terminal olan yeni bir pencere oluşturuyorumYa da
Command + Shift + [hjkl]ile pencereyi taşıyorumÖnce benim ana sorunum çözülüyor mu diye denemeyi düşünüyorum. Mac’te ekran düzenini hatırlamayı makul şekilde yapan bir yol arıyorum
Her açılıştan sonra uyandığında, 3 ekran kullanan masaüstüm tamamen hafızasını kaybetmiş oluyor
İdeal olarak çalışma alanlarını kendim yönetebilmek; yalnızca dizüstü ekranını kullanırken de, işte/evde farklı masalarda 2-3 harici monitör kullanırken de bunu sürdürebilmek isterim
Spectacle kullanıyorum ama artık desteklenmiyor
Bunu denemedim ama yabai kullanıyorum; anlattığınızla tam olarak aynı şekilde çalışıyor
SIPyi kapatmak gerekmemesi çok ilginç. Benzer pencere yöneticilerinin fiilen hepsi SIP’yi devre dışı bırakmayı gerektirdiği için çekiniyordumAeroSpace’in SIP ile birlikte çalışabilmek için neyi farklı yaptığını merak ediyorum
README’de bulduğum kısım:
AeroSpace, SIP’yi (System Integrity Protection) kapatmanızı istemez. Örneğin yabai, bazı özellikleri kullanmak için SIP’yi kapatmanızı ister. AeroSpace ya başka bir yol bulur, örneğin çalışma alanlarını emüle eder, ya da o özelliği hiç uygulamaz. Pencere saydamlığı ve pencere gölgeleri pratik özellikler değildir
Ancak yabai’nin odağın fareyi takip etmesi özelliği gerçekten hoşuma gidiyor; AeroSpace’e i3 benzeri işleri yaptırırken yabai’yi yalnızca bu özellik için kullanmanın mümkün olup olmadığını merak ediyorum
Harika. Şimdiye kadar Amethyst kullanıyordum ama AeroSpace’i hemen daha çok sevdim
Amethyst’te en rahatsız olduğum şey, pencereleri çok hantal ve kararsız şekilde fırlatması. AeroSpace’te pencereler başka çalışma alanına/monitöre anında taşınıyor ve başarısız olmuyor
macOS’in yerleşik çalışma alanlarını tamamen bırakıp kendi sanal çalışma alanlarını kullanması da hoşuma gidiyor. Yazarın dediği gibi yerleşik yöntem epey tatmin edici değil; bu yaklaşım sayesinde çoklu monitör kurulumunu katlanılır ve biraz da keyifli hale getirmek mümkün oluyor
İş bilgisayarımda SIP’yi devre dışı bırakmak gerektiği için yabai kullanamıyordum; AeroSpace’in yazarı buna açıkça karşı çıkıyor ve bu karar makul görünüyor
Linux kullandığım dönemde i3’ten xmonad’a geçmiştim ama macOS’te AeroSpace kesinlikle daha iyi hissettiriyor. macOS’teki üç pencere yöneticisinin hiçbiri Linux’taki gerçek pencere yöneticilerinin seviyesinde değil; yine de AeroSpace, mümkün olan sınırlar içinde en iyiye yakın görünüyor
Sahte Spaces yaklaşımını sevdim
Pencereleri küçülterek benzer bir şey yapmayı düşünmüştüm ama gerçekten yapmamıştım
macOS’te API eksikliği yüzünden tiling kaçınılmaz olarak can sıkıcı hale geliyor. Yine de bu muhtemelen en performanslı yaklaşım
yabai’yi denedim ama yalnızca pencere taşıma ve odağın fareyi takip etmesi için kullandım, tiling için kullanmadım. Bunun nedeni kararsız olmasıydı; yabai’nin suçu değil
nikitabobko’ya teşekkürler
Şimdi tek yapmam gereken, tüm sahte çalışma alanlarındaki pencereler köşede toplanmışken alt-tab’in bunları yok saymasını sağlayacak bir düzeltme yolu bulmak; onu bulursam hemen deneyeceğim
Belgelerde bağlantısı verilen JankyBorders da iyi
https://github.com/koekeishiya/yabai
https://github.com/lwouis/alt-tab-macos
https://github.com/FelixKratz/JankyBorders
alt+h/alt+jile pencereler arasında geçerek çözüyorumCommand+Tabgenel pencere geçişi; yukarıdaki kısayollar ise çalışma alanı bağlamındaki yerel geçiş içinRaycast’in pencere yönetim aracına bir ölçüde alıştım ama AeroSpace ile fiilen birlikte kullanmak zor
Örneğin Raycast’te
reasonable sizeseçeneğiyle pencereyi makul bir boyutta açıp ortaya yerleştirebiliyorsunuz. Sol yarı/sağ yarı olarak bölme oluşturmak, maksimize etmek ya da 4 çeyrek/3 bölmeli düzenler de mümkünAma AeroSpace’te bir tile içindeki pencereyi sol yarıya, sağ yarıya, sol 2/3’e taşımaya ya da
reasonable sizeile floating yapmaya çalıştığınızda çalışmıyorAyrıca “next desktop” ve “previous desktop” ile uygulama taşırken bir hata var. AeroSpace, Mac’in birden çok masaüstünü kendi çalışma alanı olarak uyguluyor gibi; bu yüzden video rehberi aslında farklı masaüstleri arasında geçişi değil, farklı çalışma alanları arasında geçişi gösteriyor
Sonuç olarak “next desktop” ve “previous desktop” kullanınca döşeme düzeni tamamen bozuluyor. Çalışma alanları Mac’in her bir masaüstüne doğrudan bağlı olup çalışma alanı taşımak masaüstü taşımak anlamına gelseydi, Raycast ve yerleşik macOS özellikleriyle de bir ölçüde uyumlu olurdu; yazık
Raycast gerçekten çok iyi
İleride Mac power user’ları için standart uygulama gibi yerleşeceğini düşünüyorum
Yararlı özelliği o kadar çok ki doğru düzgün kurcalamak gerek. Ben en çok Linear.app entegrasyonunu kullanıyorum
Son 5 macOS sürümü boyunca iş bilgisayarımda SIP’yi kapatmadan yabai’yi epey kullandım
Gerçekten seviyorum ve döşeme düzeni ancak birkaç günde bir civarı kararsızlaşıyor. yabai komutunu en az dakikada bir çalıştırıyor olsam da durum böyle; bu yüzden
yabai --restart-servicekomutunu bir kısayola bağladım, çalıştırınca her zaman hemen geri geliyorBu yüzden oldukça kararlı ve harika olduğunu düşünüyorum. Çoklu monitör zor ve pek kullanmıyorum ama stack’ler ve hızlı “tam ekran” tarzı küçültme gerçekten iyi
Bazı sürüm yükseltmelerinde şirket antivirüsü bunu virüs olarak görüp 24 saat devre dışı bırakıyor; o gün bilgisayarı kullanmak istemeyecek kadar hantal ve moral bozucu geliyor
Birkaç aydır deniyorum. i3 neredeyse kusursuz; AeroSpace iyi bir deneme ama i3’ten epey uzak ve oldukça kararsız
Muhtemelen Mac OS X’in Unix pencere yöneticileri gibi tam denetime izin vermemesinden kaynaklanıyor
Yine de daha iyisini henüz bulamadım. Apple Silicon’da Linux düzgün çalışır hâle gelince kuracağım. En azından benim için sırf i3 bile Linux kullanmak için yeterli sebep; Mac OS X pencere yöneticisi açısından gerçekten çok kötü
Bir hobi projesi olarak buna yakın bir alana biraz dokunmuştum; sebebi resmi API’nin sınırlı olması
Sonunda belgelenmemiş özel API’lere ve hack’lere çok bağımlı kalıyorsunuz. Bunlar dahili kullanım için olduğundan kararsız; işletim sisteminin kendisi de pencere/süreç yönetimine büyük müdahalelerin olduğu durumlarda iyi işbirliği yapacak şekilde tasarlanmamış. Bu yüzden işletim sistemiyle üçüncü taraf uygulamalar sık sık birbirinin ayağına basıyor
Aynı sorun var. Henüz OSX’in yerel tam ekran modunu düzgün ele alan bir pencere yöneticisi bulamadım
AeroSpace yerel tam ekranı kullanınca ne yapacağını şaşırıyor. Odağı nereye vermesi gerektiğini karıştırıyor
Benim durumda:
Workspace 1: terminal
Workspace 2: slack app
Open chrome in native full screen
Şimdi workspace 1’e geçmeyi deneyince sorun çıkıyor
Bir süre yerel tam ekran uygulamalar olmadan kullanmayı düşünüyorum. O zaman daha iyi çalışmasını umuyorum
Bu ürün ile Yabai arasındaki kullanıcı deneyimi farkını merak ediyorum. Yabai’nin SIP meselesinin büyük bir sorun olduğunu düşünmüyorum. Bildiğim Yabai kullanıcıları arasında SIP’yi kapatan yok; hepsi de sorunsuz kullanıyor gibi
Farkın i3 tarzı olup olmadığını merak ediyorum
Kişisel olarak, Fluxbox gibi bir yardımcı tuş kombinasyonunu basılı tutarken pencerenin herhangi bir yerinden fareyle yeniden boyutlandırma ve taşıma yapmayı sağlayan bir yardımcı araç kullanıyorum. Otomatik değil ama kararsız da değil. Tamamen yönetilen bir düzene geçmekten ziyade, fare hareketini azaltıp floating’i çok daha kolaylaştırmaya yakın
İkisini de çok kullandım ve ben AeroSpace’i daha çok seviyorum
Benim için belirleyici olan çoklu monitör desteği; bunun dışında da küçük avantajları var
Yabai’de bir çalışma alanını yeni bir monitöre taşıyınca ID’si değişiyor, bu yüzden klavye kısayoluyla ona erişmeye devam edemiyorsunuz.
alt+2’nin bozulmasının nedeni artık workspace 2 olmaması, 11 ya da başka bir numara hâline gelmesi. AeroSpace’tealt+mvealt+shift+mile çalışma alanını monitörler arasında kolayca taşıyabiliyorsunuzBir başka özellik de pencerelerin Mission Control animasyonu olmadan anında yerleşmesi. Bu gerçekten çok canımı sıkan bir konuydu
Neredeyse her gün ihtiyaç duyduğum iki özellik bunlar; çalışma alanı desteği yetersiz olduğu için Yabai benim için neredeyse tamamen kullanılamaz bir şey
Yabai’de Spaces’ı herhangi bir şekilde ele almak, pencerelerin yığılma sırasını değiştirmek ya da bunun dışındaki birçok özelliği kullanmak istiyorsanız SIP’yi kapatmanız gerekiyor [0]
Bu özellikleri kullanmıyorsanız tercih size kalmış, ama birçok kullanıcı için bunlar temel özellikler
[0] https://github.com/koekeishiya/yabai/wiki/Disabling-System-I...
Amethyst’ten ne farkı olduğunu merak ediyorum. Amethyst son zamanlarda çok daha kararlı hâle geldi ve keyifle kullanıyorum
Metin tabanlı yapılandırma ilk izlenim olarak epey iyi görünüyor, ama geçmeye değer mi emin değilim
Şimdiye kadar Amethyst kullanıyordum ama AeroSpace’i hemen daha çok sevdim
Amethyst’te en çok şikâyet ettiğim şey, pencereleri çok hantal ve kararsız şekilde fırlatması. AeroSpace’te pencereler başka bir çalışma alanına/monitöre göz açıp kapayıncaya kadar taşınıyor ve başarısız olmuyor
macOS’un yerleşik çalışma alanlarını tamamen bırakıp kendi sanal çalışma alanlarını kullanması da hoşuma gidiyor. Bu sayede çoklu monitör kurulumuyla başa çıkmak katlanılabilir ve biraz da keyifli hâle geliyor
Linux döneminde i3’ten xmonad’a geçmiştim ama macOS’te AeroSpace kesinlikle daha iyi hissettiriyor. macOS’teki üç pencere yöneticisinin hiçbiri Linux’taki gerçek pencere yöneticilerinin yanına yaklaşamıyor, ama AeroSpace mümkün olan sınırlar içinde en iyisine yakın görünüyor
Benim deneyimime göre AeroSpace çoğu açıdan çok daha iyi
Birkaç tuhaf yanı var ve birkaç bug raporu açmam gerekecek, ama macOS’i Amethyst’e göre çok daha katlanılır hâle getirdi
Amethyst’te de metin tabanlı yapılandırma yapılabiliyor
https://github.com/ianyh/Amethyst/blob/development/docs/conf...
Son birkaç aydır bunu kullanıyorum ve genel olarak hoşuma gidiyor. Tamamının tek bir dosyayla yapılandırılması, yani GUI olmaması hoşuma gidiyor
Tek sorun, bir uygulama Mac’in yerleşik sekmelerini kullandığında AeroSpace’in her sekmeyi bir pencere olarak ele alması ve bunun tam ekran işlevini tamamen bozması. Alacritty buna bir örnek; epey garip
Bununla ilgili açık bir issue var:
https://github.com/nikitabobko/AeroSpace/issues/68