{"id":51287578,"url":"https://github.com/dev-jonghoonpark/control-room","last_synced_at":"2026-06-30T07:02:43.861Z","repository":{"id":366436487,"uuid":"1276283991","full_name":"dev-jonghoonpark/control-room","owner":"dev-jonghoonpark","description":"macOS menu-bar bar that previews the frontmost window of every desktop (Space) at a glance — click to jump. Powered by private SkyLight APIs.","archived":false,"fork":false,"pushed_at":"2026-06-21T19:37:56.000Z","size":19,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-21T21:19:35.922Z","etag":null,"topics":["appkit","macos","menu-bar","mission-control","skylight","spaces","swift","swiftui","window-management"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dev-jonghoonpark.png","metadata":{"files":{"readme":"README.ko.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-21T19:26:43.000Z","updated_at":"2026-06-21T19:37:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dev-jonghoonpark/control-room","commit_stats":null,"previous_names":["dev-jonghoonpark/control-room"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/dev-jonghoonpark/control-room","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-jonghoonpark%2Fcontrol-room","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-jonghoonpark%2Fcontrol-room/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-jonghoonpark%2Fcontrol-room/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-jonghoonpark%2Fcontrol-room/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dev-jonghoonpark","download_url":"https://codeload.github.com/dev-jonghoonpark/control-room/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-jonghoonpark%2Fcontrol-room/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34955986,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appkit","macos","menu-bar","mission-control","skylight","spaces","swift","swiftui","window-management"],"created_at":"2026-06-30T07:02:43.785Z","updated_at":"2026-06-30T07:02:43.853Z","avatar_url":"https://github.com/dev-jonghoonpark.png","language":"Swift","funding_links":["https://github.com/sponsors/dev-jonghoonpark"],"categories":[],"sub_categories":[],"readme":"# Control Room\n\n*[English](README.md) · 한국어*\n\n화면에 떠 있는 바에서 **각 데스크탑(Space)에서 맨 앞 창의 미리보기 + 앱 이름을 한눈에** 보고,\n클릭하면 해당 창/데스크탑으로 바로 이동하는 macOS 메뉴바 앱입니다.\nMission Control처럼 왔다 갔다 하지 않고도 어느 데스크탑에 뭐가 떠 있는지 파악할 수 있어요.\n\n- 데스크탑마다 **맨 앞 창 하나의 미리보기 + 앱 이름**을 표시(비어 있으면 \"없음\").\n- 바는 **왼쪽 그립으로 이동**, **가장자리/우하단 그립으로 Dock처럼 비율 유지하며 확대/축소**. 위치/크기는 자동 저장.\n\n## 동작 방식\n\nmacOS는 **현재 활성화된 Space만 렌더링**하므로, 다른 데스크탑의 화면은 공개 API로 캡처할 수 없습니다.\nMission Control이 하는 것처럼 Apple의 비공개 프레임워크 **SkyLight(SLS)** 를 사용합니다\n(yabai · AltTab 등 검증된 오픈소스와 동일한 접근).\n\n- `SLSCopyManagedDisplaySpaces` — 모든 디스플레이의 Space 목록 / 현재 Space\n- `SLSCopyWindowsWithOptionsAndTags` — 각 Space의 창 목록(맨 앞 창 추출)\n- `SLSHWCaptureWindowList` — 맨 앞 창 하나의 미리보기 캡처(다른 Space 창 포함)\n- Accessibility(`AXRaise`) — 클릭 시 해당 창으로 점프(= 그 Space로 이동)\n\n\u003e ⚠️ Control Room은 비공개 API에 의존하므로 macOS 버전이 올라가면 시그니처가\n\u003e 바뀌어 동작이 깨질 수 있습니다(그때는 코드 업데이트가 필요할 수 있어요).\n\u003e 같은 이유로 Mac App Store에는 올릴 수 없어 DMG와 소스 형태로 직접 배포합니다.\n\u003e 창 목록은 1초 주기로 갱신됩니다.\n\n## 빌드\n\n```bash\n# 개발 중 실행\nxcrun swift run -c release\n\n# .app 번들 생성 → dist/ControlRoom.app\n./scripts/build-app.sh\n\n# 배포용 DMG 생성 → dist/ControlRoom.dmg\n./scripts/make-dmg.sh\n```\n\n요구사항: macOS 13+, Xcode(또는 Command Line Tools)의 Swift 5.9+.\n\n## 권한 (최초 1회)\n\n`시스템 설정 → 개인정보 보호 및 보안` 에서 두 가지를 허용해야 합니다.\n\n1. **화면 기록(Screen Recording)** — 맨 앞 창 미리보기 캡처에 필요. 허용 후 앱 **재실행** 필요.\n2. **손쉬운 사용(Accessibility)** — 다른 Space의 창을 포커스(점프)하는 데 필요.\n\n앱 첫 실행 시 두 권한을 자동으로 요청합니다. 메뉴바 아이콘 → \"화면 기록 권한 재요청\" / \"손쉬운 사용 권한 재요청\"으로 다시 요청할 수 있습니다.\n\n\u003e UI는 다국어를 지원합니다. 기본은 영어이고, 시스템 선호 언어가 한국어이면 한국어로 표시됩니다.\n\n## 사용법\n\n- 실행하면 화면 상단에 컨트롤룸 바가 나타납니다.\n- 메뉴바 아이콘(▦) 클릭 또는 메뉴의 \"표시/숨기기\"로 토글합니다.\n- 각 항목 = 하나의 데스크탑. 번호 배지가 파란색 = 현재 데스크탑.\n- 카드 클릭 → 그 데스크탑의 맨 앞 창으로 점프. 빈 데스크탑(\"없음\") 클릭 → 그 데스크탑으로 전환.\n- **왼쪽 점무늬 그립**을 끌면 이동, **가장자리** 또는 **우하단 빗금 그립**을 끌면 Dock처럼 비율 유지하며 확대/축소(위치·크기 자동 저장).\n- 메뉴 → \"위치/사이즈 초기화\"로 기본 위치·크기로 되돌립니다.\n\n## 배포 시 주의 (서명되지 않은 앱)\n\nDMG를 받은 사람이 처음 열 때 Gatekeeper가 막을 수 있습니다.\n앱을 우클릭 → \"열기\" 하거나, 터미널에서 격리 속성을 제거하세요:\n\n```bash\nxattr -dr com.apple.quarantine /Applications/ControlRoom.app\n```\n\n## 한계 / 향후\n\n- 데스크탑마다 맨 앞 창 하나만 미리보기(나머지 창은 생략).\n- 비활성 Space의 미리보기는 \"마지막으로 보였던 모습\"입니다(해당 Space는 렌더링되지 않으므로). 현재 Space만 실시간 갱신.\n- 비활성 패널 특성상 가장자리 리사이즈 **커서**는 표시되지 않을 수 있어, 그립을 시각적 표시로 제공합니다.\n- 전역 단축키, 멀티 모니터 배치 개선, 드래그로 창을 다른 Space로 이동 등은 향후 과제.\n\n## 라이선스\n\n[MIT](LICENSE) © jonghoonpark\n\n## 후원\n\nControl Room이 유용했다면 개발을 후원해 주세요:\n\n\u003ca href=\"https://github.com/sponsors/dev-jonghoonpark\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/dev-jonghoonpark/github-style-button-image-generator/refs/heads/main/example/sponsor-button.png\" alt=\"Sponsor\" height=\"32\"\u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-jonghoonpark%2Fcontrol-room","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdev-jonghoonpark%2Fcontrol-room","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-jonghoonpark%2Fcontrol-room/lists"}