피드로 돌아가기
RetroWin – Bringing the classic Windows taskbar back, on macOS
Dev.toDev.to
Frontend

Accessibility API와 1Hz Polling을 통한 macOS 윈도우 관리 시스템 구현

RetroWin – Bringing the classic Windows taskbar back, on macOS

Pengpeng2026년 5월 14일5intermediate

Context

macOS Dock의 단일 앱 아이콘 기반 인터페이스로 인한 개별 윈도우 식별 불가 및 가시성 저하 문제 발생. 특히 다중 윈도우 환경에서 윈도우 타이틀 부재와 최소화 윈도우의 낮은 접근성으로 인한 작업 효율 저하를 해결할 필요성 대두.

Technical Solution

  • macOS Accessibility API를 활용한 모든 스크린 내 개별 윈도우 트래킹 및 렌더링 구조 설계
  • AXObserver의 이벤트 누락 보완을 위해 Event-driven 업데이트와 1Hz Reconcile Loop를 혼합한 하이브리드 윈도우 상태 동기화 로직 적용
  • Notification Center SQLite DB 직접 조회 및 AX Dock-tile Badge 모니터링을 통한 알림 감지 메커니즘 구현
  • Retina 및 Multi-DPI 환경 대응을 위해 비트맵 대신 Core Graphics 기반의 벡터 렌더링으로 테마 에셋 재구축
  • 각 OS 시대별 상이한 인터랙션 모델을 수용하기 위해 추상화 계층을 배제하고 테마별 병렬 구현 체계 채택
  • NSWindow.collectionBehavior 플래그 최적화를 통한 Multi-monitor 및 Spaces 환경 내 태스크바 가시성 유지

- OS API의 이벤트 누락 가능성 검토 후 Polling Loop를 통한 최종 상태 동기화 적용 여부 결정 - Multi-DPI 대응 시 고정 크기 에셋보다 벡터 기반 렌더링 파이프라인 구축 권장 - 상이한 UX 모델을 가진 기능을 통합할 때 무리한 추상화보다 도메인별 독립 구현을 통한 코드 복잡도 제어 검토

원문 읽기