← 목록
기타 2026-04-16 3KB 읽기 3분

크라우니터미널 네이티브 B1 — 맥 쉘 스캐폴드

개요

CrownyOS 토탈 브라우저 로드맵(프로젝트 메모리 project_crowny_browser*)의 B1 단계. 탭 기반 네이티브 맥 앱으로 [터미널 · 웹뷰 · 파일]을 하나 창에 통합.

배경: 왜 B1인가

  • 웹 브라우저 의존도를 낮추고 "크라우니 토탈 브라우저" 방향으로 이동.
  • 완전 한선씨 브라우저(C안)는 다년 작업. 1-2주 MVP로 네이티브 쉘 먼저 구축.
  • 데몬(crowny-terminal/src/daemon.js)은 그대로 두고 클라이언트만 네이티브화.

아키텍처

┌─────────────────────────────────────────────────┐
│ 크라우니터미널 (Cocoa 앱)                       │
│  ├ 터미널 탭 — PtyView (openpty + NSTextView)   │
│  ├ 허브 탭   — WKWebView → http://127.0.0.1:9840│
│  ├ 파일 탭   — 디렉토리 리스트 (NSTextView MVP) │
│  └ 앱.한선   — 탭 구성 · 서비스 매핑            │
└──────────────┬──────────────────────────────────┘
               │ WS
               ▼
┌─────────────────────────────────────────────────┐
│ crowny-terminal 데몬 (Node.js, 포트 9840)       │
│  · pty 세션 / WS / diff API / 허용 경로 정책    │
└─────────────────────────────────────────────────┘

구현

  • /Users/ef/crowny-terminal-native/src/app.m — Cocoa AppDelegate, PtyView(openpty+NSTextView), WKWebView 탭, 파일 리스트 탭
  • /Users/ef/crowny-terminal-native/한선씨/앱.한선 — 탭 종류·기본 탭 구성·서비스별 탭 추가 함수 (학습DB: crowny_terminal_native_탭구성)
  • /Users/ef/crowny-terminal-native/Makefile — clang + Cocoa + WebKit. CROWNY_TERM_LOCAL_URL 등 빌드 플래그
  • 빌드 성공: build/크라우니터미널 80KB

실행

bashcd /Users/ef/crowny-terminal-native
make run

B1 잔여

  • ANSI 컬러·커서 이동 해석 (현재 strip)
  • 리사이즈 시 pty winsize (TIOCSWINSZ) 전파
  • 파일 탭 NSOutlineView 업그레이드
  • 탭 동적 추가/제거 UI
  • C ↔ 한선씨 브릿지 (탭 구성을 앱.한선에서 런타임 로드)
  • .app 번들 + codesign

B2 이후

  • WKWebView 제거 → 한선씨 HTML/CSS 서브셋 렌더러
  • crowny:// 스킴, 프리미엄.한선 번들 내장
  • B3: JS 엔진 (QuickJS 임베딩 또는 한선씨 JS 인터프리터)

관련 파일

  • /Users/ef/crowny-terminal/ — 기존 JS 데몬 (유지)
  • /Users/ef/crowny-terminal-native/ — 네이티브 앱 (신규)
  • /Users/ef/CrownyOS/crownyc/crownyc_window.m — 참고용 framebuffer 래퍼