HN Mengungkap: FlashSpace – pengganti macOS Spaces yang cepat dan open source
(github.com/wojciech-kulik)- FlashSpace adalah manajer ruang kerja virtual yang melengkapi atau menggantikan Spaces bawaan macOS, dengan tujuan perpindahan ruang kerja yang cepat tanpa menunggu animasi macOS
- Setiap ruang kerja dapat ditetapkan ke aplikasi dan layar tertentu, lalu saat berpindah, aplikasi yang ditetapkan pada layar tersebut akan ditampilkan sementara aplikasi lain disembunyikan, sehingga mendukung perpindahan multi-layar yang independen
- Menyediakan Space Control, Workspace Switcher berbasis
Option + Tab, Focus Manager, profil, gesture swipe, Floating Apps, konfigurasi JSON/YAML/TOML, CLI, serta integrasi SketchyBar dan Raycast - Memerlukan macOS 14.0 atau lebih baru dan pengaturan “Displays have separate Spaces”, serta mendukung instalasi Homebrew, unduhan biner, dan build dari source
- Tidak mendukung ruang kerja per jendela maupun manajemen layout, dan tetap memakai desain yang berpusat pada tampil/sembunyi aplikasi karena ketiadaan API publik macOS untuk menyembunyikan jendela tertentu serta demi kesederhanaan dan performa
Apa yang dilakukan FlashSpace
- FlashSpace adalah manajer ruang kerja virtual untuk macOS yang dirancang untuk melengkapi dan menggantikan macOS Spaces bawaan
- Tujuannya adalah perpindahan ruang kerja yang cepat tanpa harus menunggu animasi macOS
- Setiap ruang kerja dapat diberi aplikasi, dan ruang kerja itu sendiri dapat ditetapkan ke layar tertentu
- Saat berpindah ke suatu ruang kerja, aplikasi yang ditetapkan akan otomatis ditampilkan, sementara aplikasi lain pada layar yang sama akan disembunyikan
- Ruang kerja dapat dipindahkan secara independen di beberapa layar
Instalasi dan alur penggunaan dasar
- Persyaratannya adalah macOS 14.0 atau lebih baru dan mengaktifkan “Displays have separate Spaces” di pengaturan sistem
Desktop & Dock - Metode instalasi yang didukung adalah Homebrew, unduhan biner rilis, dan build dari source
- Perintah instalasi Homebrew adalah
brew install flashspace - Biner dapat diunduh dari Releases Page
- Perintah instalasi Homebrew adalah
- Alur penggunaan dasarnya adalah sebagai berikut
- Pindahkan semua aplikasi ke satu macOS Space per layar
- Buat ruang kerja
- Tetapkan aplikasi
- Tetapkan layar ke ruang kerja atau gunakan mode dinamis
- Atur shortcut untuk aktivasi cepat
- Terapkan prosedur yang sama ke ruang kerja lain
- Berpindah ke ruang kerja yang telah diatur lewat shortcut
- Untuk mempertahankan aplikasi yang sama di beberapa ruang kerja, gunakan fitur Floating Apps di pengaturan aplikasi, atau tambahkan aplikasi ke beberapa ruang kerja dari jendela utama aplikasi
Fitur utama
- Menyediakan perpindahan ruang kerja yang cepat dan dukungan multi-layar
- Space Control adalah fitur untuk melihat pratinjau semua ruang kerja dalam bentuk grid dan berpindah di antaranya
- Anda dapat berpindah ruang kerja dengan
0-9dan tombol arah
- Anda dapat berpindah ruang kerja dengan
- Workspace Switcher secara default menampilkan daftar ruang kerja dan berpindah dengan
Option + Tab- Bekerja dengan cara yang mirip dengan pengalih aplikasi macOS
CMD + Tab
- Bekerja dengan cara yang mirip dengan pengalih aplikasi macOS
- Focus Manager memungkinkan fokus dipindahkan ke arah yang diinginkan antarjendela dengan shortcut, dan juga mendukung lompatan antar layar
- Fitur lainnya mencakup
- Mengaktifkan ruang kerja setelah mendeteksi fokus aplikasi
- Cursor manager yang otomatis memusatkan kursor ke jendela aktif
- Profiles untuk mengubah banyak pengaturan dengan cepat
- Menu bar yang dapat menampilkan ikon dan teks per ruang kerja
- Kustomisasi perilaku gesture swipe trackpad
- Konfigurasi berbasis GUI dan file konfigurasi
- Dukungan format file konfigurasi JSON, YAML, TOML
- Kontrol aplikasi melalui CLI
- Dukungan Picture-in-Picture
- Integrasi SketchyBar
- Dukungan ekstensi Raycast
Cara penetapan layar
- FlashSpace mendukung dua metode penetapan layar: mode statis dan mode dinamis
- Mode statis adalah nilai default, yang menetapkan setiap ruang kerja ke layar tertentu
- Cocok untuk pengguna yang menginginkan ruang kerja khusus per layar seperti di macOS Spaces
- Bisa menyulitkan jika Anda memakai banyak layar dan sering mengubah susunannya
- Mode dinamis secara otomatis menetapkan setiap ruang kerja ke layar tempat aplikasi ruang kerja tersebut berada
- Satu ruang kerja dapat ditampilkan di beberapa layar sekaligus
- Berguna saat Anda ingin menata ulang ruang kerja dengan memindahkan aplikasi antar layar
- Dalam mode ini, ruang kerja kosong tidak dapat ditampilkan
- Mode penetapan layar dapat diubah di Workspaces pada pengaturan aplikasi
Dukungan Picture-in-Picture dan batasannya
- FlashSpace mendukung mode Picture-in-Picture, tetapi ini adalah fitur eksperimental
- Fitur ini dapat dinonaktifkan di
App Settings -> Workspaces - macOS tidak menyediakan API publik untuk menyembunyikan hanya jendela tertentu, dan jika aplikasi disembunyikan maka jendela PiP juga ikut tersembunyi
- Untuk mengatasi masalah ini, FlashSpace mengidentifikasi apakah aplikasi mendukung PiP lalu menyembunyikan semua jendela ke sudut layar kecuali jendela PiP
- Jika jendela PiP tidak terlihat, perilaku standar akan diterapkan
- Browser yang didukung adalah Safari, Zen Browser, Chrome, Firefox, Brave, Vivaldi, Arc, Dia, Opera, Microsoft Edge, dan Comet
- Jika bahasa browser tidak diatur ke English, fitur ini mungkin tidak berfungsi
Prinsip desain dan hal yang sengaja tidak didukung
- Nilai proyek ini adalah performa, kesederhanaan, stabilitas, perilaku yang tidak mengganggu, dan filosofi UNIX
- FlashSpace memandang manajemen ruang kerja sebagai satu pekerjaan, lalu fokus melakukannya dengan baik
-
Perilaku yang tidak mengganggu
- FlashSpace tidak secara agresif mengelola jendela
- Jika setelah berpindah ke suatu ruang kerja Anda memanggil aplikasi yang tidak ditetapkan ke ruang kerja itu, aplikasi tersebut akan tampil di atas aplikasi ruang kerja
- Perilaku ini memungkinkan akses cepat ke aplikasi lain sambil menghindari glitch atau perpindahan ruang kerja
- Pada tiling window manager, glitch sering muncul karena popup atau dialog yang tidak dikonfigurasi
- FlashSpace berinteraksi dengan sistem tanpa mengganggu dengan cara tidak mengelola jendela dan aplikasi yang tidak ditetapkan
-
Tidak mendukung ruang kerja per jendela aplikasi individual
- FlashSpace tidak mendukung konsep membagi jendela individual suatu aplikasi per ruang kerja
- Ini adalah keputusan yang disengaja agar tetap sederhana dan cepat
- Ia mengandalkan fungsi tampil/sembunyi bawaan untuk mengelola dan memindahkan ruang kerja secara efisien
- Pendekatan ini lebih baik untuk baterai dan tidak merusak fitur sistem seperti Mission Control
- Dukungan per jendela akan menambah kompleksitas besar dan dapat berdampak negatif pada performa
- macOS tidak memiliki API publik untuk menyembunyikan jendela tertentu, dan pilihan saat ini hanyalah memindahkan jendela ke sudut layar atau meminimalkannya, yang keduanya bukan pengalaman pengguna ideal
-
Tidak mendukung layout
- FlashSpace tidak mendukung pemindahan jendela, pengubahan ukuran, atau perubahan layout
- Fitur ini dapat sangat menambah kompleksitas dan berdampak negatif pada performa
- Dibutuhkan banyak pekerjaan untuk mendukung semua edge case dan glitch
- Karena dapat digunakan bersama aplikasi manajemen jendela seperti Magnet, Rectangle, dan Raycast, fitur tersebut tidak diduplikasi
Integrasi, CLI, build
- Dapat diintegrasikan dengan SketchyBar dan lainnya, serta menjalankan skrip yang dapat dikonfigurasi saat ruang kerja berubah
- CLI mendukung pengelolaan ruang kerja, aplikasi, dan profil
- Harus dipasang terlebih dahulu dari CLI di pengaturan aplikasi
- Anda dapat melihat perintah yang tersedia dengan
flashspace --help
- Build dari source menggunakan XcodeGen untuk membuat proyek Xcode dari
project.yml- Setelah clone repositori, pasang dependensi dengan
brew bundle - Jalankan
xcodegen generatelalu bukaFlashSpace.xcodeprojdi Xcode untuk build - Setiap kali mengganti branch atau menarik perubahan, Anda harus menjalankan kembali
xcodegen generate - Untuk membuat proyek termasuk pengaturan penandatanganan, Anda dapat menggunakan
XCODE_DEVELOPMENT_TEAM=YOUR_TEAM_ID xcodegen generate
- Setelah clone repositori, pasang dependensi dengan
Tips penggunaan
- macOS memiliki bug di mana aplikasi bisa muncul di layar yang salah setelah mode sleep
- Ini terjadi jika aplikasi disembunyikan selama sleep
- Menyalakan semua layar sebelum login setelah bangun dapat membantu aplikasi tampil di layar yang benar
- macOS 15 menyediakan fitur pemindahan dan pengubahan ukuran jendela tanpa aplikasi pihak ketiga
- Anda dapat melihat submenu
Move & ResizediWindowpada menu bar - Penyesuaian shortcut terbatas, dan pendekatan yang lebih fleksibel adalah memakai aplikasi manajemen jendela seperti Raycast atau Magnet
- Anda dapat melihat submenu
- Perpindahan fokus antarjendela dari aplikasi yang sama dapat dilakukan dengan shortcut macOS
Cmd + ` - SKHD adalah alat CLI untuk mendefinisikan shortcut global kustom, dan dapat digunakan bersama FlashSpace CLI
- Pengguna Raycast dapat mengelola FlashSpace tanpa meninggalkan keyboard melalui ekstensi Raycast
1 komentar
Penasaran apakah ini kompatibel dengan Amethyst. Saya ingin jendela tiling, tetapi tidak ingin ada jeda saat berpindah ruang kerja
Sangat bagus! Semoga bisa menambahkan tampilan grid untuk ruang kerja. Kangen TotalSpaces
Timing yang tepat. Saya baru saja mengeksplorasi opsi lagi di area ini dan memutuskan memakai Aerospace. Akan mencoba produk ini
Terima kasih! Baru saja saya instal dan sejauh ini berjalan dengan baik
Saya sudah memakai AeroSpace untuk tujuan ini selama lebih dari 1 tahun. Saya menonaktifkan semua fitur tiling di pengaturan dan hanya memakai dua shortcut: pindah ke ruang kerja dan pindahkan jendela saat ini ke ruang kerja. Ini wajib saat bekerja di layar kecil