← back to mac apps

macOS · DMG · v1.0.5

CatClock

맥 화면 위에 떠 있는, 고양이가 알람시계를 들고 있는 플로팅 타이머 위젯. 퇴근까지 얼마 남았는지, 이 작업이 몇 분째인지 — 작업을 방해하지 않고 곁눈질로 확인할 수 있게 만든 도구입니다. 스토어를 거치지 않고 DMG로 바로 받아 씁니다.

Swift SwiftUI AppKit NSPanel macOS 26+

서비스 소개

CatClock 은 맥 위에서 일하는 사람을 위해 만든 가벼운 플로팅 타이머입니다. 기본 타이머 앱은 따로 창을 띄워야 하고, 메뉴바 타이머는 숫자가 너무 작고, 알람을 걸어두면 까먹기 일쑤 — 그래서 "그냥 화면 한 켠에 작게 떠 있고, 지나가다 보면 보이는" 위젯이 필요했습니다.

서버 없이 100% 로컬에서 동작합니다. 위치·설정은 UserDefaults 에 저장되고, 사용자가 직접 올린 고양이 사진은 앱 지원 폴더에 보관됩니다. App Store 를 거치지 않는 대신, DMG 한 파일로 끝나는 단순한 배포를 골랐습니다.

설치 / 실행

  1. Download latest (DMG) 버튼으로 최신 DMG 받기 (이전 버전은 릴리즈 노트에서 받을 수 있음)
  2. DMG 를 열어 CatClock.app/Applications 로 드래그
  3. 실행하면 메뉴바에 고양이 아이콘이 생기고, 화면 우상단에 위젯이 뜹니다. 끌어서 원하는 자리로

Behind the scenes

직접 쓰려고 만든, 첫 macOS 데스크탑 위젯.

  1. 01

    "퇴근까지 얼마"가 원래 시작이었다

    기본 타이머는 창을 띄워야 보이고, 메뉴바 타이머는 숫자가 작고, 알람만 걸어두면 까먹습니다. "그냥 한 켠에 작게 떠 있고, 지나가다 보면 보이는" 게 필요했어요. 처음엔 단순한 카운트다운으로 시작했는데, 막상 매일 쓰다 보니 "로그인하면 자동으로 9시간이 돌아가야 한다", "퇴근 시각이 지나면 다음 날로 넘어가야 한다", "끝나면 끄기 전까지 알려줘야 한다" 같은 아주 작은 — 하지만 매일 걸리적거리는 — 요구가 차곡차곡 쌓였습니다. 그게 v1.0.0 의 형태가 됐습니다.

  2. 02

    투명 창 하나 띄우는 게 생각보다 깊다

    SwiftUI 만으로는 "테두리 없고, 활성화되지 않고, 데스크탑 레벨에도 올라가는 패널" 을 만들 수 없어서 NSPanel + .nonactivatingPanel 로 직접 짰습니다. 창 레벨을 .floatingCGWindowLevelForKey(.desktopWindow) 사이에서 바꿔주면 "항상 위" / "바탕화면 위" 두 모드가 같은 창에서 나옵니다. 드래그·위치 저장은 isMovableByWindowBackground 로 단순화 — 위젯에 컨트롤이 너무 많지 않아 가능했던 선택. 화면 해상도 변화 / 모니터 분리로 위치가 화면 밖이면 자동으로 안쪽으로 끌어옵니다.

  3. 03

    서버 없는 앱의 가벼움

    기존 프로젝트들은 거의 모두 서버를 두고 운영합니다 — 그래서 배포가 곧 인프라 작업이고, 한 번 출시하면 그 뒤로도 계속 돌봐야 합니다. CatClock 은 의도적으로 그 반대로 갔습니다. 서버 없음 · 계정 없음 · 통신 없음 — 빌드해서 DMG 한 파일로 끝. 덕분에 코드도 단순해지고, 사용자 입장에서도 "받아서 켜면 끝" 인 경험이 됩니다. 서버를 굴리는 것과는 또 다른, 작고 단단한 도구를 만드는 즐거움이 있었습니다.

Screenshots

카드를 누르면 큰 이미지로 볼 수 있습니다.

More

지나온 버전과 앞으로 들어갈 항목을 별도 페이지에서 확인할 수 있습니다.