Weatherling비가 올 때 가장 행복해요

블로그 · · 업데이트: · 작성: Matt Senter

화면 기록 권한 없이 창 뒤에 내리는 비

Weatherling이 창 뒤에 비를 내리는 데는 화면 기록을 비롯한 어떤 권한도 필요하지 않습니다. 화면에 무엇이 있는지 보지 않습니다. macOS가 모든 앱에 공유하는 각 창의 윤곽만 활용하며, 네트워크 접근 없이 Apple의 App Sandbox 안에서 실행됩니다.

너무 좋은 이야기처럼 들릴 수 있습니다. 물방울이 제목 막대에 닿아 옆으로 흐르고 앞쪽 창 뒤로 사라지는 모습을 보면 앱이 화면 내용을 어떻게 아는지 궁금할 만합니다. 답은 간단합니다. 알지 못합니다. 어디에 있는지만 알며, 비에는 그것으로 충분합니다.

창의 내용 대신 위치와 크기

모든 Mac 앱은 macOS에 현재 화면에 있는 창 목록을 요청할 수 있습니다. Weatherling은 다음 함수를 사용합니다: CGWindowListCopyWindowInfo. 창 관리자와 스크린샷 도구도 출발점으로 사용하는 공개 함수입니다. 각 창에서 다음 다섯 가지만 읽습니다:

  • 경계. 창의 위치와 크기.
  • 레이어. 일반 창인지, 메뉴인지, 시스템 UI의 일부인지.
  • 알파. 실제로 보이는지, 완전히 투명한지.
  • 창 번호. 창이 움직일 때 추적할 수 있는 ID.
  • 소유 프로세스 ID. Weatherling 자체 창과 사용자의 창을 구별하는 데만 쓰는 숫자.

목록은 앞에서 뒤 순서로 반환되며 이것이 나머지 핵심입니다. 앞쪽 창 가장자리를 지나 뒤쪽 창에 떨어지는 물방울은 목록의 다음 윤곽과 충돌을 확인한 결과입니다. 어느 창의 픽셀도 보지 않고 한 창 앞과 다른 창 뒤에 비를 내릴 수 있는 이유입니다.

같은 목록에는 창 제목, 소유 앱의 이름, 공유 여부도 있지만 Weatherling은 이 필드들을 읽지 않습니다. 비에는 필요하지 않으며, 이 정보를 건드리지 않는 것이 권한이 필요 없는 이유 중 하나입니다.

창 제목에는 왜 화면 기록 권한이 필요할까요?

macOS Catalina부터 다른 앱의 창 제목은 화면 콘텐츠로 취급됩니다. 제목에는 이메일 제목, 문서 이름, 읽는 페이지가 들어갈 수 있어 macOS는 화면 기록을 허용한 앱에만 이를 제공합니다. 권한이 없으면 제목 필드는 비어 있습니다.

이 경계가 설계의 기준입니다. 메일과 코드 편집기에서 다르게 동작하려는 앱이라면 제목이나 화면 캡처가 필요하고 권한을 요청해야 합니다. Weatherling은 어떤 창인지가 아니라 어디에 있는지만 중요하므로 권한 안내가 필요 없는 범위 안에 머뭅니다. 다른 앱 내부를 읽거나 제어하지 않아 손쉬운 사용 권한도 요청하지 않습니다. 키보드 감시, 입력 접근, 자동화도 없습니다.

샌드박스 안에서, 필요한 것만

Mac App Store 앱은 Apple의 App Sandbox 안에서 실행되며 네트워크, 카메라, 컨테이너 외부 파일 등 추가로 필요한 기능을 권한 항목으로 선언합니다. Weatherling이 선언하는 항목은 com.apple.security.app-sandbox 및com.apple.security.files.user-selected.read-write입니다. 후자는 저장 대화상자에서 선택한 파일에 점수 카드를 저장할 수 있게 합니다. Apple의 코드 서명은 모든 App Store 앱에 앱 및 팀 식별자도 추가하지만, 이들은 별도 접근 권한을 부여하지 않습니다.

있는 것만큼 없는 것도 중요합니다. 네트워크 클라이언트 권한이 없는 샌드박스 앱은 외부 연결을 열 수 없습니다. 따라서 Weatherling이 네트워크 요청을 하지 않는다는 것은 여기 적힌 약속만이 아니라 macOS가 강제하는 제한입니다. 계정, 분석 도구, 충돌 보고 서비스가 없습니다. 비 강도와 바람 같은 설정은 Mac의 앱 전용 샌드박스 저장소에 남습니다.

빗소리도 같습니다. 녹음은 앱에 포함되어 있으며 통화 중에는 소리가 줄어듭니다. Weatherling은 어떤 앱이 마이크를 사용 중인지 확인해 통화를 알아차립니다. macOS가 제공하는 기기 사용 여부만 확인하며 마이크를 열거나 오디오를 녹음하거나 마이크 권한을 요청하지 않습니다.

직접 확인해 보세요

말만 믿을 필요는 없습니다. 약 1분이면 세 가지를 확인할 수 있습니다:

  1. 시스템 설정 > 개인정보 보호 및 보안 > 화면 기록을 여세요. 최신 macOS에서는 ‘화면 및 시스템 오디오 기록’입니다. Weatherling은 요청한 적이 없으므로 목록에 없습니다.
  2. 같은 곳의 손쉬운 사용과 마이크도 확인해 보세요. 어느 목록에도 없습니다.
  3. 터미널에서 다음을 실행하세요: codesign -d --entitlements - /Applications/Weatherling.app. Apple 서명이 모든 App Store 앱에 추가하는 앱 및 팀 식별자를 제외하면 App Sandbox와 점수 카드 저장용 사용자 선택 파일 접근 권한만 있습니다. 네트워크 권한은 없습니다.

향후 버전에서 더 많은 권한이 필요해지면 먼저 요청 창이 나타납니다. macOS는 앱이 이런 권한을 몰래 얻도록 허용하지 않습니다.

창을 확인하는 데 드는 비용

창 목록을 읽는 비용은 작습니다. 창이 멈춰 있을 때는 초당 약 10회, 움직일 때는 잠시 더 빠르게 요청해 드래그하는 창을 물이 뒤처지지 않고 따라가게 합니다. 확인 사이에 저장하는 것은 윤곽뿐이며 창을 닫는 순간 사라집니다.

데스크탑을 꾸미기 위해 개인정보를 내줄 필요는 없어야 합니다. 비를 켜고 기분에 맞게 조절한 뒤 하던 일로 돌아가세요. Weatherling은 그 일이 무엇인지 알 필요가 없습니다.

설치 없이 동작을 확인하려면 다음으로 이동하세요: 홈 페이지. 드래그 가능한 창으로 같은 원리의 브라우저 데모를 체험할 수 있습니다. 앱이 저장하는 것과 저장하지 않는 것의 세부 사항은 개인정보 처리방침에 있습니다. 이런 효과를 만드는 이유는 다음 글에서 설명합니다: 데스크탑에 내리는 비가 마음을 편안하게 하는 이유.