Skip to content

Repository files navigation

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages