홈으로 돌아가기

매뉴얼

Azimuth는 macOS 메뉴바 윈도우 매니저입니다. 포커스된 일반 창을 키보드로 예측 가능하게 배치하고 변형하며 이동합니다. 씬이나 자동화 없이.

똑똑한 추론보다 예측 가능성.

요구사항

Azimuth 사용 전에 알아야 할 다섯 가지.

Accessibility 권한

Azimuth는 손쉬운 사용 API로 윈도우를 제어합니다. 시스템 설정 → 개인 정보 보호 및 보안 → 손쉬운 사용에서 Azimuth를 활성화하세요(macOS 10.13~12: 시스템 환경설정 → 보안 및 개인 정보 보호 → 개인 정보 보호 → 손쉬운 사용). 첫 실행 시 메뉴바 항목에서 짧은 안내가 표시되며, 권한이 없으면 알맞은 설정 창으로 바로 연결합니다.

Azimuth 실행

릴리스 페이지에서 DMG를 다운로드하고 Azimuth를 응용 프로그램 폴더로 드래그하세요. 빌드 도구가 필요 없습니다. 릴리스 빌드는 Developer ID 서명 + 공증을 거쳐 Gatekeeper 경고 없이 바로 열립니다.

대상 창

Azimuth는 대상 앱의 포커스된 창에 작용합니다. 표준 창과 대화상자는 항상 받아들이고, 그 밖의 창은 — macOS가 종류를 알려주지 않는 창(일부 Java·Electron 앱)을 포함해 — 위치와 크기를 모두 바꿀 수 있다고 macOS가 답할 때 받아들입니다. 풀스크린 스페이스, 최소화된 창, 이동·리사이즈를 거부하는 창(보통 시트·패널)은 명확한 실패 메시지와 함께 건너뜁니다. 이동은 되지만 크기를 바꿀 수 없는 표준 창·대화상자는 크기를 그대로 두고, 배치 명령은 목표 영역이 닿은 모서리나 목표 영역의 가운데로 위치만 옮깁니다. 실패로 알리는 것은 상대 축소뿐입니다.

대상 앱 정책

명령은 직전에 활성화된 non-Azimuth 앱의 포커스 창에 작용합니다. Azimuth 설정창을 열어도 대상은 바뀌지 않으며, 이전 작업 앱이 계속 대상으로 유지됩니다.

macOS 버전

Azimuth 2.x는 macOS 14 (Sonoma) 이상에서 실행됩니다. macOS 13에서는 macOS 13용 마지막 버전인 1.7.7을 쓰세요(이후 업데이트 없음). macOS 10.13~12에서는 레거시판(1.7.2 Legacy)을 쓰세요. 핵심 기능은 같고 새 기능은 들어가지 않습니다. 어느 쪽이든 macOS를 업그레이드한 뒤 업데이트를 확인하면 그 macOS에서 돌 수 있는 가장 새 버전으로 옮겨 갑니다. 사용 중인 Mac에서 지원하는 최신 macOS를 쓰는 것이 좋습니다.

macOS 13용 1.7.7 받기 →

레거시판(1.7.2 Legacy) 받기 →

모든 버전과 릴리스 노트 →

기능 요약

영역별로 정리한 구현 완료 및 예정 기능 전체 목록.

영역 기능 상태
앱 셸 메뉴바 앱 + Dock 숨김(릴리스) + 설정창(General · Shortcuts · Advanced · About) ✅
앱 셸 메뉴바 팝오버: 34개 명령 타일, 권한 상태, 마지막 실패 사유(오른쪽 클릭은 메뉴) ✅
입력 명령 팔레트(⌃⌥P): 모든 명령 검색, 창이 갈 자리 미리 보기 ✅
입력 단축키 치트시트: 단축키의 수정키를 누르고 있으면 자판 지도 표시 ✅
첫 실행 첫 실행 안내 + 주요 단축키 연습 창 ✅
설치 설치 뒤 설치 디스크 이미지를 꺼내고 휴지통으로 옮길지 물어봄 ✅
권한 Accessibility 상태 표시·요청·설정 이동 ✅
창 식별 포커스 창 해석(표준 창·대화상자, 또는 이동·리사이즈 가능하다고 답하는 창); 풀스크린·최소화·무포커스는 건너뜀 ✅
명령 작업영역 최대화 (또는 균일 여백) ✅
명령 절대 배치 1/3 (가로 좌·중·우 / 세로 상·중·하) ✅
명령 절대 배치 2/3 (가로 좌·우 / 세로 상·하) ✅
명령 반분 + 인접 모니터 튕기기 (snapThrow, 좌·우·상·하) ✅
명령 현재 크기 유지 이동 (좌·우·상·하) · 화면 중앙 이동 ✅
명령 상대 변형 1/2 · 2/3 (좌·우·상·하 edge 고정) ✅
명령 다음 디스플레이로 이동 (moveToDisplay, 크기 유지) ✅
명령 되돌리기 (창당 최대 20단계) ✅
좌표 멀티모니터 지원 + 위치 인식형 인접 디스플레이 선택 ✅
입력 전역 단축키(Carbon) · Standard / Vim 프리셋 ✅
설정 프리셋 선택 / 실패 비프·알림 토글 / Undo 단계·창 수 / 로그인 자동 실행 ✅
설정 명령별 단축키 커스터마이즈 + 충돌 경고 ✅
설정 명령 그룹 on/off · 개별 unbind · 메뉴바 아이콘 숨김 ✅
설정 업데이트: 현재 버전 + 업데이트 확인… ✅
설정 Advanced 탭: 응답 없는 앱을 얼마나 기다릴지(Quick 0.25초 / Balanced 0.5초 / Patient 1초) ✅
업데이트 자동 업데이트(Sparkle): appcast 확인, EdDSA+공증 검증, 자리 업데이트 ✅
안정성 AX 메시징 타임아웃·일시적 실패 스킵·권한 캐시 하드닝 ✅
예정 anchor: 다른 창 기준 상대 배치 🟡
예정 scene 저장/복원, app별 기본 위치 🟡
예정 URL scheme / Shortcuts / app별 규칙 🟡

단축키 외의 도구

명령을 실행하고 키를 익히는 다른 방법.

메뉴바 팝오버

메뉴바 아이콘을 클릭하면 34개 명령이 설정과 같은 그룹으로 묶인 타일 팝오버가 열립니다. 타일을 클릭하거나, 화살표 키로 옮긴 뒤 Return이나 Space를 누르면 앞 창에 적용됩니다. 마지막으로 쓴 타일은 강조되고, macOS 26 이상에서는 유리 질감으로 보입니다. 팝오버에는 권한 상태와 마지막 실패 사유도 나오고, 아래에 설정 열기·업데이트 확인·종료가 있습니다. 아이콘을 오른쪽 클릭하거나 Control-클릭하면 메뉴가 열립니다.

명령 팔레트 (⌃⌥P)

⌃⌥P를 누르면 모든 명령을 찾는 검색 패널이 열립니다. 이름의 일부나 “max”, “third”, “monitor” 같은 낱말을 입력하고 ↑↓로 고른 뒤 Return을 누르면 앞에 있던 창에 적용됩니다. Esc는 닫기입니다. 고른 명령이 창을 놓을 자리는 호박색 점선 윤곽으로 보입니다. 검색어가 비어 있으면 최근에 쓴 명령이 먼저 나옵니다. 이름은 영어로 검색합니다. 단축키는 설정 → Shortcuts → Command Palette에서 바꾸거나 끕니다.

단축키 치트시트

⌃⌥처럼 단축키의 수정키를 잠깐(기본 0.8초) 누르고 있으면, 그 수정키와 함께 각 키가 무엇을 하는지 자판 지도가 나옵니다. 손을 떼거나 키를 누르면 닫힙니다. 설정 → General → Cheat Sheet에서 끄거나 지연을 바꿉니다. 이를 위해 Azimuth는 어떤 수정키가 눌려 있는지와 키가 눌렸다는 사실만 보고, 어떤 키인지는 읽지 않습니다.

연습 창

첫 실행 때 메뉴바 아이콘 아래에 짧은 안내가 나옵니다. 권한이 있으면 Try the Shortcuts가 연습 창을 열고, 견본 창을 Left 1/2, Maximize, Undo로 움직여 볼 수 있습니다. 다시 열려면 아이콘의 오른쪽 클릭 메뉴(Practice Shortcuts…)나 설정 → General → Practice를 쓰세요.

설치 파일 정리

Applications에서 Azimuth를 처음 실행할 때 Azimuth 디스크 이미지가 아직 연결돼 있으면, 버전마다 한 번 그 이미지를 꺼내고 .dmg를 휴지통으로 옮길지 묻습니다. macOS가 다운로드 폴더 접근을 물을 수 있으며, 거부하면 디스크 이미지만 꺼내고 파일은 남겨 둡니다.

단축키 — 전체 34개 명령

네 가지 수식키 레이어가 각각 독립된 동작 그룹을 담당합니다. 레이어는 절대 겹치지 않습니다.

⌃⌥
반분(스냅/튕기기) · 최대화 · 가운데 · 되돌리기 · 삼등분 & 삼분의 이 (숫자 키)
⌃⌥⌘
이동 (현재 크기 유지)
⌃⌥⇧
상대 축소 (고정 엣지 기준 1/2; 2/3은 ⌃⌥⇧ M , . /)
⌃⌥⌘⇧
다음 디스플레이로 이동
그룹 명령 단축키 (Standard)
반분 (snap+튕기기) 왼쪽
⌃⌥←
오른쪽
⌃⌥→
위
⌃⌥↑
아래
⌃⌥↓
최대화 · 되돌리기 · 가운데 최대화
⌃⌥↩
여백 최대화
⌃⌥⇧↩
되돌리기
⌃⌥⌫
가운데 배치
⌃⌥C
삼등분 (1/3) 수평: 왼쪽 · 가운데 · 오른쪽
⌃⌥123
수직: 위 · 가운데 · 아래
⌃⌥456
삼분의 이 (2/3) 수평: 왼쪽 · 오른쪽
⌃⌥78
수직: 위 · 아래
⌃⌥90
이동 (크기 유지) 좌 · 우 · 위 · 아래
⌃⌥⌘←→↑↓
상대 축소 (1/2) 좌 · 우 · 위 · 아래
⌃⌥⇧←→↑↓
상대 축소 (2/3) 좌 · 하 · 상 · 우
⌃⌥⇧M,./
다음 디스플레이로 이동 좌 · 우 · 위 · 아래
⌃⌥⌘⇧←→↑↓
Vim 프리셋: 방향 키와 되돌리기만 변경됩니다. 방향은 H (왼쪽) · L (오른쪽) · K (위) · J (아래)로 바뀌고, 되돌리기 → U. 최대화, 가운데, 숫자 단축키는 동일합니다.

예시: ⌃⌥H (좌½) · ⌃⌥⌘K (위로 이동) · ⌃⌥⇧J (아래 축소) · ⌃⌥⌘⇧L (오른쪽 모니터로) · ⌃⌥U (되돌리기).
단축키 없이 실행: 메뉴바 아이콘을 클릭해 팝오버에서 명령을 고르거나, ⌃⌥P를 눌러 명령 팔레트에서 검색하세요(아래 '단축키 외의 도구' 참고). 설정창(⌘,)은 네 화면입니다: General(권한 상태, 로그인 자동 실행, 메뉴바 아이콘 숨김, 실패 소리·알림, 치트시트, 연습), Shortcuts(프리셋, 명령 팔레트 단축키, 명령별 녹화·Reset, 그룹·명령 on/off), Advanced(창당 Undo 단계와 기억할 창 수, 응답 없는 앱을 얼마나 기다릴지), About(버전과 업데이트). Shortcuts 화면의 그룹은 모두 접힌 채로 시작합니다 — 삼각형으로 펼치거나, 검색란에 입력하면 해당 그룹이 저절로 펼쳐집니다.

실행 시 34개 키 조합을 등록합니다. 등록이 실패하면(다른 앱이나 macOS가 이미 그 조합을 쥐고 있거나, 단축키 시스템을 시작하지 못한 경우) 설정창의 해당 행에 "In use by system" 로 표시됩니다. macOS가 선점한 일부 조합은 등록은 성공한 것으로 보이고 Azimuth에 닿기 전에 가로채이는데, Azimuth 쪽에서는 이를 구분할 수 없어 배지가 뜨지 않고 단축키만 듣지 않습니다. 어느 쪽이든 모든 단축키는 설정창 레코더로 다시 지정할 수 있습니다.

명령 동작 상세

각 명령이 정확히 무엇을 하는지 — 무엇이 바뀌고, 무엇이 유지되며, 경계 조건이 어떻게 처리되는지.

최대화
⌃⌥↩

작업영역(메뉴바·Dock을 제외한 가시 영역)을 가득 채웁니다. 시스템 크롬과 겹치지 않는 모든 픽셀을 사용합니다.

여백 최대화
⌃⌥⇧↩

최대화와 같지만 사방에 균일한 12pt 여백을 남겨 창이 화면 가장자리에 닿지 않습니다 — 시각적 여유, 타일링 친화적. 작업영역이 여백보다 작으면 평범한 최대화로 대체됩니다.

절대 배치 (1/3 · 2/3)
⌃⌥1–0

창을 작업영역의 정확한 비율로 배치합니다. 축이 독립적입니다: 가로 명령은 x/너비만, 세로 명령은 y/높이만 변경합니다. 자유롭게 조합하세요 — 가로 1/3 후 세로 1/3을 적용하면 모서리나 중앙 셀에 배치됩니다.

반분 + 튕기기 (snapThrow)
⌃⌥←→↑↓

두 단계 동작: 창이 아직 그 절반에 없으면 스냅합니다. 이미 그 절반에 있으면 같은 방향의 인접 디스플레이로 던져져 반대쪽 절반에 배치됩니다(오른쪽으로 던지면 오른쪽 디스플레이의 왼쪽 절반에 착지). 그 방향에 인접 디스플레이가 없으면 현 위치를 그대로 유지합니다.

이동 (크기 유지)
⌃⌥⌘←→↑↓

창을 자체 너비(수평) 또는 높이(수직)만큼 정확히 이동합니다. 크기 변경과 디스플레이 이동은 없습니다. 작업영역 경계에서 클램프 — 계속 누르면 끝까지 밀려 경계에 붙습니다. 이미 화면 밖으로 벗어난 창은 작업영역 안으로 회수되므로, 방향 이동이 창을 더 밀어내지 않고 화면 안으로 되돌릴 수 있습니다. 창이 작업영역보다 크면 그 축으로 움직일 여지가 없어 해당 가장자리에 붙은 채로 남습니다.

가운데 배치
⌃⌥C

창 크기를 변경하지 않고 작업영역 중앙으로 이동합니다.

상대 변형 (1/2 · 2/3 축소)
⌃⌥⇧←→↑↓
⌃⌥⇧M,./

현재 창 크기 기준(화면 기준 아님)으로 고정 엣지 방향을 기준으로 1/2(화살표) 또는 2/3(M , . / → 좌/하/상/우, Vim HJKL 배치)로 줄입니다. 지정 방향의 엣지는 고정되고 반대쪽 엣지가 안쪽으로 이동합니다. 정확·반복·조합 가능: 2/3 후 1/2 = 1/3.

다음 디스플레이로 이동
⌃⌥⌘⇧←→↑↓

창을 지정 방향의 인접 디스플레이로 옮기면서 새 화면에서의 상대 위치를 유지합니다 — 중앙에 있던 창은 해상도가 달라도 중앙에 놓입니다. 대상 작업영역에 들어가면 픽셀 크기를 그대로 유지하고, 들어가지 않으면 두 축을 같은 배율로 줄여 모양(종횡비)을 보존합니다. 그 방향에 인접 디스플레이가 없으면 현 위치를 유지합니다.

크기 고정 창

이동은 되지만 크기를 바꿀 수 없는 표준 창·대화상자(초록 확대 버튼이 회색인 창)는 크기를 그대로 두고, 배치 명령은 위치만 옮깁니다. 축마다 목표 영역이 닿은 작업영역 모서리에 붙고, 목표 영역이 양쪽 모서리에 다 닿거나 어느 쪽에도 닿지 않으면 목표 영역의 가운데에 놓입니다 — Left 1/2는 왼쪽 모서리·세로 가운데, Maximize는 화면 한가운데입니다. 같은 방향을 다시 누르면 지금처럼 옆 디스플레이로 던집니다. 상대 축소는 여전히 “This window can’t be resized”로 알립니다.

되돌리기
⌃⌥⌫

창의 이전 프레임을 복원하고, 다시 누르면 한 단계씩 더 되돌아갑니다. 창마다 최근 프레임을 따로 기억합니다 — 기본 5단계, Settings → Advanced → Undo에서 1–20으로 조정하며, 같은 곳에서 기록을 남길 최근 창 수도 정합니다(기본 64, 1–256). 둘 중 하나를 줄이면 다음 창 명령이나 Undo 때 가장 오래된 기록부터 잘립니다. 숫자가 아닌 입력은 원래 값으로 돌아가고, 범위를 벗어난 값은 가까운 끝값으로 맞춰집니다. Undo 자체는 기록하지 않으므로 Redo는 없습니다. 디스플레이 구성이 변경되면(모니터 연결·분리 등) 절대 좌표가 무효화되므로 이력은 폐기됩니다.

실패 피드백

명령이 완료될 수 없을 때 Azimuth는 비프음을 재생하고(설정에서 끌 수 있음) 실패 사유를 기록해 메뉴바 팝오버(아이콘을 오른쪽 클릭하면 나오는 메뉴에도)에서 확인할 수 있습니다. 실패 시 알림을 받도록 선택할 수도 있습니다. Space 전환이나 윈도우 애니메이션 중 발생하는 일시적 실패는 즉시 자가 해결되므로 비프 없이 조용히 스킵됩니다. 두 경우는 다르게 동작합니다. Accessibility 권한이 없어서 실패했다면 Azimuth가 설정창을 대신 열어 줍니다 — 실행당 한 번뿐이라 성가시지 않습니다. 대상 앱이 너무 오래 답하지 않아 실패했다면 사유가 "The app is taking too long to respond"으로 표시되며, 얼마나 기다릴지는 설정 → Advanced에서 정합니다.

크기 증분 앱 참고 (터미널 등): 일부 앱은 윈도우 크기를 문자 격자 단위로 제한합니다. Azimuth가 반분 또는 최대화 명령을 적용하면 결과가 가장 가까운 문자 셀로 내림되어 경계에 한 줄 미만의 빈틈이 생길 수 있습니다. 이는 앱 수준의 제약이며 정상 동작입니다. 또한 작업영역은 메뉴바·Dock을 제외하므로 화면 끝과의 간격은 정상입니다.

로드맵

우선순위 순으로 정리한 예정 작업.

단계 내용 상태
P8 / v1 대표 앱(Finder/Safari/Terminal/VS Code/Xcode) 회귀 + 실패 케이스 수집·안정화 → v1 출시 기준 ✅ 완료 / 안정화
후속 하드닝 DisplayResolver 인접 판정 엣지 기반화 (비대칭 레이아웃 대응) ⏸ 보류
다음 anchor: 동일 모니터 내 다른 창을 기준으로 현재 창 붙이기/크기 맞추기 🟡
이후 워크스페이스: app별 기본 위치, named scene 저장/복원, monitor-aware scene 🟡
장기 자동화: URL scheme, AppleScript/Shortcuts action, app별 규칙, edge stash/pin 🟡
“예측 가능성 > 똑똑한 자동 추론. 단순 명령 조합으로 낼 수 있는 효과는 별도 기능으로 추가하지 않는다.”