# Hammerspoon - Lua로 구현된 강력한 macOS 데스크톱 자동화 도구

> Clean Markdown view of GeekNews topic #27511. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=27511](https://news.hada.io/topic?id=27511)
- GeekNews Markdown: [https://news.hada.io/topic/27511.md](https://news.hada.io/topic/27511.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-03-15T07:33:11+09:00
- Updated: 2026-03-15T07:33:11+09:00
- Original source: [github.com/Hammerspoon](https://github.com/Hammerspoon/hammerspoon)
- Points: 4
- Comments: 1

## Topic Body

- macOS 환경을 **Lua 스크립트로 제어**할 수 있는 오픈소스 자동화 도구로, 운영체제와 스크립팅 엔진을 연결하는 **브리지 역할**을 수행  
- 다양한 **확장 모듈(extensions)** 을 통해 시스템 기능을 노출하고, 이를 조합해 창 관리, 입력 제어 등 복잡한 작업을 자동화 가능  
- 설치는 **Homebrew** 또는 수동 다운로드 방식으로 지원되며, 사용자 설정 파일 `~/.hammerspoon/init.lua`를 직접 작성해야 동작  
- 프로젝트는 **Mjolnir**에서 포크되어 더 통합된 사용자 경험을 제공하며, 지속적으로 **시스템 API 확장**과 **확장 간 통합 강화**를 목표로 함  
- 개발자와 파워유저가 macOS를 세밀하게 제어할 수 있는 **고급 자동화 플랫폼**으로 자리잡음  

---

### Hammerspoon 개요
- Hammerspoon은 macOS(구 OS X)의 **강력한 자동화 도구**로, 운영체제와 **Lua 스크립팅 엔진**을 연결하는 브리지 형태로 동작  
  - 사용자는 Lua 스크립트를 통해 시스템의 다양한 기능을 제어 가능  
- 핵심 기능은 **확장 모듈(extensions)** 을 통해 제공되며, 이 모듈들이 시스템의 특정 기능을 노출함  
  - 이를 이용해 창 관리, 오디오 제어, 입력 장치 설정 등 다양한 자동화 작업을 수행 가능  

### 설치 방법
- **수동 설치**
  - GitHub의 [최신 릴리스](https://github.com/Hammerspoon/hammerspoon/releases/latest)를 다운로드  
  - `Hammerspoon.app`을 `Applications` 폴더로 이동  
- **Homebrew 설치**
  - 명령어: `brew install hammerspoon --cask`  

### 초기 설정 및 활용
- 설치 직후에는 아무 동작도 하지 않으며, 사용자가 직접 `~/.hammerspoon/init.lua` 파일을 만들어야 함  
- 참고 가능한 리소스:
  - [Getting Started Guide](https://www.hammerspoon.org/go/)
  - [API 문서](https://www.hammerspoon.org/docs/)
  - [FAQ](https://www.hammerspoon.org/faq/)
  - [샘플 설정 모음](https://github.com/Hammerspoon/hammerspoon/wiki/Sample-Configurations)
  - [개발자 기여 가이드](https://github.com/Hammerspoon/hammerspoon/blob/master/CONTRIBUTING.md)
  - IRC 채널(#hammerspoon on Libera) 및 [Google Group](https://groups.google.com/forum/#!forum/hammerspoon/) 지원  

### 프로젝트의 역사
- Hammerspoon은 **Mjolnir 프로젝트의 포크**로 시작됨  
  - Mjolnir는 최소한의 애플리케이션 구조를 지향하며, 확장을 외부 Lua 패키지로 관리  
  - Hammerspoon은 이를 기반으로 **더 통합된 사용자 경험**을 제공하기 위해 개발됨  

### 프로젝트의 향후 방향
- **시스템 API 확장 범위 확대**  
- **확장 모듈 간 통합 강화**  
- **사용자 경험 개선**  

### 기술 구성 및 통계
- 주요 언어 구성: **Objective-C 51%**, **Lua 24.7%**, **C 16.3%**, **HTML 5.6%**, **Shell 0.7%**, **Python 0.5%**  
- GitHub 통계: **14.9k stars**, **678 forks**, **133명 기여자**  
- 라이선스: **MIT License**  
- 공식 웹사이트: [www.hammerspoon.org](http://www.hammerspoon.org)  

### 주요 주제 태그
- **macOS**, **automation**, **lua**, **objective-c**, **osx**, **mjolnir**, **hammerspoon**, **irc**

## Comments



### Comment 53031

- Author: neo
- Created: 2026-03-15T07:33:11+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47367932) 
- **Hammerspoon**은 내 Mac을 하나로 묶는 접착제 같은 존재임  
  Safari 탭을 Obsidian 문서로 덤프하거나, **Hyper 키 조합(Ctrl+Opt+Cmd)** 으로 Safari, Finder, Terminal, VS Code, Notes 등 주요 앱을 새 창으로 띄움  
  AeroSpace와 연동해 창을 다른 모니터로 옮기거나, 두 창을 나란히 배치하고, 교체하거나, 모든 창을 한 워크스페이스로 모으는 등 다양한 자동화를 설정해둠  
  또한 백그라운드 앱이 죽으면 자동으로 재시작하고, 디스크 이미지가 휴지통으로 가면 언마운트하도록 프롬프트를 띄움  
  Skim과 연동해 Markdown 링크로 PDF의 특정 섹션으로 점프하는 기능도 있음
  - 나는 두 가지 용도로만 씀 — Teams 창 목록을 확인해 회의 중이면 HomeAssistant에 웹훅을 보내 **조명 프리셋**을 바꾸고, ical 캘린더를 내려받아 15분 내 회의가 있으면 “pending” 프리셋으로 전환함  
    원래 Outlook 공유 링크를 썼지만 인증이 필요해져서 Apple Calendar를 경유함. 다만 일정의 40%만 동기화되는 건 여전히 미스터리임
  - Safari 탭을 Obsidian으로 덤프하는 방법이 궁금함. 간단한 기능인지, 아니면 공유할 만한 스크립트가 있는지 알고 싶음
  - 정말 인상적인 **‘spooning’** 임. 나는 창 관리용으로만 쓰지만, 그 덕분에 macOS가 훨씬 쓸 만해졌음
  - 설정 파일을 공유해줄 수 있는지 궁금함
  - 예시 덕분에 나도 어떻게 활용할지 아이디어가 생겼음

- 예전엔 **tiling window manager**를 좋아했지만, Mac에서는 시각적으로 복잡한 앱을 많이 써서 화면 배치가 더 중요해졌음  
  메일, IDE, 브라우저, 터미널, 채팅 앱 각각에 맞는 **창 크기 프리셋**을 만들어 Hammerspoon 단축키로 전환함  
  IDE가 빌드 중일 때 브라우저를 띄워도 하단 로그를 볼 수 있고, 모달 단축키로 앱 전환도 빠름  
  다단계 모달 개념이 흥미로움

- Hammerspoon의 **메인테이너**로서, 현재 Lua에서 JavaScript로 전환하는 v2를 개발 중임  
  - Lua를 좋아해서 Hammerspoon이 Lua를 쓸 수 있는 거의 유일한 이유였는데, JS로 바뀌면 아쉽지만 현실적인 선택이라 생각함  
  - 오랫동안 써온 사용자로서 Lua 전환 이유가 궁금하지만, 어쨌든 훌륭한 앱이라 감사함  
  - “18일 후 출시인가요?”라며 농담 섞인 기대를 표현함  
  - v2의 **비전**과 아키텍처 변경 이유, JS 선택 배경이 궁금함  
  - AppleScript의 JavaScript 지원과 **시너지**가 생길지도 궁금함

- 내 프로젝트 [Spacehammer](https://github.com/agzam/spacehammer)는 **Spacemacs/Doom**에서 영감을 받은 Hammerspoon 모달 툴킷임  
  “alt+spc a b”로 브라우저를 열거나, “alt+spc m j/k”로 볼륨 조절, 혹은 어떤 앱의 텍스트든 Emacs에서 편집 가능함  
  Fennel로 작성되어 REPL을 통해 실시간 개발 가능하고, **Yabai** 같은 윈도우 매니저와도 잘 연동됨  
  - “볼륨 조절 키가 키보드에 있는데…”라며 농담을 던짐. 다만 **Touch Bar Mac** 사용자라면 이해함

- 나는 Hammerspoon으로 **가짜 타일링 윈도우 매니저**를 구현함  
  창을 화면 비율로 재배치하고, 단축키로 모니터 간 이동도 가능함
  - [AeroSpace](https://github.com/nikitabobko/AeroSpace)를 추천함. i3 사용자에게 익숙한 방식으로 잘 작동함  
  - 나도 비슷하게 쓰지만, 좌·중앙·우 배치까지 추가함. 수학으로 창 크기를 계산하는 게 **기괴하지만 멋짐**  
  - [hammerspoon-shiftit](https://github.com/peterklijn/hammerspoon-shiftit)을 사용함. 죽은 ShiftIt을 완벽히 재현한 프로젝트임  
  - 나도 hyper+화살표로 창을 이동시키고, hyper+enter로 전체화면 전환함. **자연스러운 창 이동감**이 마음에 듦  
  - [miro-windows-manager](https://github.com/miromannino/miro-windows-manager) 플러그인을 좋아함. 반쪽/3분할 배치를 순환시키기 좋음

- 최근 처음으로 Hammerspoon을 써봤는데, 메뉴바 앱의 옵션에 **단축키를 직접 바인딩**하려고 ChatGPT가 AppleScript로 스크립트를 짜줬음  
  정말 멋지고, 앞으로 더 많은 자동화를 시도해볼 생각임

- Zoom의 화면 공유 컨트롤을 숨기는 스크립트를 만들어서, ESC를 눌러도 다시 나타나지 않게 함  
  - “이것만으로도 설치할 가치가 있다”는 반응을 받음

- 내 전체 설정은 단 한 줄임  
  `ctrl + D`로 **그리드 인터페이스**를 띄워 창을 원하는 위치로 조정함  
  다른 윈도우 매니저보다 단순하고 직관적임
  - “이 기능이 있는 줄 몰랐다”며 놀람. `hs.grid.setGrid('4x4')`로 그리드 크기를 바꾸거나, `hs.grid.ui.textSize`로 글자 크기를 조정할 수도 있음  
  - 나도 비슷한 기능을 쓰지만, 한쪽에서만 리사이즈하는 등 더 유연하게 구성함  
  - 여러 기기 간 설정 동기화는 **dotfile 지옥**이 될 수 있음. 그래도 마우스를 안 쓰고 창을 제어할 수 있는 몇 안 되는 현대적 도구임  
  - 터미널에서 `Ctrl+D`와 충돌하지 않는지 궁금함

- 나도 Hammerspoon 덕분에 **창 전환 스트레스**에서 해방됨  
  Cmd+1~9로 Chrome 창을 전환하고, Cmd+0으로 선택 다이얼로그를 띄움  
  [내 설정 파일](https://github.com/ljubomirj/dotfiles/blob/main/.hammerspoon/init.lua)을 참고하면 창 이름을 기억하고 재시작 후에도 유지됨

- Hammerspoon은 Mac의 Automator보다 강력함  
  Automator가 이제 **JavaScriptCore**를 지원하듯, Hammerspoon도 Lua 대신 JS를 쓴다면 Node 패키지를 그대로 활용할 수 있을 것임  
  Lua로 다시 작성해야 한다면 꽤 고생할 듯함
