macOS 태호(Tahoe)에서 클립보드는 어떻게 동작할까

macOS 태호(Tahoe)에서 클립보드는 어떻게 동작할까

핵심 요약: macOS의 클립보드는 ‘페이스트보드(pasteboard)’라는 시스템 전역 서비스입니다. 복사하면 원본 앱이 같은 내용을 여러 형식(일반 텍스트, 서식 있는 텍스트, 이미지, 파일 참조 등)으로 시스템에 넘기고 변경 카운터가 1 올라갑니다. 붙여넣기를 하면 대상 앱이 자신이 이해하는 형식 중 가장 풍부한 것을 골라 씁니다. Tahoe는 이 기본 구조를 그대로 유지하면서 Spotlight에 클립보드 기록 기능을 추가했고, 백그라운드에서 클립보드를 읽는 앱에 대한 개인정보 보호도 계속 강화하고 있습니다.

하루에 ⌘C를 마흔 번쯤 누르죠. 그중 한 번을 처음부터 끝까지 따라가 봅시다. 글꼴이 엉뚱하게 붙는 텍스트, 파일로 날아온 이미지, 기록 앱에 그대로 찍힌 비밀번호 같은 클립보드의 이상한 현상은 거의 다 이 과정의 어느 한 단계에서 비롯되기 때문입니다.

macOS에서 클립보드란 무엇인가?

클립보드의 정확한 이름은 범용 페이스트보드(general pasteboard)입니다. 앱들이 NSPasteboard API로 접근하는 공유 시스템 서비스이고, 파일도 눈에 보이는 앱도 아닙니다. 한 번에 하나의 ‘항목 묶음’만 보관하며, 다시 복사하면 덮어써집니다. 터미널 도구 pbcopy, pbpaste에 pb가 붙은 이유가 바로 이 이름 때문입니다.

아래 내용을 이해하려면 두 가지만 기억하면 됩니다.

  • 한 번에 하나만 담는다. macOS는 Windows의 ⊞V처럼 범용 페이스트보드에 대한 다중 항목 기록을 기본으로 제공한 적이 없습니다. 기록은 늘 그 위에 얹는 기능이었고, Tahoe의 Spotlight 기능이 Apple이 시스템 차원에서 내놓은 첫 시도입니다(아래에서 설명합니다).
  • 복사 한 번은 사실 여러 번의 복사다. ⌘C 한 번으로 같은 내용의 여러 표현이 동시에 페이스트보드에 올라갈 수 있습니다.

⌘C를 누르면 무슨 일이 일어날까?

  1. 앱이 페이스트보드를 점유한다. 기존 내용을 지우고 앞으로 제공할 형식을 선언합니다. 이때 페이스트보드의 변경 횟수(change count)라는 정수가 1 증가합니다.
  2. 앱이 여러 타입을 제시한다. 각 타입은 파일 형식을 식별할 때 쓰는 것과 같은 체계인 UTI(Uniform Type Identifier)로 구분됩니다.
  3. 데이터는 지연 전달될 수 있다. 앱은 형식만 약속해 두고, 실제로 누군가 붙여넣을 때 비로소 바이트를 만들어 줄 수 있습니다. 덕분에 큰 이미지나 스프레드시트 셀 범위를 복사해도 필요해질 때까지 부담이 적습니다.

앱마다 붙여넣기 결과가 다른 이유는?

고르는 쪽이 대상 앱이기 때문입니다. Safari에서 스타일이 적용된 문단을 복사하면 페이스트보드에는 다음처럼 여러 버전이 동시에 들어 있을 수 있습니다.

표현 방식 대표적인 타입 식별자 주로 선택하는 앱
일반 텍스트 public.utf8-plain-text 터미널, 코드 에디터, 검색창
서식 있는 텍스트 public.rtf 텍스트편집기, Pages, 메일
HTML public.html 웹 에디터, 메모, 리치 텍스트 필드
이미지 public.png / public.tiff 미리보기, Keynote, 디자인 도구
파일 참조 public.file-url Finder, 메일 첨부, 메신저 앱

코드 에디터는 일반 텍스트를 가져가고 HTML은 무시하므로 스타일이 사라집니다. 메모 앱은 HTML을 가져가서 서식이 유지됩니다. 어느 쪽도 버그가 아닙니다. ⌥⇧⌘V(스타일 일치시켜 붙여넣기)가 존재하는 것도 같은 이유입니다. 대상 앱에 일반 텍스트 표현을 우선 쓰고 그곳의 서식을 적용해 달라고 요청하는 기능이죠.

터미널에서 직접 확인해 보기

말로만 믿을 필요는 없습니다. 아무거나 복사한 뒤 다음 명령을 실행해 보세요.

osascript -e 'clipboard info'

현재 클립보드에 올라 있는 각 타입과 크기(바이트)가 출력됩니다. Numbers에서 셀 범위를 복사해 보고, 이어서 웹 페이지의 문단을 복사해 두 목록을 비교해 보세요. 앱마다 붙여넣기 동작이 다른 이유가 그 차이에 다 들어 있습니다. 텍스트만 보고 싶다면 pbpaste로 출력하고, echo "hello" | pbcopy로 클립보드에 쓸 수 있습니다.

Mac은 클립보드가 바뀐 것을 어떻게 알까?

사실 누구에게도 알려주지 않습니다. 공개된 API 기준으로 NSPasteboard에는 ‘클립보드가 바뀌었다’는 알림이 없습니다. 이 정보가 필요한 앱, 즉 모든 클립보드 매니저는 짧은 주기로 변경 횟수를 폴링하다가 숫자가 움직였을 때만 내용을 읽습니다. 정수 하나를 읽는 일은 비용이 거의 들지 않아서 부담이 없습니다.

여기서 실용적인 결과가 몇 가지 나옵니다.

  • 기록 앱은 실행 중이 아닐 때 복사된 내용을 볼 수 없습니다.
  • 폴링 간격보다 빠르게 두 번 복사하면 첫 번째가 누락될 수 있습니다. Maccy는 설정에서 폴링 간격을 조절할 수 있습니다 .
  • 앱이 같은 내용을 다시 써도 변경 횟수는 올라갑니다. 기록 도구에 자체 중복 제거 로직이 필요한 이유입니다.

Tahoe에서 새로워진 점

Spotlight의 클립보드 기록

이 주제에서 Tahoe의 가장 큰 변화는 Spotlight에 클립보드 보기가 생겼다는 점입니다. Spotlight를 열어 해당 보기로 전환하면(새 Spotlight 카테고리의 단축키 중 클립보드는 ⌘4로 알려져 있습니다 ) 최근 복사한 항목을 훑어보고 하나를 골라 다시 붙여넣을 수 있습니다. Apple은 이 기록을 단기용으로 설명하며, 대략 8시간 전까지만 거슬러 올라간다고 합니다 .

그래서 Spotlight는 ‘한 시간 전에 복사한 그거 어디 갔지?’ 싶을 때 쓰는 안전망으로 꽤 쓸 만합니다. 반면 공개된 설계로 보면 장기 보관소는 아닙니다. 일주일 전 스니펫도, 즐겨찾기 고정도, 전문 도구가 제공하는 앱별 무시 규칙도 기대하기 어렵습니다 .

클립보드 읽기에 대한 강화된 개인정보 보호

Apple은 프로그램이 클립보드를 읽는 동작을 사용자에게 보이게 하는 방향으로 움직여 왔습니다. 기반 작업은 개발자용 새 페이스트보드 접근 동작(access behavior) API로 먼저 나왔고, 최종 방향은 사용자의 붙여넣기 동작 없이 앱이 클립보드를 읽으면 iOS처럼 안내 메시지를 띄우는 것입니다. Tahoe가 일반 서드파티 앱에 이를 얼마나 엄격하게 적용하는지, 사용자에게 어떤 설정이 보이는지는 실제 Tahoe 기기에서 확인한 뒤에 의존하시길 권합니다 . 백그라운드에서 클립보드를 읽는 것이 본업인 클립보드 매니저에는 특히 중요한 문제이니, 앱별로 Tahoe 권한 관련 문서를 확인하세요.

클립보드가 Mac과 iPhone 사이에서 동기화될까?

네, 유니버설 클립보드(Universal Clipboard)를 통해서입니다. 연속성(Continuity) 기능의 일부로, 두 기기에 같은 Apple 계정으로 로그인하고 Handoff를 켜고 Bluetooth와 Wi-Fi를 켠 채 가까이 두면 됩니다. 한 기기에서 복사하고 다른 기기에서 붙여넣으세요. 전달된 내용은 짧은 시간 동안만 쓸 수 있어서, 동기화되는 기록이 아니라 Handoff처럼 동작합니다. 또한 한 번에 한 항목만 전달되어 새로 복사할 때마다 이전 것을 대체합니다.

작동하지 않는다면 보통 Handoff가 꺼져 있거나, Bluetooth가 비활성화됐거나, 기기끼리 Apple 계정이 다른 경우입니다. Handoff를 껐다 켜는 것이 고전적인 첫 번째 해결책입니다.

무엇이 비공개로 유지되고, 무엇은 그렇지 않을까?

클립보드는 읽기가 허용된 모든 앱이 읽을 수 있고, 복사 단위의 암호화도 없습니다. 그래서 커뮤니티가 관례를 만들었습니다. 민감한 데이터를 복사하는 앱이 특수한 페이스트보드 타입으로 표시해 두는 것인데, nspasteboard.org에 문서화되어 있고 org.nspasteboard.ConcealedType(비밀번호), org.nspasteboard.TransientType(일시적 내용) 같은 것들이 있습니다. 비밀번호 관리자는 대개 이 타입을 설정하고, 규칙을 잘 지키는 클립보드 매니저는 이 표시가 붙은 항목을 건너뜁니다.

Maccy도 이 관례를 따릅니다. 설정의 무시(Ignore) 항목에서 무시할 페이스트보드 타입 목록을 확인하고 편집할 수 있고, 특정 앱을 통째로 무시할 수도 있습니다 . 솔직하게 짚어둘 단서가 두 가지 있습니다. 이 표시는 강제 장치가 아니라 관례일 뿐이라서 표시를 달지 않는 앱의 데이터는 그대로 노출됩니다. 그리고 복사한 모든 내용은 덮어써지기 전까지 클립보드 읽기가 허용된 모든 앱에 보입니다.

기본 클립보드 vs. 클립보드 매니저

내장 클립보드(페이스트보드) Spotlight 기록(Tahoe) 전용 매니저(예: Maccy)
보관 항목 수 1개 최근 항목만, 대략 몇 시간 분량 설정 가능한 기록
검색 불가 Spotlight를 통해 가능 가능, 입력하면 바로 필터링
민감한 앱/타입 무시 해당 없음 가능
디스크에 저장 아니요 내 Mac에 로컬로 저장
비용 기본 포함 기본 포함 Maccy: 무료 오픈 소스

가끔 방금 복사한 내용을 되찾는 정도라면 Spotlight 기록만으로 충분할 수 있습니다. 같은 스니펫 묶음을 매일 붙여넣거나, 민감한 앱 제외와 더 긴 기록이 필요하다면 전용 매니저가 제 몫을 합니다. Maccy App는 메뉴 막대에서 실행되고, 기본적으로 ⇧⌘C로 열리며, 키보드 중심의 필터링을 기본으로 설계되었습니다 . 어떤 방식을 택하든 위에서 설명한 내용은 그대로 적용됩니다. 모든 도구가 같은 페이스트보드 위에서 동작하기 때문입니다.

문제 해결: 클립보드가 말을 안 들을 때

  • 붙여넣기가 아무 반응이 없거나 예전 내용이 붙는다. 일반 텍스트 필드에서 아무 글자나 복사해 상태를 초기화한 뒤 다시 시도하세요. 계속되면 붙여넣는 앱을 재시작합니다.
  • 서식이 계속 따라온다. ‘스타일 일치시켜 붙여넣기'(⌥⇧⌘V)를 쓰세요.
  • 파일을 복사했는데 경로가 붙는다(또는 그 반대). 앱이 예상과 다른 표현을 고르고 있는 것입니다. osascript -e 'clipboard info'로 클립보드에 무엇이 올라 있는지 확인해 보세요.
  • 유니버설 클립보드가 불안정하다. 같은 Apple 계정인지, Handoff와 Bluetooth, Wi-Fi가 켜져 있는지 확인하세요.
  • 최후의 수단. 로그아웃했다가 다시 로그인하거나 재시동하세요. 페이스트보드 서비스는 시스템이 관리하며 세션과 함께 다시 시작됩니다.

기억해 둘 멘탈 모델

복사는 여러 형식의 묶음을 게시하고 카운터를 올리는 일입니다. 붙여넣기는 대상 앱이 그 묶음에서 골라 가는 일이고요. 기록, 동기화, 개인정보 보호 같은 나머지는 모두 이 단순한 토대 위에 쌓여 있습니다. clipboard info로 그 묶음을 직접 볼 수 있게 되면, 클립보드의 수수께끼 대부분은 더 이상 수수께끼가 아닙니다.

붙여넣기 때 가장 짜증나는 일은 무엇인가요? 사라지는 서식, 사라지는 기록, 아니면 다른 무엇이든 알려 주세요. 다음 가이드의 주제가 될 수도 있습니다.



Игорь Балькин
Автор: Игорь Балькин. Веб-разработчик с 2001 года. Разработчик сайтов на WordPress, CRM и веб-приложений. Минск, Беларусь. Контактная информация.