2P by GN⁺ | ★ favorite | 댓글 1개
  • 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 타일링 환경

핵심 기능과 설계

  • 윈도우 배치는 트리 패러다임 기반의 타일링 윈도우 매니저로 구성됨
  • 사용 경험은 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 windowsDynamic 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에는 전체, 공지, 릴리스 공지, 기능 아이디어, 일반, 잠재적 버그, 질문과 답변 채널이 있음
  • 관련 프로젝트로는 다음이 제시됨
    • Amethyst: xmonad식 타일링 윈도우 매니저
    • InstantSpaceSwitcher: 인위적으로 높은 속도의 트랙패드 제스처를 합성해 즉시 space 전환
    • yabai: binary space partitioning 기반 macOS 타일링 윈도우 매니저

댓글과 토론

Hacker News 의견들
  • 이걸 매일 쓰고 있는데, 결론은 Mac에서 창을 관리하는 가장 좋은 방법이지만 i3/sway에는 못 미침
    특히 창을 서로의 상대 위치로 끌어서 재배치하는 지원이 매우 제한적이라, sway처럼 새 세로/가로 분할을 만들 수 없음. 그래서 원하는 창 배치를 만들려면 대부분 어색하게 키보드 명령을 우회해야 함
    예를 들어 창 두 개가 좌우로 있고 한쪽을 세로로 나누고 싶을 때, sway에서는 새 창을 열고 기존 창의 위/아래 절반으로 끌어다 놓으면 끝남. AeroSpace에서는 새 창을 열고 세 창을 모두 세로 스택으로 바꾼 뒤, 원래 왼쪽에 있던 창에 포커스를 두고 move left를 실행하는 방식이 제일 나았음

    • 정규화(normalization) 를 켜 두면 “세로 스택으로 전환”할 필요가 없음
      이 배치에서:

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

      move left를 실행하면 이렇게 됨:

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

    • sway에서 창을 끌어다 놓을 수 있다는 것도 몰랐음. 나는 나누고 싶은 창을 선택한 뒤 Command + v세로 분할을 설정하고 새 창, 보통 터미널을 만듦
      아니면 Command + Shift + [hjkl]로 창을 이동함

    • 내 주요 문제가 먼저 해결되는지 보려고 써볼 생각임. Mac에서 화면 배치 기억을 그럴듯하게 해주는 방법을 찾고 있음
      부팅 후 깨어날 때마다 3개 화면을 쓰는 데스크톱이 완전히 기억상실 상태가 됨
      이상적으로는 내가 직접 작업공간을 운용하고, 노트북 화면만 쓰거나 직장/집의 서로 다른 책상에서 외부 모니터 2~3개를 쓸 수 있으면 좋겠음

    • Spectacle을 쓰고 있는데 더 이상 지원되지 않음

    • 이건 안 써봤지만 yabai를 쓰고 있고, 설명한 것과 정확히 같은 방식으로 동작함

  • SIP를 끄지 않아도 된다는 점이 아주 흥미로움. 비슷한 창 관리자들은 사실상 전부 SIP 비활성화가 필요해서 망설였음
    AeroSpace는 무엇을 다르게 해서 SIP와 함께 동작할 수 있는지 궁금함

    README에서 찾은 내용:

    AeroSpace는 SIP(System Integrity Protection)를 끄라고 요구하지 않음. 예를 들어 yabai는 일부 기능을 쓰려면 SIP를 꺼야 함. AeroSpace는 다른 방법을 찾거나, 예컨대 작업공간을 에뮬레이션하거나, 아니면 해당 기능을 아예 구현하지 않음. 창 투명도와 창 그림자는 실용적인 기능이 아님

    • yabai를 써봤지만 macOS Spaces 간 전환이 너무 느렸음. AeroSpace로 옮겼고 작업공간 구현이 정말 마음에 듦
      다만 yabai의 포커스가 마우스를 따라가는 기능은 정말 좋아서, AeroSpace로 i3 같은 기능을 맡기면서 yabai를 그 기능에만 쓰는 게 가능한지 궁금함
    • 마우스를 따라 포커스를 옮기는 기능이 SIP 비활성화 없이 가능할지 궁금함. 다른 macOS 창 관리자에서도 못 본 기능 중 하나임
  • 훌륭함. 지금까지 Amethyst를 써왔지만 AeroSpace가 바로 더 마음에 들었음
    Amethyst에서 가장 불만인 점은 창을 매우 굼뜨고 불안정하게 던진다는 것임. AeroSpace에서는 창이 다른 작업공간/모니터로 순식간에 이동하고 실패하지 않음
    macOS 내장 작업공간을 완전히 버리고 자체 가상 작업공간을 쓰는 점도 좋음. 작성자가 말했듯 내장 방식은 꽤 불만족스럽고, 이 방식 덕분에 다중 모니터 설정을 견딜 만하고 약간 즐겁게 다룰 수 있게 됨

    업무용 컴퓨터에서는 SIP 비활성화가 필요해서 yabai를 쓸 수 없었는데, AeroSpace 작성자는 이를 명시적으로 반대하고 있고 그 판단이 합리적으로 보임

    Linux를 쓰던 시절에는 i3에서 xmonad로 옮겼지만, macOS에서는 AeroSpace가 확실히 더 낫게 느껴짐. macOS의 세 창 관리자 모두 Linux의 진짜 창 관리자에는 못 미치지만, AeroSpace가 가능한 한도에서는 최선에 가까워 보임

    • yabai는 SIP를 끄지 않아도 잘 동작함. 아직 AeroSpace는 안 써봐서 기능 비교는 못 하겠음
  • 가짜 Spaces 접근이 마음에 듦
    창을 최소화해서 비슷하게 해볼까 생각한 적은 있지만 실제로 하진 않았음
    macOS에서는 API 부족 때문에 타일링이 우울해질 수밖에 없음. 그래도 이 방식이 아마 가장 성능 좋은 접근일 듯함
    yabai는 써봤지만 창 이동과 포커스가 마우스를 따라가는 기능에만 썼고, 타일링에는 쓰지 않았음. 불안정해서였고 yabai 탓은 아님
    nikitabobko에게 고마움

    이제 모든 가짜 작업공간의 창을 구석에 모아둔 상태에서 alt-tab이 무시하도록 수정하는 방법만 찾으면 바로 써볼 생각임
    문서에 링크된 JankyBorders도 좋음

    https://github.com/koekeishiya/yabai
    https://github.com/lwouis/alt-tab-macos
    https://github.com/FelixKratz/JankyBorders

    • 나는 Stack을 쓰고 alt+h/alt+j로 창을 오가며 해결함
      Command+Tab은 전역 창 전환이고, 위 단축키들은 작업공간 맥락 안에서의 로컬 전환용임
  • Raycast의 창 관리 도구에 어느 정도 익숙해졌는데, AeroSpace와는 사실상 같이 쓰기 어려움
    예를 들어 Raycast에서는 reasonable size 옵션으로 창을 적당한 크기로 띄우고 가운데 배치할 수 있음. 왼쪽 절반/오른쪽 절반으로 분할을 만들거나, 최대화하거나, 4분면/3분할도 가능함
    그런데 AeroSpace에서는 타일 안의 창을 왼쪽 절반, 오른쪽 절반, 왼쪽 2/3로 옮기거나 reasonable size로 플로팅하려고 해도 작동하지 않음

    또 “next desktop”과 “previous desktop”으로 앱을 옮길 때 버그가 있음. AeroSpace는 Mac의 여러 데스크톱을 자체 작업공간으로 구현한 듯해서, 영상 가이드는 실제로 서로 다른 데스크톱 간 전환이 아니라 서로 다른 작업공간 간 전환을 보여줌
    그 결과 “next desktop”과 “previous desktop”을 쓰면 타일링이 완전히 망가짐. 작업공간이 Mac의 각 데스크톱에 직접 연결되어, 작업공간 이동이 곧 데스크톱 이동이 되면 Raycast와 기본 macOS 기능과도 어느 정도 호환됐을 텐데 아쉬움

    • Raycast는 정말 좋음
      앞으로 Mac 파워유저들에게 표준 앱처럼 자리 잡을 것 같음
      유용한 기능이 너무 많아서 제대로 파봐야겠음. 나는 Linear.app 연동을 가장 많이 씀
  • 지난 5개 macOS 버전 동안 업무용 컴퓨터에서 SIP를 끄지 않고 yabai를 꽤 많이 써왔음
    정말 마음에 들고, 타일링은 며칠에 한 번 정도만 불안정함. yabai 명령을 최소 1분에 한 번은 실행하는 편인데도 그렇다 보니 yabai --restart-service를 단축키에 묶어뒀고, 실행하면 항상 바로 돌아옴

    그래서 꽤 안정적이고 훌륭하다고 느낌. 다중 모니터는 어렵고 많이 쓰진 않지만, 스택과 빠른 “전체화면”식 최소화가 정말 좋음

    일부 버전 업그레이드 때는 회사 백신이 바이러스로 보고 24시간 비활성화하는데, 그날은 컴퓨터 쓰기가 싫어질 정도로 둔하고 우울하게 느껴짐

  • 몇 달째 써보고 있음. i3는 거의 완벽하고 AeroSpace는 좋은 시도지만, i3와는 거리가 꽤 멀고 상당히 불안정함
    아마 Mac OS X가 Unix 창 관리자처럼 완전한 제어를 허용하지 않기 때문인 것 같음

    그래도 더 나은 건 아직 못 찾았음. Apple Silicon에서 Linux가 잘 돌아가게 되면 설치할 예정임. 적어도 나에게는 i3 하나만으로도 Linux를 쓸 이유가 충분하고, Mac OS X는 창 관리자 측면에서 정말 별로임

    • 취미 프로젝트로 이와 가까운 영역을 조금 건드려봤는데, 공식 API가 제한적이기 때문임
      결국 문서화되지 않은 비공개 API와 해킹에 많이 의존하게 됨. 이런 것들은 내부용이라 불안정하고, 운영체제 자체도 창/프로세스 관리에 큰 간섭을 하는 상황에 잘 협조하도록 설계되지 않았음. 그래서 운영체제와 서드파티 앱이 자주 서로 발을 밟게 됨

    • 같은 문제가 있음. 아직 OSX 기본 전체화면 모드를 제대로 다루는 창 관리자를 못 찾았음
      AeroSpace는 기본 전체화면을 쓰면 정신을 못 차림. 어디에 포커스를 둬야 하는지 헷갈려 함

      내 경우:

      Workspace 1: terminal
      Workspace 2: slack app
      Open chrome in native full screen

      이제 workspace 1로 전환해보면 문제가 생김

      당분간 기본 전체화면 앱 없이 더 써볼 생각임. 그러면 더 잘 동작하길 바람

  • 이 제품과 Yabai의 사용자 경험 차이가 궁금함. Yabai의 SIP 문제는 큰 이슈라고 생각하지 않음. 내가 아는 Yabai 사용자 중 SIP를 끄는 사람은 없고, 다들 잘 쓰는 듯함
    차이가 i3 스타일인지 궁금함

    개인적으로는 Fluxbox처럼 보조키 조합을 누른 상태에서 창의 어느 위치에서든 마우스로 크기 조절과 이동을 할 수 있게 해주는 유틸리티를 씀. 자동화되진 않았지만 불안정하지도 않음. 완전히 관리되는 방식으로 가기보다는, 마우스 이동을 줄여 플로팅을 훨씬 쉽게 만드는 쪽에 가까움

    • 둘 다 많이 써봤고 나는 AeroSpace가 더 좋음
      나에게 결정적인 건 다중 모니터 지원이고, 그 외에도 작은 장점들이 있음

      Yabai에서 작업공간을 새 모니터로 옮기면 ID가 바뀌어서 키보드 단축키로 계속 접근할 수 없음. alt+2가 깨지는 이유는 더 이상 workspace 2가 아니고 11이나 다른 번호가 되기 때문임. AeroSpace에서는 alt+malt+shift+m으로 작업공간을 모니터 사이에 쉽게 옮길 수 있음

      또 다른 기능은 Mission Control 애니메이션 없이 창이 즉시 붙는다는 점임. 이게 정말 크게 거슬리는 부분이었음

      내가 거의 매일 필요한 기능은 이 두 가지이고, 작업공간 지원이 부족해서 Yabai는 내게 완전히 못 쓸 물건에 가까움

    • Yabai에서 Spaces를 어떤 식으로든 다루거나, 창의 쌓임 순서를 바꾸거나, 그 밖의 많은 기능을 쓰려면 SIP를 꺼야 함 [0]
      그런 기능을 안 쓰면 각자 선택이지만, 많은 사용자에게는 핵심 기능임

      [0] https://github.com/koekeishiya/yabai/wiki/Disabling-System-I...

  • Amethyst와 무엇이 다른지 궁금함. Amethyst는 최근 훨씬 안정적이 됐고 즐겁게 쓰고 있음
    텍스트 기반 설정은 첫인상으로 꽤 좋아 보이지만, 갈아탈 만한지는 잘 모르겠음

    • 지금까지 Amethyst를 써왔지만 AeroSpace가 바로 더 마음에 들었음
      Amethyst에서 가장 불만인 점은 창을 매우 굼뜨고 불안정하게 던진다는 것임. AeroSpace에서는 창이 다른 작업공간/모니터로 순식간에 이동하고 실패하지 않음
      macOS 내장 작업공간을 완전히 버리고 자체 가상 작업공간을 쓰는 점도 좋음. 덕분에 다중 모니터 설정을 견딜 만하고 약간 즐겁게 다룰 수 있게 됨

      Linux 시절에는 i3에서 xmonad로 옮겼지만, macOS에서는 AeroSpace가 확실히 더 낫게 느껴짐. macOS의 세 창 관리자 모두 Linux의 진짜 창 관리자에는 못 미치지만, AeroSpace가 가능한 한도에서는 최선에 가까워 보임

    • 내 경험상 AeroSpace가 대부분의 면에서 훨씬 나음
      몇 가지 이상한 점이 있고 버그 리포트를 몇 개 올려야 하긴 하지만, Amethyst보다 macOS를 훨씬 견딜 만하게 만들어 줬음

    • Amethyst에서도 텍스트 기반 설정을 할 수 있음
      https://github.com/ianyh/Amethyst/blob/development/docs/conf...

  • 지난 몇 달 동안 이걸 써왔고, 대체로 마음에 듦. 전부 단일 파일로 설정된다는 점, 즉 GUI가 없다는 점이 좋음
    한 가지 문제는 앱이 Mac 기본 탭을 쓰면 AeroSpace가 각 탭을 창으로 취급해서 전체화면 기능이 완전히 망가진다는 것임. Alacritty가 한 예인데, 꽤 이상함

    관련 이슈가 열려 있음:
    https://github.com/nikitabobko/AeroSpace/issues/68

    • Yabai도 같은 문제를 겪고 있고, 아직 제작자가 고치지 못했음