하나의 MacBook 팬을 여러 사람이 가위바위보로 조작권을 겨루며 사용하는 macOS 14+ SwiftUI 앱입니다. 풍량에 따라 팬 애니메이션과 한국어 TTS 효과음이 달라집니다.
- 1~5단 풍량 조절과 회전 애니메이션
- 최초 사용자가 조작권 획득
- 다음 사용자는 저장된 패를 가위바위보로 이겨야 설정 변경
- 조작권자와 기준 패를 로컬에 저장
- 풍량별
위이잉과 숨 고르기 TTS 반복 - 끄기 시 macOS 자동 냉각 제어로 복귀
- Intel 및 Apple Silicon의
AppleSMC키 탐지
- macOS 14 Sonoma 이상
- Xcode Command Line Tools 또는 Swift 5.9 이상
- 실제 팬이 장착된 Mac
MacBook Air처럼 팬이 없는 모델에서는 실제 팬 제어가 동작하지 않습니다. 일부 최신 Apple Silicon 모델은 macOS와 펌웨어가 수동 팬 제어를 제한할 수 있습니다.
저장소를 내려받고 테스트합니다.
git clone https://github.com/1sup1/macfan.git
cd macfan
swift testUI와 게임을 일반 권한으로 실행하려면:
./script/build_and_run.shCodex 앱에서는 프로젝트를 연 뒤 Run 액션을 사용할 수도 있습니다.
Apple은 팬 제어용 공개 API를 제공하지 않습니다. 앱은 IOKit으로 AppleSMC에 직접
접근하며, SMC 쓰기에는 관리자 권한이 필요합니다. 개인 로컬 사용은 다음 스크립트로
실행할 수 있습니다.
./script/run_as_root.command관리자 암호 입력 시 터미널 화면에 문자가 표시되지 않는 것이 정상입니다. sudo open이
아니라 앱 번들의 실행 파일을 관리자 권한으로 직접 실행합니다.
주의: 팬을 강제로 0 RPM에 고정하지 않습니다.
끄기는 앱의 애니메이션과 TTS를 멈추고 팬 제어를 macOS에 돌려줍니다. 앱을 비정상 종료했다면 재실행 후끄기를 눌러 자동 제어로 복귀하거나 Mac을 재시동하세요.
- 처음 실행한 사용자가 이름을 입력해 조작권을 얻습니다.
- 풍량
1~5또는끄기를 누르면 도전 화면이 열립니다. - 도전자가 이름과 가위·바위·보를 선택합니다.
- 저장된 기준 패를 이기면 조작권이 넘어가고 선택한 설정이 적용됩니다.
- 비기거나 지면 기존 조작권과 팬 설정이 유지됩니다.
swift test
./script/build_and_run.sh --verifybuild_and_run.sh는 SwiftPM 실행 파일을 dist/MacFan.app으로 묶어 실행합니다.
이 프로젝트는 Apple의 비공개 SMC 인터페이스를 사용합니다. 기기별 동작 차이와 하드웨어 위험이 있을 수 있으며 사용 책임은 사용자에게 있습니다. SMC 프로토콜 참고 자료와 라이선스는 THIRD_PARTY_NOTICES.md를 확인하세요.