- AeroSpace adalah window manager tiling tahap beta untuk macOS yang menawarkan cara penggunaan mirip i3, dengan orientasi pada tata letak berbasis tree dan alur kerja yang berpusat pada keyboard
- Tidak bergantung pada Spaces bawaan macOS, melainkan menggunakan emulasi workspace virtual sendiri; menonjolkan perpindahan workspace cepat tanpa animasi dan konfigurasi yang berjalan tanpa perlu menonaktifkan SIP
- Konfigurasi berbasis TOML teks polos, dirancang mengutamakan CLI, mencakup manpage dan shell completion, serta mendukung multi-monitor dengan paradigma yang mirip i3
- Saat ini berstatus Public Beta dan sudah dapat digunakan sehari-hari, tetapi breaking change diperkirakan masih terjadi sebelum 1.0; sebelum 1.0 masih tersisa refactoring besar, kombinator bergaya shell, riset API shortcut global, dan lainnya
- Nilai proyek berfokus pada power user dan developer, penggunaan berbasis keyboard, fitur praktis, serta pemeliharaan yang berpusat pada accessibility API publik; GUI untuk konfigurasi, keselarasan dengan macOS Spaces, dan ricing bukan prioritas tinggi
Lingkungan tiling macOS yang disediakan AeroSpace
- AeroSpace adalah window manager tiling mirip i3 untuk macOS
- Demo dan dokumentasi tersedia secara terpisah
Fitur inti dan desain
- Penataan window disusun sebagai window manager tiling berbasis paradigma tree
- Pengalaman pengguna terinspirasi dari i3
- Perpindahan workspace berjalan cepat tanpa animasi, dan tidak memerlukan penonaktifan SIP
- Spaces bawaan macOS memiliki banyak batasan sehingga tidak digunakan; AeroSpace mengemulasikan workspace virtual sendiri
- Konfigurasi menggunakan teks polos yang cocok untuk dotfiles, dan contoh konfigurasi dasar dapat dilihat di default-config.toml
- Dirancang mengutamakan CLI serta mencakup manpage dan shell completion
- Multi-monitor didukung dengan paradigma yang mirip i3
Instalasi dan ketentuan terkait keamanan
- Metode instalasi yang direkomendasikan adalah Homebrew cask, dengan dukungan pembaruan otomatis
brew install --cask nikitabobko/tap/aerospace
- Pada lingkungan multi-monitor, perlu dipastikan monitor tersusun dengan benar
- Metode instalasi lain tersedia di panduan instalasi
- AeroSpace belum berstatus notarized
- Skrip instalasi Homebrew dikonfigurasi untuk otomatis menghapus atribut
com.apple.quarantine
- Karena konfigurasi ini, aplikasi seharusnya langsung berjalan tanpa peringatan “Apple cannot check AeroSpace for malicious software”
Status proyek dan pekerjaan sebelum 1.0
- Status saat ini adalah Public Beta
- Dapat digunakan untuk pemakaian sehari-hari, tetapi breaking change harus diperkirakan sampai mencapai 1.0
- Pekerjaan yang masih menghalangi rilis 1.0 meliputi hal-hal berikut
- Isu performa: pekerjaan untuk mengimplementasikan thread per application demi menghindari blocking AX API macOS telah selesai
- Refactoring besar: menulis ulang struktur data mutable double-linked core tree menjadi immutable single-linked persistent tree
- Penting untuk stabilitas dan potensi performa
- Membantu memperbaiki isu stabilitas yang dapat menyebabkan window berpindah secara acak ke workspace yang sedang fokus
- Membantu dukungan macOS native tabs
- Implementasi kombinator bergaya shell
- Pendekatan minimal yang kemungkinan kuat adalah memperkenalkan
||, &&, ;, serta perintah eval untuk mengirim beberapa perintah sekaligus
- Investigasi kemungkinan memakai API
CGEvent.tapCreate untuk shortcut global
- Mungkin dapat membedakan modifier kiri dan kanan, atau mungkin juga tidak
- Isu besar yang dijadwalkan setelah 1.0 mencakup sticky windows dan Dynamic TWM
Nilai proyek dan non-tujuan
- AeroSpace ditujukan untuk power user dan developer
- Berorientasi pada penggunaan berbasis keyboard
- Breaking change pada file konfigurasi, CLI, dan perilaku sebisa mungkin dihindari, tetapi breaking change yang dipertimbangkan dengan hati-hati dapat terjadi untuk mencegah perangkat lunak stagnan
- Setelah 1.0, dijamin bahwa Semver major version akan dinaikkan ketika ada breaking change
- Sebelum 1.0, breaking change dapat terjadi begitu saja
- GUI tidak digunakan kecuali benar-benar diperlukan
- Tidak ada rencana menyediakan GUI untuk konfigurasi
- Ikon menu status untuk umpan balik visual diperbolehkan
- Fitur dinilai berdasarkan kepraktisan; fitur tampilan seperti border window, transparansi, dan animasi tidak dianggap sebagai fitur praktis
- “Dark magic” seperti private API dan injeksi kode sebisa mungkin dihindari
- Saat ini hanya menggunakan satu private API
_AXUIElementGetWindow untuk mendapatkan window ID dari accessibility object
- Selain itu menggunakan accessibility API publik macOS
- Tidak meminta SIP dinonaktifkan
- Menargetkan konfigurasi yang tahan terhadap pembaruan macOS dan mudah dipelihara
- Menyatu dengan baik bersama fitur macOS yang sudah ada bukan merupakan tujuan
- Tidak mengakui keberadaan macOS Spaces dan menggunakan emulasi workspace sendiri
- Ricing memiliki prioritas rendah
- Hanya mendukung secara minimal beberapa callback untuk integrasi gaps dan bar
- Maintainer saat ini tidak tertarik pada ricing, dan sebagian besar isu terkait diprioritaskan rendah atau diabaikan
- Jika jumlah maintainer bertambah, posisi terhadap ricing dapat berubah
Kompatibilitas, komunitas, dan proyek terkait
- Kompatibilitas macOS bergantung pada cara build
- Menjalankan binary AeroSpace: macOS 13+
- Debug build dari source: macOS 14+
- Release build dari source: macOS 15+, memerlukan Xcode 26+
- Issue tidak langsung diterima; pengguna diminta membuat Discussion terlebih dahulu
- GitHub Discussions memiliki kanal All, Announcements, Release announcements, Feature ideas, General, Potential bugs, serta Q&A
- Proyek terkait yang disebutkan adalah sebagai berikut
- Amethyst: window manager tiling bergaya xmonad
- InstantSpaceSwitcher: mengganti space secara instan dengan menyintesis gesture trackpad berkecepatan tinggi secara artifisial
- yabai: window manager tiling macOS berbasis binary space partitioning
1 komentar
Opini Hacker News
Saya memakainya setiap hari, dan kesimpulannya ini adalah cara terbaik untuk mengelola window di Mac, tetapi masih belum sebaik i3/sway
Khususnya, dukungan untuk menyeret window guna menata ulang posisinya relatif satu sama lain sangat terbatas, jadi tidak bisa membuat split vertikal/horizontal baru seperti di sway. Karena itu, untuk membuat tata letak window yang diinginkan, biasanya harus mengakali dengan perintah keyboard yang terasa canggung
Misalnya, ketika ada dua window berdampingan kiri-kanan dan ingin membagi salah satunya secara vertikal, di sway cukup buka window baru lalu seret ke separuh atas/bawah window yang sudah ada. Di AeroSpace, cara terbaik yang saya temukan adalah membuka window baru, mengubah ketiga window menjadi stack vertikal, lalu memfokuskan window yang semula berada di kiri dan menjalankan
move leftJika normalization diaktifkan, tidak perlu “beralih ke stack vertikal”
Pada tata letak ini:
h_tiles
├── window1 (focused)
├── window2
└── window3
Menjalankan
move leftakan menjadi seperti ini:h_tiles
├── window1 (focused)
└── v_tiles
├── window2
└── window3
Saya bahkan tidak tahu bahwa di sway window bisa diseret dan dilepas. Saya biasanya memilih window yang ingin dibagi, lalu memakai
Command + vuntuk mengatur split vertikal dan membuat window baru, biasanya terminalAtau memindahkan window dengan
Command + Shift + [hjkl]Saya berencana mencobanya untuk melihat apakah masalah utama saya terselesaikan lebih dulu. Saya mencari cara yang cukup masuk akal untuk membuat Mac mengingat susunan layar
Setiap kali bangun setelah boot, desktop saya yang memakai 3 layar menjadi benar-benar amnesia
Idealnya saya ingin mengelola workspace sendiri, dan bisa memakai hanya layar laptop atau 2–3 monitor eksternal di meja yang berbeda antara kantor/rumah
Saya memakai Spectacle, tetapi sudah tidak lagi didukung
Saya belum mencoba ini, tetapi saya memakai yabai, dan perilakunya persis seperti yang dijelaskan
Fakta bahwa tidak perlu mematikan
SIPsangat menarik. Hampir semua window manager serupa pada dasarnya membutuhkan SIP dinonaktifkan, jadi saya raguSaya penasaran apa yang dilakukan AeroSpace secara berbeda sehingga bisa berjalan bersama SIP
Hal yang saya temukan di README:
AeroSpace tidak meminta Anda mematikan SIP (System Integrity Protection). Misalnya, yabai mengharuskan SIP dimatikan untuk memakai sebagian fitur. AeroSpace mencari cara lain, misalnya mengemulasikan workspace, atau sama sekali tidak mengimplementasikan fitur tersebut. Transparansi window dan bayangan window bukan fitur yang praktis
Namun fitur yabai yang membuat fokus mengikuti mouse benar-benar bagus, jadi saya penasaran apakah mungkin memakai yabai hanya untuk fitur itu sambil menyerahkan fungsi seperti i3 ke AeroSpace
Luar biasa. Selama ini saya memakai Amethyst, tetapi AeroSpace langsung terasa lebih saya sukai
Hal yang paling saya keluhkan dari Amethyst adalah cara ia melempar window yang sangat lamban dan tidak stabil. Di AeroSpace, window berpindah ke workspace/monitor lain seketika dan tidak gagal
Saya juga suka karena ia sepenuhnya meninggalkan workspace bawaan macOS dan memakai workspace virtual sendiri. Seperti yang dikatakan pembuatnya, pendekatan bawaan cukup mengecewakan, dan berkat cara ini pengaturan multi-monitor menjadi bisa ditoleransi dan bahkan sedikit menyenangkan
Di komputer kerja, saya tidak bisa memakai yabai karena perlu menonaktifkan SIP, dan pembuat AeroSpace secara eksplisit menentang hal itu; penilaiannya tampak masuk akal
Ketika masih memakai Linux, saya pindah dari i3 ke xmonad, tetapi di macOS AeroSpace jelas terasa lebih baik. Ketiga window manager di macOS tetap tidak setara dengan window manager sungguhan di Linux, tetapi dalam batas yang memungkinkan, AeroSpace tampaknya mendekati yang terbaik
Saya suka pendekatan Spaces palsu ini
Saya pernah terpikir untuk mencoba sesuatu yang mirip dengan meminimalkan window, tetapi tidak pernah benar-benar melakukannya
Di macOS, tiling memang pasti terasa muram karena kurangnya API. Meski begitu, pendekatan ini mungkin yang performanya paling baik
Saya pernah memakai yabai, tetapi hanya untuk pemindahan window dan fitur fokus mengikuti mouse, bukan untuk tiling. Alasannya karena tidak stabil, dan itu bukan salah yabai
Terima kasih kepada nikitabobko
Sekarang saya hanya perlu menemukan cara agar alt-tab mengabaikan window dari semua workspace palsu yang dikumpulkan di sudut, lalu saya akan langsung mencobanya
JankyBorders yang ditautkan di dokumentasi juga bagus
https://github.com/koekeishiya/yabai
https://github.com/lwouis/alt-tab-macos
https://github.com/FelixKratz/JankyBorders
alt+h/alt+jCommand+Tabadalah pergantian window global, sedangkan shortcut di atas untuk pergantian lokal dalam konteks workspaceSaya sudah cukup terbiasa dengan alat manajemen window milik Raycast, tetapi pada praktiknya sulit dipakai bersama AeroSpace
Misalnya, di Raycast ada opsi
reasonable sizeuntuk menampilkan window dalam ukuran yang sesuai dan menempatkannya di tengah. Bisa juga membuat split separuh kiri/separuh kanan, memaksimalkan, atau membagi menjadi kuadran/tiga bagianNamun di AeroSpace, mencoba memindahkan window di dalam tile ke separuh kiri, separuh kanan, 2/3 kiri, atau membuatnya floating dengan
reasonable sizetidak berfungsiAda juga bug saat memindahkan aplikasi dengan “next desktop” dan “previous desktop”. AeroSpace tampaknya mengimplementasikan beberapa desktop Mac sebagai workspace miliknya sendiri, jadi panduan videonya sebenarnya menunjukkan perpindahan antar-workspace yang berbeda, bukan antar-desktop yang berbeda
Akibatnya, kalau memakai “next desktop” dan “previous desktop”, tiling-nya jadi benar-benar kacau. Sayang sekali; kalau workspace terhubung langsung ke tiap desktop Mac, sehingga perpindahan workspace sekaligus menjadi perpindahan desktop, mungkin akan cukup kompatibel juga dengan Raycast dan fitur bawaan macOS
Raycast benar-benar bagus
Ke depannya sepertinya akan menjadi semacam aplikasi standar bagi power user Mac
Fitur bergunanya terlalu banyak, jadi perlu saya dalami dengan benar. Saya paling sering memakai integrasi Linear.app
Selama 5 versi macOS terakhir, saya cukup banyak memakai yabai di komputer kerja tanpa mematikan SIP
Saya benar-benar menyukainya, dan tiling-nya hanya tidak stabil kira-kira beberapa hari sekali. Padahal saya menjalankan perintah yabai setidaknya sekali per menit, jadi saya mengikat
yabai --restart-serviceke shortcut, dan setiap kali dijalankan selalu langsung kembali normalJadi menurut saya cukup stabil dan bagus. Multi-monitor memang sulit dan tidak terlalu sering saya pakai, tetapi stack dan minimisasi gaya “fullscreen” yang cepat benar-benar bagus
Pada beberapa upgrade versi, antivirus perusahaan menganggapnya sebagai virus dan menonaktifkannya selama 24 jam; pada hari itu komputer terasa begitu lamban dan suram sampai saya jadi tidak ingin memakainya
Sudah beberapa bulan saya mencobanya. i3 hampir sempurna dan AeroSpace adalah upaya yang bagus, tetapi masih cukup jauh dari i3 dan cukup tidak stabil
Mungkin karena Mac OS X tidak mengizinkan kontrol penuh seperti window manager Unix
Meski begitu, saya belum menemukan yang lebih baik. Kalau Linux sudah berjalan dengan baik di Apple Silicon, saya berencana menginstalnya. Setidaknya bagi saya, i3 saja sudah cukup menjadi alasan untuk memakai Linux, dan Mac OS X benar-benar buruk dari sisi window manager
Saya pernah sedikit menyentuh area yang mirip ini sebagai proyek hobi, dan penyebabnya adalah API resminya terbatas
Pada akhirnya, kita sangat bergantung pada API privat yang tidak terdokumentasi dan berbagai hack. Hal-hal seperti ini dibuat untuk penggunaan internal sehingga tidak stabil, dan sistem operasinya sendiri juga tidak dirancang untuk bekerja sama dengan baik dalam situasi ketika ada campur tangan besar pada manajemen window/proses. Karena itu, sistem operasi dan aplikasi pihak ketiga sering saling menginjak kaki
Saya mengalami masalah yang sama. Saya belum menemukan window manager yang bisa menangani mode fullscreen bawaan OSX dengan benar
AeroSpace kebingungan kalau memakai fullscreen bawaan. Ia bingung harus menaruh fokus di mana
Dalam kasus saya:
Workspace 1: terminal
Workspace 2: slack app
Open chrome in native full screen
Sekarang coba beralih ke workspace 1, maka masalah muncul
Untuk sementara saya berniat terus memakainya tanpa aplikasi fullscreen bawaan. Semoga dengan begitu akan bekerja lebih baik
Saya penasaran dengan perbedaan pengalaman pengguna antara produk ini dan Yabai. Menurut saya masalah SIP di Yabai bukan isu besar. Di antara pengguna Yabai yang saya kenal, tidak ada yang mematikan SIP, dan semuanya tampaknya memakainya dengan baik
Saya penasaran apakah perbedaannya ada pada gaya i3
Secara pribadi, saya memakai utilitas seperti Fluxbox yang memungkinkan resize dan memindahkan window dengan mouse dari posisi mana pun pada window sambil menahan kombinasi modifier key. Itu tidak otomatis, tetapi juga tidak tidak stabil. Alih-alih beralih ke pendekatan yang sepenuhnya terkelola, ini lebih seperti membuat floating jauh lebih mudah dengan mengurangi gerakan mouse
Saya sudah banyak memakai keduanya, dan saya lebih suka AeroSpace
Faktor penentu bagi saya adalah dukungan multi-monitor, dan selain itu ada beberapa kelebihan kecil
Di Yabai, kalau memindahkan workspace ke monitor baru, ID-nya berubah sehingga tidak bisa terus diakses dengan shortcut keyboard.
alt+2rusak karena itu bukan lagi workspace 2, melainkan menjadi 11 atau nomor lain. Di AeroSpace, workspace bisa dengan mudah dipindahkan antar-monitor denganalt+mdanalt+shift+mFitur lainnya adalah window langsung menempel tanpa animasi Mission Control. Ini benar-benar hal yang sangat mengganggu saya
Dua fitur inilah yang saya butuhkan hampir setiap hari, dan karena dukungan workspace yang kurang, Yabai bagi saya nyaris sepenuhnya tidak bisa dipakai
Di Yabai, untuk menangani Spaces dengan cara apa pun, mengubah urutan tumpukan window, atau memakai banyak fitur lainnya, SIP harus dimatikan [0]
Kalau tidak memakai fitur-fitur seperti itu, itu pilihan masing-masing, tetapi bagi banyak pengguna itu adalah fitur inti
[0] https://github.com/koekeishiya/yabai/wiki/Disabling-System-I...
Saya penasaran apa bedanya dengan Amethyst. Amethyst belakangan jauh lebih stabil dan saya menikmatinya
Konfigurasi berbasis teks terlihat cukup bagus sebagai kesan pertama, tetapi saya belum yakin apakah layak untuk beralih
Selama ini saya memakai Amethyst, tetapi AeroSpace langsung terasa lebih cocok bagi saya
Hal yang paling saya keluhkan dari Amethyst adalah ia melempar window dengan sangat lamban dan tidak stabil. Di AeroSpace, window berpindah ke workspace/monitor lain dalam sekejap dan tidak gagal
Saya juga suka bahwa ia sepenuhnya meninggalkan workspace bawaan macOS dan memakai workspace virtual miliknya sendiri. Berkat itu, pengaturan multi-monitor jadi bisa ditoleransi dan bahkan sedikit menyenangkan untuk ditangani
Saat masih memakai Linux, saya pindah dari i3 ke xmonad, tetapi di macOS, AeroSpace jelas terasa lebih baik. Ketiga window manager di macOS tidak ada yang bisa menandingi window manager sungguhan di Linux, tetapi AeroSpace tampak mendekati yang terbaik dalam batas-batas yang memungkinkan
Berdasarkan pengalaman saya, AeroSpace jauh lebih baik di sebagian besar aspek
Ada beberapa keanehan dan saya memang perlu mengirim beberapa laporan bug, tetapi ia membuat macOS jauh lebih bisa ditoleransi dibanding Amethyst
Amethyst juga bisa memakai konfigurasi berbasis teks
https://github.com/ianyh/Amethyst/blob/development/docs/conf...
Saya sudah memakainya selama beberapa bulan terakhir, dan secara umum saya menyukainya. Saya suka karena semuanya dikonfigurasi dalam satu file, artinya tidak ada GUI
Satu masalahnya adalah jika aplikasi memakai tab bawaan Mac, AeroSpace memperlakukan tiap tab sebagai jendela, sehingga fitur layar penuh jadi benar-benar rusak. Alacritty adalah salah satu contohnya, dan ini cukup aneh
Isu terkait sudah dibuka:
https://github.com/nikitabobko/AeroSpace/issues/68