Como a área de transferência funciona no macOS Tahoe

Como a área de transferência funciona no macOS Tahoe

Resposta rápida: A área de transferência do macOS é um serviço do sistema chamado pasteboard. Quando você copia, o app de origem entrega ao sistema uma ou mais representações do mesmo conteúdo (texto simples, texto formatado, imagem, referência a arquivo) e um contador é incrementado. Quando você cola, o app de destino escolhe o formato mais rico que consegue entender. O Tahoe mantém esse modelo, adiciona um histórico de área de transferência embutido no Spotlight e continua apertando a privacidade em relação a apps que leem a área de transferência em segundo plano.

Você aperta ⌘C umas quarenta vezes por dia. Vamos acompanhar uma dessas copiadas do começo ao fim, porque quase toda esquisitice que você já viu na área de transferência (texto colando com a fonte errada, imagem chegando como arquivo, senha aparecendo em app de histórico) nasce em algum ponto desse caminho.

O que é a área de transferência no macOS?

Tecnicamente, a área de transferência é o general pasteboard, um serviço compartilhado do sistema que os apps acessam pela API NSPasteboard. Não é um arquivo nem um app visível. Ele guarda um único «conjunto de itens» por vez, e copiar de novo substitui o conteúdo. É por causa do nome «pasteboard» que você vê pb em ferramentas de terminal como pbcopy e pbpaste.

Dois detalhes importam para tudo que vem a seguir:

  • Ela guarda uma coisa só por vez. O macOS nunca manteve um histórico nativo com vários itens no general pasteboard, como o ⊞V do Windows. Histórico sempre foi algo adicionado por cima. O recurso do Spotlight no Tahoe é a primeira tentativa da Apple de resolver isso no nível do sistema (veja mais abaixo).
  • Uma cópia são, na verdade, várias cópias. Um único ⌘C pode colocar várias representações do mesmo conteúdo no pasteboard ao mesmo tempo.

O que acontece quando você aperta ⌘C?

  1. O app assume o pasteboard. Ele limpa o conteúdo antigo e declara o que vai fornecer. É nesse momento que o change count (contador de mudanças, um número inteiro) sobe uma unidade.
  2. O app oferece vários tipos. Cada um é identificado por um Uniform Type Identifier (UTI), o mesmo sistema que identifica tipos de arquivo.
  3. Os dados podem ser entregues sob demanda. O app pode prometer um formato e só gerar os bytes quando alguém realmente colar. Isso deixa cópias grandes (uma imagem pesada, um intervalo de células de planilha) baratas até serem necessárias.

Por que o resultado muda quando colo em apps diferentes?

Porque quem escolhe é o destino. Copie um parágrafo formatado do Safari e o pasteboard pode conter várias versões ao mesmo tempo:

Representação Identificador de tipo típico Quem costuma escolher
Texto simples public.utf8-plain-text Terminais, editores de código, campos de busca
Texto formatado public.rtf TextEdit, Pages, Mail
HTML public.html Editores web, Notas, campos de texto rico
Imagem public.png / public.tiff Pré-visualização, Keynote, ferramentas de design
Referência a arquivo public.file-url Finder, anexos do Mail, apps de mensagem

Um editor de código pega o texto simples e ignora o HTML, então a formatação some. O Notas pega o HTML e mantém tudo. Nenhum dos dois está com bug. É também por isso que o atalho ⌥⇧⌘V (Colar e Corresponder ao Estilo) existe: ele pede ao destino que prefira a representação em texto simples e aplique a formatação local.

Veja com seus próprios olhos no Terminal

Você não precisa acreditar na minha palavra. Copie qualquer coisa e rode:

osascript -e 'clipboard info'

Ele lista cada tipo presente na área de transferência, com o tamanho em bytes. Copie um intervalo de células do Numbers, depois um parágrafo de uma página web, e compare as listas. A diferença entre elas explica por que a colagem se comporta de um jeito em cada app. Para a versão em texto, pbpaste imprime o conteúdo e echo "olá" | pbcopy escreve nele.

Como o Mac sabe que a área de transferência mudou?

Na maior parte do tempo, ele não avisa ninguém. Pelo que as APIs documentadas publicamente mostram, o NSPasteboard não oferece nenhuma notificação de «a área de transferência mudou». Os apps que precisam saber, ou seja, todo gerenciador de área de transferência, consultam o change count periodicamente num timer curto e só leem o conteúdo quando o número muda. Isso é barato, porque ler um inteiro custa quase nada.

Isso tem consequências práticas:

  • Um app de histórico não enxerga nada que foi copiado enquanto ele não estava rodando.
  • Se duas cópias acontecem mais rápido que o intervalo de consulta, a primeira pode passar batida. O intervalo de consulta do Maccy é ajustável nas configurações .
  • O change count também sobe quando um app reescreve o mesmo conteúdo, e é por isso que uma ferramenta de histórico precisa de uma deduplicação própria.

O que há de novo no Tahoe?

Histórico da área de transferência no Spotlight

A principal novidade do Tahoe para este assunto é que o Spotlight ganhou uma visualização de Área de Transferência. Abra o Spotlight e troque para ela (o conjunto de atalhos da Apple para as novas categorias do Spotlight coloca a área de transferência em ⌘4 ) e você pode navegar pelas cópias recentes e colar uma de volta. A Apple descreve esse histórico como de curta duração, voltando só cerca de oito horas .

Isso faz do Spotlight uma boa rede de segurança para o clássico «eu copiei isso uma hora atrás». O que ele não é, pelo que se sabe do design, é um arquivo de longo prazo: nada de trechos da semana passada, nada de favoritos fixados e nenhuma regra de ignorar por app como as que as ferramentas dedicadas oferecem .

Mais privacidade nas leituras da área de transferência

A Apple vem caminhando para tornar visíveis ao usuário as leituras programáticas da área de transferência. A base disso chegou como novas APIs de comportamento de acesso ao pasteboard para desenvolvedores, e a direção é um aviso no estilo do iOS quando um app lê a área de transferência sem uma ação de colar do usuário. Com que rigor o Tahoe aplica isso a apps comuns de terceiros, e qual ajuste o usuário vê, são detalhes que eu confirmaria num Mac com Tahoe antes de depender deles . Isso importa para gerenciadores de área de transferência porque o trabalho deles é justamente ler a área de transferência em segundo plano, então consulte a documentação de cada app sobre as permissões no Tahoe.

A área de transferência sincroniza entre o Mac e o iPhone?

Sim, pela Área de Transferência Universal. Ela faz parte da Continuidade: entre com o mesmo ID Apple nos dois aparelhos, ative o Handoff, mantenha Bluetooth e Wi-Fi ligados e deixe os aparelhos próximos. Copie em um, cole no outro. O conteúdo transferido fica disponível só por uma janela curta de tempo, então funciona como um handoff e não como um histórico sincronizado. Também é de item único: cada nova cópia substitui a anterior.

Se parar de funcionar, as causas de sempre são o Handoff desativado, o Bluetooth desligado ou os aparelhos em contas Apple diferentes. Desligar e ligar o Handoff é a primeira correção clássica.

O que fica privado e o que não fica?

A área de transferência pode ser lida por qualquer app que tenha permissão para isso. Não existe criptografia por cópia. Por isso a comunidade criou uma convenção: apps que copiam dados sensíveis os marcam com tipos especiais de pasteboard, documentados em nspasteboard.org, como org.nspasteboard.ConcealedType (senhas) e org.nspasteboard.TransientType (conteúdo de curta duração). Gerenciadores de senha costumam definir esses tipos, e gerenciadores de área de transferência bem-comportados ignoram tudo que os carrega.

O Maccy segue essa convenção. Nas configurações, em Ignorar, você pode ver e editar a lista de tipos de pasteboard ignorados e ignorar apps específicos por completo . Duas ressalvas, ditas com honestidade: as marcações são uma convenção, não um mecanismo de imposição, então um app que não as define deixa seus dados expostos, e tudo que você copia fica visível para qualquer app com permissão de leitura até ser sobrescrito.

Área de transferência nativa vs. gerenciador de área de transferência

Área de transferência nativa (pasteboard) Histórico do Spotlight (Tahoe) Gerenciador dedicado (ex.: Maccy)
Itens guardados Um Só itens recentes, algo em torno de horas Histórico configurável
Busca Não Pelo Spotlight Sim, é só digitar para filtrar
Ignorar apps/tipos sensíveis Não se aplica Sim
Salvo em disco Não Localmente no seu Mac
Custo Incluído Incluído Maccy: gratuito e de código aberto

Se você só precisa de vez em quando recuperar uma cópia recente, o histórico do Spotlight pode bastar. Se você cola todo dia do mesmo conjunto de trechos, ou quer exclusão de apps sensíveis e um histórico mais longo, um gerenciador dedicado se justifica. O Maccy App roda na barra de menus, abre com ⇧⌘C por padrão e é construído em torno de filtragem pelo teclado . Seja qual for o caminho, tudo o que foi dito acima continua valendo, porque toda ferramenta fica em cima do mesmo pasteboard.

Solução de problemas: quando a área de transferência se comporta mal

  • Colar não faz nada ou cola conteúdo antigo. Copie algo trivial de um campo de texto simples para zerar o estado e tente de novo. Se persistir, reinicie o app em que você está colando.
  • A formatação vem junto sem você querer. Use Colar e Corresponder ao Estilo (⌥⇧⌘V).
  • Copiou um arquivo e veio o caminho (ou o contrário). O app está escolhendo uma representação diferente da que você esperava. Veja o que está na área de transferência com osascript -e 'clipboard info'.
  • A Área de Transferência Universal está instável. Confirme o mesmo ID Apple, Handoff ativado e Bluetooth e Wi-Fi ligados.
  • Último recurso. Encerre a sessão e entre de novo, ou reinicie o Mac. O serviço de pasteboard é gerenciado pelo sistema e reinicia junto com a sua sessão.

O modelo mental para guardar

Copiar publica um pacote de formatos e incrementa um contador. Colar é o app de destino escolhendo algo desse pacote. Todo o resto, incluindo histórico, sincronização e privacidade, é construído sobre essa base simples. Quando você consegue ver o pacote com clipboard info, a maioria dos mistérios da área de transferência deixa de ser mistério.

Qual surpresa na hora de colar mais te irrita: formatação perdida, histórico perdido ou outra coisa? Conte para nós e isso pode virar o próximo guia.



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