Windows 11의 최신 내장 메모장(Notepad)과 최대한 비슷하게 동작하는 macOS용 플레인 텍스트 에디터입니다. Swift + SwiftUI로 작성되었습니다.
Developer: Min-Gul Kim, MD, PhD (Jeonbuk National University Medical School)
- 플레인 텍스트 전용 (rich-text, Markdown formatting, AI 기능 배제)
- 멀티 탭 지원
- 세션 자동 복원: 저장하지 않은 내용 포함, 재시작/재부팅 후에도 이전 탭 + 내용 복원 (Windows 11 Notepad와 유사)
- 한국어 사용자 편의: 인코딩 변경/변환 강화 (EUC-KR, UTF-8/BOM, UTF-16)
- 빠르고 단순한 사용성
- Swift 5 / SwiftUI + AppKit (NSTextView 기반 에디터)
- Apple Silicon (arm64)
- Xcode 26 이상
notepad_macOS/
├── README.md HOW_TO_BUILD.md TEST_MATRIX.md LICENSE build.sh
├── Design/ # 참고용 아이콘 원본 (앱에 포함되지 않음)
└── NotepadForMacOS/
├── Notepad.entitlements # 샌드박스 엔타이틀먼트 (read-write + 보안 북마크)
├── NotepadForMacOS.xcodeproj
├── NotepadForMacOS/ # 앱 타깃 (소스 + 리소스, 단일 동기화 그룹)
│ ├── App/ # NotepadApp(@main), AppDelegate, Commands, Actions
│ ├── Models/ # Document, LineEnding, TextEncoding
│ ├── ViewModels/ # TabManager
│ ├── Services/ # SessionStore, SecurityScopedFile
│ ├── Views/ # MainEditorView, EditorView, FindReplaceSheet, …
│ ├── Assets.xcassets/ en.lproj/ ko.lproj/ Credits.rtf LICENSE
└── NotepadForMacOSTests/ # 단위 테스트 (동기화 그룹)
소스 파일을 새로 추가하면 Xcode의 파일 시스템 동기화 그룹이 자동으로 타깃에 포함합니다. 수동으로
project.pbxproj를 손볼 필요가 없습니다.
# 디버그 빌드
./build.sh # 또는 ./build.sh build
# 릴리스 빌드 (Hardened Runtime, 배포용 엔타이틀먼트)
./build.sh release
# 테스트
./build.sh test
# 배포용 .dmg 생성 (dist/)
./build.sh dist
# Xcode에서 열기
./build.sh openXcode에서 직접 열려면 NotepadForMacOS/NotepadForMacOS.xcodeproj를 열고 Cmd+R.
- 탭을 닫지 않고 앱 종료 → 다음 실행 시 모든 탭 + 수정 내용 복원
- 설정에서 "시작 시 동작" 변경 (이전 세션 계속 / 새 세션)
- 저장하지 않은 탭은 제목에
*표시 - 복원 시 원본 파일을 읽지 못하면 빈 내용으로 자동 덮어쓰지 않고 저장 전 확인
- UTF-8 (기본), UTF-8 with BOM, EUC-KR(한국어 레거시), UTF-16 LE/BE
- 파일 열기/저장 시 인코딩 선택
- 상태바에서 "인코딩으로 다시 열기", "현재 내용 변환"(표현 불가 문자 경고)
| 동작 | 단축키 |
|---|---|
| 새 탭 | Cmd + T |
| 새 창 | Cmd + Shift + N |
| 열기 | Cmd + O |
| 저장 / 다른 이름으로 저장 | Cmd + S / Cmd + Shift + S |
| 페이지 설정 / 인쇄 | Cmd + Shift + P / Cmd + P |
| 찾기(인라인 막대) | Cmd + F |
| 다음 찾기 / 이전 찾기 | Cmd + G / Cmd + Shift + G |
| 줄로 이동 | Cmd + L |
| 시간/날짜 삽입 | F5 |
| 자동 줄 바꿈 토글 | Cmd + Shift + W |
| 확대 / 축소 / 재설정 | Cmd + + / Cmd + - / Cmd + 0 |
| 다음 탭 / 이전 탭 | Ctrl + Tab / Ctrl + Shift + Tab |
| 탭 닫기 | Cmd + W |
./build.sh dist는 릴리스 빌드 후 dist/Notepad.dmg를 만듭니다. 다른 Mac에서 Gatekeeper 경고 없이 실행되게 하려면 Developer ID 서명 + 공증(notarization) 이 필요합니다. Apple Developer 계정과 인증서를 준비한 뒤 환경 변수를 설정하면 dist가 서명·공증·스테이플을 수행합니다:
export DEVID_APP="Developer ID Application: Your Name (TEAMID)"
export NOTARY_PROFILE="notary-profile" # xcrun notarytool store-credentials 로 미리 등록
./build.sh dist환경 변수가 없으면 dmg만 만들고(애드혹 서명) 다음 단계를 안내합니다.
- 다중 탭 + 커스텀 탭 바(드래그 재정렬, Ctrl+Tab 순환), 세션 자동 복원(미저장 내용 포함)
- NSTextView 기반 에디터(단일 소스 오브 트루스, 실행취소 안전한 찾기/바꾸기·시간삽입·인코딩 재로드)
- 인라인 찾기/바꾸기 막대(비모달, 일치 개수·방향·대소문자·둘러 찾기)
- 인쇄 + 페이지 설정
- 인코딩(UTF-8 / BOM / EUC-KR / UTF-16) + 상태바 다시 열기/변환(표현 불가 경고)
- 샌드박스 + 보안 스코프 북마크로 재실행 후 파일 접근/저장
- 멀티 윈도우 세션: 창을 닫으면 해당 세션 정리, 종료 시에는 복원 보존(+ 오래된 세션 GC)
- 한글/CJK 조합 텍스트는 저장 직전 커밋(IME 안전)
- 단위 테스트(인코딩·줄바꿈·문서·세션)
Min-Gul Kim, MD, PhD — Professor, Jeonbuk National University Medical School Email: mgkim@jbnu.ac.kr
MIT License · Copyright © 2026 Min-Gul Kim.