A tiny native macOS menu bar app for a daily journaling ritual that writes straight into your Obsidian vault.
메뉴바에서 단축키 한 번으로 떠서, 오늘 하루·생각·감정을 적고 저장하면 오늘 날짜의 Obsidian 데일리 노트 # 잡생각 섹션에 바로 append 됩니다. 마찰을 0에 가깝게 만들어 "매일 10분" 을 습관으로 만드는 게 목표입니다.
순수 SwiftUI + AppKit, 외부 의존성 0. 빌드 산출물은 단일 .app 번들 하나입니다.
개발 환경 없이 바로 쓰려면 → 최신 릴리스에서 .zip 다운로드
- zip 압축 해제 → 회고.app 을
응용 프로그램으로 드래그 - 처음 열 때 보안 경고가 뜨면: 시스템 설정 → 개인정보 보호 및 보안 → 아래로 스크롤 → "그래도 열기" (한 번만 하면 다음부터 그냥 열림)
- 메뉴바 🖊 또는 ⌥⌘J
⚠️ 아직 Apple 공증(notarization) 전이라 위 보안 승인 1회가 필요합니다. 개발자라면 아래 빌드 & 설치로 소스에서 바로 빌드하면 경고 없이 실행됩니다.
- 메뉴바 상주 (
🖊) + 전역 단축키⌥⌘J— 어디서든 즉시 팝업 - 매일 바뀌는 보조 질문(무시 가능), 기분 이모지 / 에너지 1–5 한 번 탭
- 자유 일기 입력 →
⌘↵저장 후 자동 닫힘 - 오늘 노트가 없으면 데일리 템플릿(
# 팔로업/# 일/# 잡생각/# 사이드)으로 자동 생성, 직전 데일리로 가는🔗 ⟵ [[어제]]링크까지 — Obsidian 그래프에 자연스럽게 연결 - 항목마다
mood::/energy::인라인 필드를 남겨 나중에 Dataview 차트로 추이 분석 가능 # 잡생각외 다른 섹션은 절대 건드리지 않음 — 자동 데일리 노트 생성기와 함께 써도 충돌 없음- 연속기록(streak) + 최근 8주 히트맵 — vault의
mood::마커에서 도출(별도 상태 없음), 메뉴바 배지로 상시 표시 - 스마트 저녁 알림 — 기본 21:00, 그날 이미 썼으면 스킵. 우클릭 메뉴에서 20/21/22시·끄기 선택
- 단축키 인지 —
⌥⌘J를 팝오버·메뉴에 노출
저장 형식 예시:
# 잡생각
**14:30** `mood:: 🙂` · `energy:: 4`
오늘은 메뉴바 앱을 만들었다. 생각보다 SwiftUI MenuBarExtra 없이도 깔끔하게 됐다.- macOS 13 이상
- 빌드: Xcode 또는 Swift toolchain (
swift --version)
# 1. 빌드 + ~/Applications/회고.app 로 패키징 (ad-hoc 서명 포함)
./package.sh
# 2. (선택) 로그인 시 자동 실행 등록 + 지금 실행
./autostart.sh앱은 다음 순서로 Obsidian vault 를 찾습니다:
- 환경변수
JOURNAL_VAULT - 설정 파일
~/.config/obsidian-journal/vault— vault 절대경로를 한 줄로 기록 - iCloud Obsidian 자동 탐지 (
~/Library/Mobile Documents/iCloud~md~obsidian/Documents아래 vault 가 하나면)
명시적으로 지정하려면:
mkdir -p ~/.config/obsidian-journal
printf '%s\n' "/path/to/your/Obsidian Vault" > ~/.config/obsidian-journal/vault해석된 경로 확인:
~/Applications/회고.app/Contents/MacOS/ObsidianJournal --resolve- 메뉴바
🖊클릭 또는⌥⌘J - 기분·에너지 탭 → 일기 작성 →
⌘↵저장 - 껐다면 다시 켜기: Spotlight 에서
회고, 또는open ~/Applications/회고.app
./autostart.sh off # 자동 실행 해제 + 종료
rm -rf ~/Applications/회고.app
rm -f ~/Library/LaunchAgents/com.suyoung.obsidianjournal.plist| 파일 | 역할 |
|---|---|
Sources/ObsidianJournal/main.swift |
부트스트랩 (--selftest / --resolve 플래그) |
AppDelegate.swift |
메뉴바 아이템 + 팝오버 + 전역 단축키(Carbon) |
JournalView.swift |
SwiftUI 일기 입력 UI |
JournalStore.swift |
vault 해석 + # 잡생각 append 로직 |
SelfTest.swift |
GUI 없이 쓰기 로직 검증 (--selftest) |
package.sh / autostart.sh |
빌드·패키징 / 자동 실행 등록 |
Sources/JournalCore/*.swift |
테스트 가능한 순수 로직 (vault 해석·append·streak·알림 판정·설정) |
Sources/ObsidianJournal/ReminderScheduler.swift |
알림 권한 + 인앱 타이머 |
쓰기 로직 검증:
JOURNAL_VAULT=/tmp/journal-test .build/release/ObsidianJournal --selftest전체 로직 테스트:
swift test