Så fungerar urklippet i macOS Tahoe

Så fungerar urklippet i macOS Tahoe

Kort svar: Urklippet i macOS är en systemövergripande tjänst som kallas pasteboard. När du kopierar lämnar källappen över en eller flera representationer av samma innehåll till systemet (ren text, formaterad text, en bild, en filreferens), och en räknare räknas upp. När du klistrar in väljer målappen det rikaste format den förstår. Tahoe behåller den här modellen, lägger till en inbyggd urklippshistorik i Spotlight och skärper integriteten kring appar som läser urklippet i bakgrunden.

Du trycker ⌘C ett fyrtiotal gånger om dagen. Låt oss följa ett av de tryckena från början till slut, för nästan alla konstigheter du stött på med urklipp (text som klistras in med fel typsnitt, en bild som dyker upp som en fil, ett lösenord som hamnar i en historikapp) beror på något steg i den här resan.

Vad är urklippet i macOS?

Urklippet är tekniskt sett den allmänna pasteboarden (general pasteboard), en delad systemtjänst som appar når via API:et NSPasteboard. Det är ingen fil och ingen synlig app. Den håller en aktuell uppsättning objekt åt gången, och när du kopierar igen ersätts den. Namnet «pasteboard» är anledningen till att du ser pb i terminalverktyg som pbcopy och pbpaste.

Två saker är viktiga för allt som följer:

  • Det rymmer bara en sak åt gången. macOS har aldrig haft någon inbyggd historik med flera poster för den allmänna pasteboarden, på det sätt som Windows ⊞V har. Historik är något som byggts ovanpå. Spotlight-funktionen i Tahoe är Apples första försök på systemnivå (se nedan).
  • En kopiering är egentligen flera kopior. Ett enda ⌘C kan lägga många representationer av samma innehåll på pasteboarden samtidigt.

Vad händer när du trycker ⌘C?

  1. Appen tar över pasteboarden. Den rensar det gamla innehållet och talar om vad den kommer att erbjuda. Det är då pasteboardens change count (ett heltal) ökar med ett.
  2. Appen erbjuder flera typer. Varje typ identifieras med en Uniform Type Identifier (UTI), samma system som används för filtyper.
  3. Datan kan levereras först när den behövs. Appen kan lova ett format och bara producera bytena när någon faktiskt klistrar in. Det gör stora kopieringar (en stor bild, ett område med kalkylbladsceller) billiga tills de behövs.

Varför får jag olika resultat när jag klistrar in i olika appar?

För att målet bestämmer. Kopierar du ett formaterat stycke från Safari kan pasteboarden innehålla flera versioner samtidigt:

Representation Typisk typidentifierare Vem väljer den
Ren text public.utf8-plain-text Terminaler, kodredigerare, sökfält
Formaterad text public.rtf TextEdit, Pages, Mail
HTML public.html Webbredigerare, Anteckningar, fält med rik text
Bild public.png / public.tiff Förhandsvisning, Keynote, designverktyg
Filreferens public.file-url Finder, bilagor i Mail, chattappar

En kodredigerare tar den rena texten och ignorerar HTML, så formateringen försvinner. Anteckningar tar HTML och behåller den. Ingen av dem är en bugg. Det är också därför ⌥⇧⌘V (Klistra in och matcha stil) finns: den ber målet att föredra representationen med ren text och tillämpa den lokala formateringen.

Se det själv i Terminal

Du behöver inte ta det på tro. Kopiera något och kör sedan:

osascript -e 'clipboard info'

Kommandot skriver ut varje typ som just nu ligger på urklippet, med storlek i byte. Kopiera ett cellområde från Numbers och sedan ett stycke från en webbsida, och jämför listorna. Skillnaden är hela förklaringen till varför inklistring beter sig olika i olika appar. För textversionen skriver pbpaste ut innehållet, och echo "hello" | pbcopy skriver till urklippet.

Hur vet Macen att urklippet har ändrats?

Det gör den för det mesta inte, åtminstone säger den inget till någon. Såvitt det går att se i offentligt dokumenterade API:er erbjuder NSPasteboard ingen notis om att urklippet har ändrats. Appar som bryr sig, alltså alla urklippshanterare, pollar change count med en kort timer och läser innehållet först när siffran har ändrats. Det är billigt, eftersom det knappt kostar något att läsa ett heltal.

Det får praktiska konsekvenser:

  • En historikapp kan inte se något som kopierades medan den inte var igång.
  • Om två kopieringar sker snabbare än pollningsintervallet kan den första missas. Maccys pollningsintervall går att justera i inställningarna .
  • Change count ökar också när en app skriver om exakt samma innehåll, vilket är varför ett historikverktyg behöver sin egen deduplicering.

Vad är nytt i Tahoe?

Urklippshistorik i Spotlight

Tahoes största nyhet i det här ämnet är att Spotlight har fått en Urklipp-vy. Öppna Spotlight och byt till den (Apples uppsättning genvägar för de nya Spotlight-kategorierna lägger urklipp på ⌘4 ) så kan du bläddra bland senaste kopieringar och klistra in en av dem igen. Apple beskriver historiken som kortlivad, den sträcker sig bara ungefär åtta timmar tillbaka .

Det gör Spotlight till ett hyfsat skyddsnät för «jag kopierade det där för en timme sedan». Det är däremot, utifrån hur det är tänkt, inget långtidsarkiv: inga veckogamla textsnuttar, inga fästa favoriter och inga ignoreringsregler per app av det slag som dedikerade verktyg erbjuder .

Striktare integritet kring läsning av urklippet

Apple har rört sig mot att göra programmatisk läsning av urklippet synlig för användaren. Grunden lades med nya API:er för pasteboardens åtkomstbeteende för utvecklare, och riktningen är en prompt i iOS-stil när en app läser urklippet utan att användaren har klistrat in. Hur strikt Tahoe tillämpar detta för vanliga appar från tredje part, och vilken inställning användaren ser, är detaljer jag skulle bekräfta på en Tahoe-dator innan du förlitar dig på dem . Det spelar roll för urklippshanterare, eftersom hela deras uppgift är att läsa urklippet i bakgrunden, så kolla varje apps dokumentation om behörigheter i Tahoe.

Synkas urklippet mellan min Mac och min iPhone?

Ja, via Universellt urklipp. Det är en del av Continuity: logga in med samma Apple-konto på båda enheterna, aktivera Handoff, ha Bluetooth och Wi-Fi på och håll enheterna nära varandra. Kopiera på den ena enheten och klistra in på den andra. Det överförda innehållet är tillgängligt bara under en kort stund, så det fungerar som en överlämning och inte som en synkad historik. Det gäller också bara ett objekt: varje ny kopiering ersätter den förra.

Om det slutar fungera beror det oftast på att Handoff är avstängt, att Bluetooth är avaktiverat eller att enheterna använder olika Apple-konton. Att stänga av och slå på Handoff igen är den klassiska första åtgärden.

Vad är privat och vad är det inte?

Urklippet kan läsas av alla appar som har tillåtelse att läsa det. Det finns ingen kryptering per kopiering. Därför har communityn skapat en konvention: appar som kopierar känsliga data markerar dem med särskilda pasteboard-typer, dokumenterade på nspasteboard.org, till exempel org.nspasteboard.ConcealedType (lösenord) och org.nspasteboard.TransientType (kortlivat innehåll). Lösenordshanterare sätter ofta dessa, och väluppfostrade urklippshanterare hoppar över allt som bär dem.

Maccy följer den här konventionen. Under Ignorera i inställningarna kan du se och redigera listan över ignorerade pasteboard-typer och helt ignorera specifika appar . Två förbehåll, ärligt uttryckta: markeringarna är en konvention och inget som tvingas fram, så en app som inte sätter dem lämnar sina data exponerade, och allt du kopierar är synligt för alla appar med läsbehörighet tills det skrivs över.

Inbyggt urklipp eller urklippshanterare?

Inbyggt urklipp (pasteboard) Spotlight-historik (Tahoe) Dedikerad hanterare (t.ex. Maccy)
Sparade objekt Ett Bara senaste objekten, ungefär timmar Konfigurerbar historik
Sökning Nej Via Spotlight Ja, skriv för att filtrera
Ignorera känsliga appar/typer Ej tillämpligt Ja
Lagras på disk Nej Lokalt på din Mac
Kostnad Ingår Ingår Maccy: gratis och öppen källkod

Om du bara ibland behöver hämta tillbaka en nyligen gjord kopiering kan Spotlights historik vara allt du behöver. Om du klistrar in från samma uppsättning textsnuttar varje dag, eller vill ha undantag för känsliga appar och en längre historik, förtjänar en dedikerad hanterare sin plats. Maccy App körs från menyraden, öppnas som standard med ⇧⌘C och är byggd kring tangentbordsstyrd filtrering . Oavsett vilken väg du väljer gäller allt ovan fortfarande, eftersom alla verktyg bygger på samma pasteboard.

Felsökning: när urklippet beter sig konstigt

  • Inklistringen gör ingenting eller klistrar in gammalt innehåll. Kopiera något trivialt från ett vanligt textfält för att nollställa tillståndet och försök igen. Om det kvarstår, starta om appen du klistrar in i.
  • Formateringen följer med överallt. Använd Klistra in och matcha stil (⌥⇧⌘V).
  • Kopierade en fil men fick sökvägen (eller tvärtom). Appen väljer en annan representation än den du väntade dig. Kolla vad som ligger på urklippet med osascript -e 'clipboard info'.
  • Universellt urklipp är opålitligt. Bekräfta samma Apple-konto, att Handoff är på och att Bluetooth och Wi-Fi är aktiverade.
  • Sista utvägen. Logga ut och in igen, eller starta om. Pasteboard-tjänsten hanteras av systemet och startar om med din session.

Den mentala modellen att ta med sig

Att kopiera publicerar ett knippe format och räknar upp en räknare. Att klistra in är att målappen väljer ur knippet. Allt annat, inklusive historik, synkning och integritet, bygger på den enkla grunden. När du väl kan se knippet med clipboard info slutar de flesta urklippsmysterier att vara mysterier.

Vilken inklistringsöverraskning irriterar dig mest: förlorad formatering, förlorad historik eller något annat? Berätta, så kan det bli nästa guide.



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