| title |
fCapture - macOS 스크린 캡처 CLI 도구 |
| description |
CoreGraphics 기반 macOS 스크린 캡처 CLI. JSON 설정으로 다양한 캡처 시나리오를 자동화함. |
| date |
2026-03-27 |
- 전체 화면 / 특정 디스플레이 / 윈도우 / 영역 캡처
- JSON 설정 파일 기반 자동화
- CLI 단축 옵션 (
-s, -r, -w, -f, -h)
- 윈도우 캡처 시 flash 피드백 (파란 테두리 오버레이)
- 듀얼 모니터 자동 백업
- 파이프라인 친화적 출력 (text / json / onlyPath)
- ID 자동 증가 및 동적 파일명
- Swift Package Manager 빌드
brew install finfra/tap/fcapture
fcapture --version
비상업 사용 무료. 상업 사용은 별도 라이선스 필요 — 아래 라이선스 참조.
# 빌드
./buildAndTest.sh
# 기본 실행 (윈도우 캡처 → ~/Desktop)
./bin/fCapture
# JSON 설정 파일로 실행
./bin/fCapture data/settings/01_screen1.json
# 단축 옵션으로 실행
./bin/fCapture -s # 스크린 캡처
./bin/fCapture -w # 윈도우 캡처
./bin/fCapture -r # 인터랙티브 영역 캡처
./bin/fCapture -f # 마지막 영역을 고정 영역으로 저장
# 글로벌 실행 (~/.bin 배포 후)
fCapture
| 옵션 |
설명 |
로드 설정 |
-h, --help |
도움말 출력 |
- |
-s, --screen |
스크린 캡처 |
~/.fCapture/defaultScreen.json |
-r, --region |
마우스로 영역 선택 캡처 |
~/.fCapture/defaultRegion.json |
-w, --window |
윈도우 캡처 |
~/.fCapture/defaultWindow.json |
-f, --fixRegion |
마지막 영역 좌표를 고정 영역으로 저장 |
- |
<파일경로> |
JSON 설정 파일 지정 |
지정된 파일 |
| (없음) |
기본 설정으로 실행 |
~/.fCapture/defaultSetting.json |
"window"는 "window_active"의 별칭 (하위 호환)
| 옵션 |
타입 |
기본값 |
설명 |
capturePath |
String | Int |
~/Desktop |
저장 경로 또는 capturePathArray 인덱스 |
capturePathArray |
[String] |
- |
인덱스 기반 경로 배열 |
target |
String | [String] |
"window" |
캡처 대상 |
shadow |
Bool |
false |
윈도우 그림자 포함 여부 |
window_flash |
Bool |
true |
캡처 후 파란 테두리 flash 표시 여부 |
fileFormat |
String |
"%d_%T" |
파일명 형식 |
staticRegion |
Object |
- |
{x, y, width, height} 영역 좌표 |
backupOtherScreen |
String |
- |
듀얼 모니터 백업 저장 경로 |
result |
String |
"text" |
출력 형식: text, json, onlyPath |
%d: 날짜 (yyyyMMdd) → 20260327
%T: 시간 (HHmmss) → 164110
%target: 캡처 대상 → window, screen1, screen2
%id: ID 카운터 (001, 002...) → 3시간+날짜 변경 시 리셋
{
"capturePath": 1,
"target": "screen:1",
"fileFormat": "nowage@gmail.com_%d_%T",
"capturePathArray": [
"~/Desktop",
"~/df"
],
"backupOtherScreen": "~/Desktop",
"window_flash": true,
"result": "text"
}
JSON 파일 없이 직접 CLI 파라미터로 캡처 제어 가능:
| 옵션 |
짧은 형태 |
설명 |
기본값 |
--target <value> |
-t |
캡처 대상 (반복 가능) |
window_pointer |
--path <path> |
-p |
저장 경로 |
~/Desktop |
--format <template> |
-F |
파일명 템플릿 |
%d_%T_%target |
--result <format> |
-R |
출력 형식 (text/json/onlyPath) |
text |
--shadow / --no-shadow |
|
윈도우 그림자 포함/제거 |
false |
--flash / --no-flash |
|
캡처 플래시 피드백 |
true |
--region <x,y,w,h> |
|
고정 영역 좌표 (region_static 타겟 필수) |
|
--backup <path> |
|
다른 화면 백업 저장 경로 |
|
# screen:1 캡처, JSON 출력
fCapture -t screen:1 -R json
# 다중 스크린 동시 캡처
fCapture -t screen:1 -t screen:2 -p ~/Desktop/caps -F %d_%target
# 그림자 없는 윈도우 캡처
fCapture -t window_pointer --no-shadow -p /tmp
# 고정 영역 캡처
fCapture --region 100,100,800,600 -p ~/Desktop
# JSON 설정 + CLI 오버라이드 (하이브리드)
fCapture data/settings/01_screen1.json -R json --no-shadow
명령줄 인수 (-s/-r/-w/-f/파일) > ~/.fCapture/defaultSetting.json > 코드 기본값
fCapture/
├── Package.swift # SPM 정의 (macOS 13+, executable)
├── ScreenCapture.swift # CoreGraphics 기반 캡처 엔진
├── ScreenCaptureApp.swift # CLI 진입점 + 설정/상태/로그 관리
├── Usage.txt # --help 출력 내용 (번들 리소스)
├── default*.json # 기본 설정 템플릿 (번들 → ~/.fCapture/)
└── default.yml # YAML 기본 설정
| 클래스/구조체 |
역할 |
ScreenCapture |
CoreGraphics 캡처 (화면/윈도우/영역) |
ScreenCaptureApp |
CLI 진입점, 설정 로딩, 캡처 실행 흐름 |
ScreenCaptureConfig |
JSON 설정 구조 (Codable, window_flash 등 snake_case 매핑) |
StateManager |
상태 저장 (~/.fCapture/info_stateManager.json, lastRegion 포함) |
Logger |
콘솔 + /tmp/fCapture.log 로깅 |
CaptureResult |
캡처 결과 데이터 (경로, 파일명, 타겟, ID) |
CLI 실행
→ 기본 설정 파일 초기화 (~/.fCapture/)
→ CLI 옵션 파싱 (-s/-r/-w/-f/파일/기본)
→ 설정 파일 로딩 (JSON)
→ 권한 확인 (Screen Recording)
→ 저장 경로 결정
→ 대상별 캡처 실행 (CoreGraphics)
→ flash 피드백 표시 (윈도우 캡처 시)
→ 이미지 저장 (실패 시 ~/Desktop 폴백)
→ 백업 캡처 (설정된 경우)
→ 결과 출력 (text/json/onlyPath)
| 프레임워크 |
용도 |
| Foundation |
파일 I/O, JSON, 날짜 처리 |
| CoreGraphics |
화면/윈도우 캡처 API |
| AppKit |
NSImage 처리, 앱 정보, Alert 표시 |
# 자동 빌드 + 테스트 + ~/.bin 배포
./buildAndTest.sh
# Clean 빌드
./buildAndTest.sh clean
# 수동 빌드 (Release)
cd fCapture && swift build -c release
# 바이너리 위치
./bin/fCapture # 프로젝트 내
~/.bin/fCapture # 글로벌 (buildAndTest.sh 실행 시)
- 스크린 녹화 권한 필수
- 시스템 환경설정 > 보안 및 개인 정보 보호 > 화면 및 시스템 오디오 녹화
- 파일:
/tmp/fCapture.log
- 실시간:
tail -f /tmp/fCapture.log
- 레벨: INFO, WARN, ERROR
PolyForm Noncommercial License 1.0.0 (한글 참고 번역).
- 비상업 사용: 무료 — 개인 학습·연구·취미·비영리 조직 등
- 상업 사용: 별도 상업 라이선스 필요 — 문의 finfra.kr
- Copyright Finfra Co., Ltd.