TL;DR

  • Swaybles는 macOS 14 이상에서 동작하는 무료 오픈소스 맥 앱으로, 로프 물리 효과가 적용된 화면 장식과 집중 타이머로 90일 목표를 지원함.
  • 커서로 장식을 튕기거나 끌 수 있는 피젯 기능과, 타이머 완료 시 장식이 흔들리는 집중 기능을 제공함.
  • Banner Bat이 진행 일수를 표시하며, 연속 기록이 아닌 달력 방식으로 날짜를 세어 진행 상황이 초기화되지 않음.
  • 앱은 완전히 오프라인으로 작동하고 데이터를 수집하지 않으며, 설정·목표·집중 기록과 장식에 사용한 사진을 맥에 로컬 저장함.
  • Swift 기반 앱은 소스에서 실행하거나 ZIP 파일로 설치할 수 있으며, 유료 Apple 개발자 계정이 없어 공증되지 않아 첫 실행 시 수동 허용이 필요함.

Swaybles

  • Swaybles는 맥 화면 위쪽에 매달려 실제 로프 물리 효과로 흔들리며 응원하는 작은 장식 앱임.
  • ADHD가 있는 사용자를 위한 부담이 적은 집중 보조 앱이며, 무료 오픈소스임.
  • 커서로 장식을 튕기거나 끌어 흔들 수 있는 피젯 장난감 기능을 제공함.
  • Timer Ghost를 누르거나 메뉴 막대를 이용해 집중 타이머를 시작할 수 있으며, 타이머가 끝나면 모든 장식이 기쁘게 흔들림.
  • 하나의 목표를 정하면 Banner Bat이 ‘Day 12 / 90’처럼 진행 일수를 표시함. 연속 기록이 아닌 달력 방식이므로 기록이 초기화되지 않음.
  • 개인정보 보호를 고려해 설계됐으며, 완전히 오프라인으로 작동하고 데이터를 수집하지 않음.

설치 방법

  • 기술 지식 없이도 설치할 수 있으며, macOS 14 이상이 설치된 맥에서 Swaybles를 내려받아 사용함.
  • 내려받은 Swaybles.zip을 두 번 눌러 연 뒤, Swaybles를 응용 프로그램 폴더로 옮김.
  • 첫 실행 때 macOS가 앱을 확인할 수 없다는 경고를 표시함. Apple 공증 비용을 내지 않아 공증을 받지 않았으며, 코드는 공개 저장소에서 확인할 수 있음.
  • 시스템 설정의 개인정보 보호 및 보안으로 이동해 아래쪽의 ‘그래도 열기’를 누르고 확인함.
  • 화면 위쪽을 보면 장식이 매달려 있으며, Swaybles는 화면 오른쪽 위 메뉴 막대에서 실행됨.

개인정보 보호

  • Swaybles는 데이터를 전혀 수집하지 않음.
  • 앱에는 네트워크 코드가 없어 인터넷에 연결되지 않으며, 분석·충돌 보고·업데이트 확인·원격 전송 기능도 없음. 방화벽으로 차단해도 동작은 달라지지 않음.
  • 계정, 가입, 라이선스 키가 필요하지 않으며, 내려받은 앱을 그대로 사용할 수 있음.
  • 화면, 창, 키 입력, 파일을 읽지 않음. 앱이 아는 정보는 현재 시각, 사용자가 시작한 집중 타이머, 마우스와 키보드가 유휴 상태인 시간뿐이며, 유휴 시간은 사용자가 자리를 비웠을 때 장식이 졸도록 하는 데 사용됨.
  • 장식으로 사용하는 사진은 맥에 있는 앱 전용 폴더로 복사되며 외부로 전송되지 않음.
  • 설정, 목표, 집중 성공 기록은 모두 로컬에 저장되며 앱을 삭제하면 함께 삭제됨.
  • 전체 소스 코드는 공개 저장소에서 확인할 수 있음.

소스에서 실행하기

  • 맥과 macOS 14 이상, 무료로 제공되는 Xcode가 필요함. Xcode는 맥 앱 스토어에서 내려받을 수 있음.
  • mac 폴더에서 swift run Swaybles 명령으로 앱을 실행하거나, Package.swift를 열어 Xcode에서 실행할 수 있음.
  • swift test 명령으로 테스트를 실행하거나, Xcode에서 테스트 단축키를 사용할 수 있음.
  • Swaybles는 메뉴 막대의 ✨ 아이콘에서 이용할 수 있음. 메뉴 막대에서 Swaybles Studio를 열어 장식을 고르고, 90일 목표와 로프를 설정할 수 있음.

다운로드 파일 만들기

  • mac/scripts/make-app.sh 스크립트로 mac/dist/Swaybles-<version>.zip 형식의 배포 파일을 생성함.
  • 유료 Apple 개발자 계정이 없으면 앱이 공증되지 않으므로, 첫 실행 때 앱을 마우스 오른쪽 버튼으로 눌러 ‘열기’를 선택해야 함.

장식 추가하기

  • 그림은 docs/ART.md의 템플릿을 사용해 Imagine Art에서 만들 수 있음.
  • PNG 파일을 art/raw/<pack>/<id>.png에 저장하고, tools/packs.json에 장식을 추가함.
  • 처음 한 번 npm install을 실행한 뒤 npm run charms <pack>으로 장식을 처리하고, npm run charms:review <pack>으로 검토함.

저장소 구성

  • mac/: 앱 코드가 있는 Swift 폴더이며, 코드 구성은 CLAUDE.md에서 확인할 수 있음.
  • docs/: 제품 요구 문서(PRD), 아트 사양, 90일 장식 달력.
  • tools/: 아트 가져오기 도구, 연락처 시트 생성 도구, 홍보 영상 녹화 도구.
  • art/raw/: Imagine Art 원본 이미지.
  • src/: 아트 파이프라인을 위해 유지 중이며 폐기 단계에 있는 이전 Electron 버전.
  • 코드 라이선스는 MIT이며, 장식 이미지 라이선스는 ART-LICENSE에서 확인할 수 있음.