
Wrangler는 macOS 창을 화면 격자에 맞춰 배치하고, 화면 가장자리로 끌어 놓거나 자동 타일링으로 정리하는 오픈소스 창 관리자다. 시각적 조작과 키보드 단축키를 함께 제공하며, 시스템 무결성 보호(SIP)를 해제하지 않고 macOS 접근성 API를 사용한다고 프로젝트는 설명한다.
Wrangler 저장소에서 Homebrew로 설치하거나 DMG 파일을 내려받을 수 있다. Homebrew 설치 명령은 다음과 같다.
brew install mezzie/tap/wrangler
DMG를 이용하려면 최신 릴리스에서 Wrangler.dmg를 내려받아 Wrangler를 /Applications 디렉터리로 옮긴 뒤 실행한다. 처음 실행할 때는 시스템 설정의 ‘개인정보 보호 및 보안 → 손쉬운 사용’에서 접근성 권한을 허용해야 한다.
소스에서 빌드할 수도 있다.
git clone https://github.com/mezzie/wrangler.git
cd wrangler
./scripts/build-app.sh
open build/Wrangler.app
창 배치 기능과 단축키
⌥ Space를 누르면 마우스 커서 위치에 떠 있는 격자 HUD가 열린다. 격자 셀을 클릭하고 드래그해 창을 보낼 영역을 지정할 수 있으며, 마우스를 놓기 전에 반투명 미리보기가 배치 위치를 보여준다. ESC를 누르면 창을 옮기지 않고 오버레이를 닫는다.
창 제목 표시줄을 잡고 화면 가장자리나 모서리로 끌면 스냅 존이 작동한다. 울트라와이드 화면을 고려한 배치 템플릿은 화면을 좌우 50%씩 나누는 분할, 33%씩 나누는 3열 배치, 좌우 25%와 가운데 50%로 구성하는 중앙 집중 배치, 화면을 4분할하는 모서리 배치다.
⌃ ⌥ T를 누르면 활성 디스플레이에서 보이고 최소화되지 않은 창을 균형 잡힌 이진 공간 분할(BSP) 트리로 정리한다. 프로젝트 설명에 따르면 이 기능은 창이 겹치지 않도록 크기를 조정하면서 활성 앱에 포커스를 유지한다. 특정 앱을 자동 타일링과 스냅 대상에서 제외하려면 계산기, 1Password, 떠 있는 패널 같은 유틸리티 앱을 무시 목록에 추가할 수 있다.
⌃ ⌥ ↵ 또는 ⌃ ⌥ M은 포커스된 창을 화면에서 보이는 영역 전체로 최대화한다. ⌥ ⌘ Z는 마지막 스냅 전 창의 좌표를 복원한다. 방향별 너비 프리셋은 같은 단축키를 반복해서 누를 때 비율이 바뀐다. 예를 들어 왼쪽 절반 배치는 너비가 1/2, 2/3, 1/3인 설정을 순환한다.
여러 디스플레이 사이에서 창을 옮기는 단축키도 제공한다. ⌃ ⌥ →는 포커스된 창을 다음 디스플레이로, ⌃ ⌥ ←는 이전 디스플레이로 이동하며 비례 크기를 유지한다. macOS Stage Manager의 썸네일이 보이는지 감지해 창이 해당 영역을 덮지 않도록 여백을 조절하는 기능도 있다.
| 단축키 | 동작 | 설명 |
|---|---|---|
⌥ Space | 격자 오버레이 | 마우스 커서 위치에 대화형 격자 HUD를 연다 |
⌃ ⌥ ↵ 또는 ⌃ ⌥ M | 최대화 | 포커스된 창을 화면의 보이는 영역 전체로 확장한다 |
⌃ ⌥ T | 자동 타일링 | 열린 창을 겹치지 않는 BSP 트리로 정리한다 |
⌃ ⌥ → | 다음 화면 | 포커스된 창을 연결된 다음 디스플레이로 옮긴다 |
⌃ ⌥ ← | 이전 화면 | 포커스된 창을 이전 디스플레이로 옮긴다 |
⌥ ⌘ Z | 실행 취소 | 마지막 스냅 전 창의 좌표로 되돌린다 |
⌘ , | 환경설정 | 격자 크기, 여백, 템플릿, 언어 설정을 연다 |
ESC | 취소 | 창을 옮기지 않고 오버레이를 닫는다 |
모든 단축키는 환경설정의 ‘Shortcuts’에서 원하는 키를 눌러 지정하는 대화형 키 입력 도구로 바꿀 수 있다.
환경설정과 자동화
⌘ ,로 여는 환경설정 창은 여러 섹션으로 구성된다. ‘Snap Zones’에서는 드래그 스냅을 켜거나 끄고 울트라와이드 템플릿을 선택하며, 가장자리 감지 민감도를 15~60픽셀 범위에서 조절한다. ‘Grid & Gaps’에서는 기본 열 수를 2~12개, 행 수를 1~8개로 설정하고 창 사이 여백을 0~32픽셀, 화면 바깥쪽 여백을 0~40픽셀로 지정할 수 있다.
‘Behavior’에서는 Stage Manager 영역을 피하는 여백 조절과 너비 순환을 켜거나 끌 수 있다. 로그인 시 실행 옵션은 SMAppService를 사용하며, 앱 안에서 언어를 선택하는 설정도 제공한다. ‘Restore Defaults’에는 탭별 초기화 버튼이 있어 다른 설정을 지우지 않고 해당 탭의 기본값을 복원한다.
Wrangler에는 별도 헤드리스 명령줄 도구인 wrangler-cli도 포함된다. 아래 명령으로 권한을 확인하고, 연결된 디스플레이와 앞에 있는 창을 조회하며, 창을 표준 배치나 사용자 지정 격자 좌표에 맞출 수 있다.
# Authorization check
swift run wrangler-cli check-perm
# List connected displays and geometry
swift run wrangler-cli screens
# Inspect frontmost target window
swift run wrangler-cli target
# Snap focused window to standard presets
swift run wrangler-cli snap left-half
swift run wrangler-cli snap right-half
swift run wrangler-cli snap full
swift run wrangler-cli snap center
# Snap to custom grid coordinates: <cols> <rows> <startCol> <startRow> <endCol> <endRow>
swift run wrangler-cli custom 4 4 0 0 1 2
업데이트와 개발
앱은 GitHub Releases에서 새 버전을 주기적으로 확인한다. 업데이트가 있으면 터미널 명령 없이 한 번의 클릭으로 앱을 교체하고 다시 시작할 수 있다고 프로젝트는 안내한다.
자동 테스트는 다음 명령으로 실행한다.
swift test
릴리스용 .app 번들은 다음 명령으로 빌드하고, DMG 패키지는 버전을 지정해 만든다.
./scripts/build-app.sh
./scripts/create-dmg.sh 1.5.0
저장소는 핵심 로직을 담은 WranglerCore와 네이티브 macOS 앱인 WranglerApp으로 구성된다. 핵심 로직에는 접근성·창 순서 감지, 디스플레이와 Stage Manager 위치 처리, 격자 좌표 계산과 여백, 실행 취소 기록, 단축키 데이터, 설정과 프리셋, 스냅 존, BSP 자동 타일링이 포함된다. 앱 쪽에는 앱 생명주기와 메뉴 막대, 전역 단축키, 로그인 항목, HUD 오버레이와 미리보기, 환경설정, 드래그 감지 및 드롭 처리, 업데이트 기능이 들어간다.
Wrangler는 MIT 라이선스로 배포된다. 변경 내역은 CHANGELOG.md, 라이선스 전문은 저장소의 MIT License에서 확인할 수 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요