- AeroSpace는 macOS에서 i3와 유사한 사용 방식을 제공하는 베타 단계의 타일링 윈도우 매니저로, 트리 기반 배치와 키보드 중심 워크플로를 지향함
- macOS 기본 Spaces에 의존하지 않고 자체 가상 워크스페이스 에뮬레이션을 사용하며, 애니메이션 없는 빠른 워크스페이스 전환과 SIP 비활성화 없이 동작하는 구성을 내세움
- 설정은 일반 텍스트 TOML 기반이고 CLI 우선 설계이며, manpage와 셸 자동완성을 포함하고 다중 모니터는 i3와 유사한 패러다임으로 지원함
- 현재 Public Beta로 일상 사용은 가능하지만 1.0 전까지 breaking change가 예상되며, 1.0 전에는 큰 리팩터링, 셸식 조합자, 글로벌 단축키 API 조사 등이 남아 있음
- 프로젝트 가치는 고급 사용자와 개발자, 키보드 중심, 실용 기능, 공개 접근성 API 중심 유지보수에 맞춰져 있으며, GUI 설정·macOS Spaces와의 조화·ricing은 우선순위가 낮음
AeroSpace가 제공하는 macOS 타일링 환경
- AeroSpace는 macOS용 i3-like 타일링 윈도우 매니저임
- 데모와 문서는 별도로 제공됨
핵심 기능과 설계
- 윈도우 배치는 트리 패러다임 기반의 타일링 윈도우 매니저로 구성됨
- 사용 경험은 i3에서 영감을 받음
- 워크스페이스 전환은 애니메이션 없이 빠르게 동작하며, SIP 비활성화가 필요 없음
- macOS 기본 Spaces는 상당한 제한이 있어 사용하지 않고, AeroSpace가 자체 가상 워크스페이스를 에뮬레이션함
- 설정은 dotfiles에 적합한 일반 텍스트 방식이며, 기본 설정 예시는 default-config.toml에서 확인할 수 있음
- CLI 우선 설계이며 manpage와 셸 자동완성을 포함함
- 다중 모니터는 i3와 유사한 패러다임으로 지원함
설치와 보안 관련 조건
- 권장 설치 방식은 Homebrew cask이며 자동 업데이트를 받을 수 있음
brew install --cask nikitabobko/tap/aerospace
- 다중 모니터 환경에서는 모니터가 올바르게 배치되어 있는지 확인해야 함
- 다른 설치 방법은 설치 가이드에 있음
- AeroSpace는 notarized 상태가 아님
- Homebrew 설치 스크립트는
com.apple.quarantine 속성을 자동 삭제하도록 구성되어 있음
- 이 구성 때문에 “Apple cannot check AeroSpace for malicious software” 경고 없이 앱이 바로 동작해야 함
프로젝트 상태와 1.0 전 작업
- 현재 상태는 Public Beta임
- 일상 사용은 가능하지만, 1.0에 도달하기 전까지 breaking change를 예상해야 함
- 1.0 릴리스를 막는 작업으로는 다음 항목들이 남아 있음
- 성능 이슈: macOS의 blocking AX API를 우회하기 위해 application당 thread를 구현하는 작업은 완료됨
- 큰 리팩터링: mutable double-linked core tree 자료구조를 immutable single-linked persistent tree로 다시 작성하는 작업
- 안정성과 잠재적 성능에 중요함
- 윈도우가 포커스된 워크스페이스로 무작위 이동할 수 있는 안정성 이슈 수정에 도움이 됨
- macOS native tabs 지원에 도움이 됨
- 셸식 조합자 구현
||, &&, ;와 여러 명령을 한 번에 보내는 eval 명령을 도입하는 최소 접근이 유력함
- 글로벌 단축키에
CGEvent.tapCreate API를 사용할 가능성 조사
- 왼쪽·오른쪽 modifier를 구분할 수 있을 수도 있고 아닐 수도 있음
- 1.0 이후로 예정된 큰 이슈에는 sticky windows와 Dynamic TWM이 있음
프로젝트 가치와 비목표
- AeroSpace는 고급 사용자와 개발자를 대상으로 함
- 키보드 중심 사용을 지향함
- 설정 파일, CLI, 동작의 breaking change는 가능한 피하지만, 소프트웨어 정체를 막기 위해 신중한 breaking change는 발생할 수 있음
- 1.0 이후에는 breaking change가 있을 때 Semver major version을 올리는 것이 보장됨
- 1.0 전에는 breaking change가 그냥 발생할 수 있음
- GUI는 꼭 필요한 경우가 아니면 사용하지 않음
- 설정용 GUI는 제공하지 않을 계획임
- 시각적 피드백을 위한 상태 메뉴 아이콘은 허용됨
- 기능은 실용성을 기준으로 하며, 윈도우 테두리·투명도·애니메이션 같은 외형 기능은 실용 기능으로 보지 않음
- private API, 코드 주입 같은 “dark magic”은 가능한 피함
- 현재 접근성 객체의 window ID를 얻기 위해
_AXUIElementGetWindow private API 하나만 사용함
- 그 외에는 macOS 공개 accessibility API를 사용함
- SIP 비활성화를 요구하지 않음
- macOS 업데이트에 강하고 유지보수하기 쉬운 구성을 목표로 함
- 기존 macOS 기능과 잘 어울리는 것은 비목표임
- macOS Spaces의 존재를 인정하지 않고 자체 워크스페이스 에뮬레이션을 사용함
- ricing은 우선순위가 낮음
- gaps와 bar 통합용 callback 몇 개만 최소 지원함
- 현재 maintainer는 ricing에 관심이 없으며, 관련 이슈는 대부분 우선순위가 낮거나 무시됨
- 더 많은 maintainer가 생기면 ricing에 대한 입장이 바뀔 수 있음
호환성, 커뮤니티, 관련 프로젝트
- macOS 호환성은 빌드 방식에 따라 다름
- AeroSpace 바이너리 실행: macOS 13+
- 소스에서 debug build: macOS 14+
- 소스에서 release build: macOS 15+, Xcode 26+ 필요
- 이슈는 바로 받지 않고 먼저 Discussion을 만들도록 요청함
- GitHub Discussions에는 전체, 공지, 릴리스 공지, 기능 아이디어, 일반, 잠재적 버그, 질문과 답변 채널이 있음
- 관련 프로젝트로는 다음이 제시됨