2 poin oleh GN⁺ 2024-06-07 | 1 komentar | Bagikan ke WhatsApp
  • 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

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

 
GN⁺ 2024-06-07
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 left

    • Jika normalization diaktifkan, tidak perlu “beralih ke stack vertikal”
      Pada tata letak ini:

      h_tiles
      ├── window1 (focused)
      ├── window2
      └── window3

      Menjalankan move left akan 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 + v untuk mengatur split vertikal dan membuat window baru, biasanya terminal
      Atau 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 SIP sangat menarik. Hampir semua window manager serupa pada dasarnya membutuhkan SIP dinonaktifkan, jadi saya ragu
    Saya 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

    • Saya pernah memakai yabai, tetapi perpindahan antar macOS Spaces terlalu lambat. Saya pindah ke AeroSpace dan benar-benar menyukai implementasi workspace-nya
      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
    • Saya penasaran apakah fitur memindahkan fokus mengikuti mouse bisa dilakukan tanpa menonaktifkan SIP. Itu salah satu fitur yang belum pernah saya lihat di window manager macOS lain
  • 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

    • yabai berjalan baik tanpa mematikan SIP. Saya belum mencoba AeroSpace, jadi belum bisa membandingkan fiturnya
  • 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

    • Saya mengatasinya dengan memakai Stack dan berpindah antar window menggunakan alt+h/alt+j
      Command+Tab adalah pergantian window global, sedangkan shortcut di atas untuk pergantian lokal dalam konteks workspace
  • Saya sudah cukup terbiasa dengan alat manajemen window milik Raycast, tetapi pada praktiknya sulit dipakai bersama AeroSpace
    Misalnya, di Raycast ada opsi reasonable size untuk menampilkan window dalam ukuran yang sesuai dan menempatkannya di tengah. Bisa juga membuat split separuh kiri/separuh kanan, memaksimalkan, atau membagi menjadi kuadran/tiga bagian
    Namun di AeroSpace, mencoba memindahkan window di dalam tile ke separuh kiri, separuh kanan, 2/3 kiri, atau membuatnya floating dengan reasonable size tidak berfungsi

Ada 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-service ke shortcut, dan setiap kali dijalankan selalu langsung kembali normal

    Jadi 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+2 rusak karena itu bukan lagi workspace 2, melainkan menjadi 11 atau nomor lain. Di AeroSpace, workspace bisa dengan mudah dipindahkan antar-monitor dengan alt+m dan alt+shift+m

      Fitur 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

    • Yabai juga mengalami masalah yang sama, dan pembuatnya masih belum bisa memperbaikinya