Skip to content

Latest commit

 

History

History
107 lines (76 loc) · 3.21 KB

File metadata and controls

107 lines (76 loc) · 3.21 KB

Launchpad

alt text English

macOS 26에서 빠진 기존 Launchpad의 사용감을 되살리는 네이티브 macOS 앱 런처입니다. 목표는 단순한 앱 목록이 아니라, Apple Launchpad처럼 자연스러운 제스처, 페이지 전환, 폴더, 검색, 드래그 앤 드롭을 제공하는 것입니다.

주요 기능

  • /Applications, /System/Applications, ~/Applications 앱 스캔
  • 기존 Launchpad와 비슷한 7x5 페이지형 그리드
  • 앱 검색과 키보드 탐색
  • 앱 실행, Finder에서 보기, Dock에 추가, 휴지통으로 이동
  • 앱 드래그 재정렬
  • 앱을 앱 위에 드롭해 폴더 생성
  • 폴더 안 앱 추가, 제거, 재정렬, 이름 변경
  • 페이지 도트, 마우스 드래그, 트랙패드 스와이프 페이지 이동
  • 자동 또는 3/4/5손가락 트랙패드 pinch/spread 열기/닫기
  • F4 키, 전역 단축키, 메뉴 막대 아이콘, 핫 코너
  • 네이티브 Launchpad 레이아웃 가져오기
  • 그리드/외관/앱 소스 설정
  • 아이콘 다운샘플 캐시와 SwiftUI 업데이트 범위 최적화

설치와 실행

로컬 앱 번들을 빌드합니다.

Scripts/build-app.sh
open .build/Launchpad-Dev.app

SwiftPM으로 직접 실행할 수도 있습니다.

swift run Launchpad

로그인 항목, 접근성 권한, 전역 단축키처럼 앱 번들 identity가 필요한 기능은 .build/Launchpad-Dev.app으로 테스트하는 편이 정확합니다. 프로덕션 번들은 별도 bundle ID의 .build/Launchpad.app입니다.

검증

변경 후 기본 검증:

swift build
swift run LaunchpadCheck

앱 번들 검증:

Scripts/build-app.sh
open .build/Launchpad-Dev.app

수동 체크:

  • 빈 배경 클릭으로 런처/폴더 닫힘
  • ESC가 폴더, 검색, 런처 순서로 닫힘
  • 앱을 앱 위로 드래그하면 폴더 생성
  • 앱을 폴더 위로 드래그하면 폴더에 추가
  • 실패하거나 취소된 드래그 후 아이콘 투명도 복구
  • 페이지 스와이프가 아이콘 드래그와 충돌하지 않음

아키텍처

Launch        실행 엔트리
LaunchApp     AppKit, SwiftUI, 입력, 권한, 설정, 시스템 연동
LaunchCore    Foundation만 사용하는 순수 규칙
LaunchpadCheck LaunchCore 규칙 검증 실행 파일

규칙:

  • LaunchCoreFoundation만 import합니다.
  • AppKit, SwiftUI, 권한, persistence, 시스템 API는 LaunchApp에 둡니다.
  • AppState가 단일 observable UI 모델입니다.
  • process-level AppKit wiring은 AppDelegate가 담당합니다.
  • SwiftUI view는 AppState를 호출하고, AppKit 부작용은 LauncherActions를 통해 나갑니다.

자세한 내용은 docs/ARCHITECTURE.md를 보세요.

패키징

개발 앱 번들:

pnpm app:dev

프로덕션 앱과 DMG:

pnpm app:prod
pnpm dmg:prod

서명과 notarization 흐름은 docs/PACKAGING.md에 정리되어 있습니다.

상태

현재는 MVP를 넘어 실제 사용 품질을 다듬는 단계입니다. 우선순위는 네이티브 수준의 제스처, 부드러운 페이지 전환, 안정적인 폴더 드래그, 낮은 메모리 사용량입니다.

라이선스

MIT