FAQ: Meccanismo dei tag di macOS (Finder) e spiegazione dell’implementazione di questa app
1. Che cosa sono i tag del Finder in macOS e dove vengono memorizzati?
I tag del Finder fanno parte dei metadati dei file; non vengono scritti direttamente nel contenuto del file, ma all’interno delle sue attributi estesi (xattr). La chiave principale utilizzata è:
com.apple.metadata:_kMDItemUserTags
Il contenuto corrisponde a un plist binario, che rappresenta essenzialmente un “array di tag”. Ogni elemento del tag include il nome del tag e un numero associato al colore, con valori compresi tra 0 e 7 (0: nessun colore, 1: grigio, 2: verde, 3: viola, 4: blu, 5: giallo, 6: rosso, 7: arancione).
Pertanto:
- “Applicare un tag a un file” significa, in sostanza, “scrivere i metadati del tag negli attributi estesi”;
- Questo processo è indipendente dal fatto che il file possa essere trovato tramite Spotlight.
2. Informazioni sugli attributi estesi precedenti: com.apple.FinderInfo
com.apple.FinderInfo è una funzionalità più vecchia presente in alcune versioni di macOS e del Finder:
- Meccanismo precedente: poteva rappresentare un solo colore e non includeva il nome del tag.
- Ancora utilizzato nei sistemi moderni: anche se oggi prevale l’uso di
_kMDItemUserTags, il Finder può comunque scrivere o aggiornare contemporaneamentecom.apple.FinderInfoper garantire la compatibilità con i sistemi più vecchi.
Più precisamente:
- Il Finder scriverà o aggiornerà le informazioni sul colore in
com.apple.FinderInfosolo se il nome del tag è presente nell’elenco dei tag personalizzati del Finder. - Quando sono presenti diversi colori associati ai tag, verrà registrato solo il colore relativo all’ultimo tag presente nell’elenco valido.
3. Problema delle lingue: perché lo stesso colore appare come “tag diversi” in sistemi con lingue diverse?
macOS salva i nomi dei tag sotto forma di stringhe localizzate:
- In un sistema in inglese viene salvato
Red. - In un sistema in cinese viene salvato
红色.
Per il sistema operativo si tratta quindi di due tag distinti. L’app utilizza le API di sistema per ottenere i nomi predefiniti dei colori, pertanto il risultato dipenderà dall’impostazione della lingua del sistema (in “Preferenze di Sistema → Generali → Lingua e regione / Lingua interfaccia”, se è selezionato “Automatico”, seguirà la lingua attuale del sistema). Se la lingua del sistema non coincide con quella dell’app, potrebbero verificarsi discrepanze nei nomi dei tag.
4. Perché nelle impostazioni dell’app è necessario mantenere la coerenza con la configurazione dei tag del Finder?
- A causa delle limitazioni di macOS, l’app generalmente non può leggere completamente l’elenco delle associazioni tra nomi dei tag e colori definito dall’utente nel Finder.
- Durante la lettura dei tag, le API di sistema restituiscono spesso solo il nome del tag, senza indicare direttamente il colore; se l’app non dispone di una mappatura corretta tra nome e colore, la visualizzazione potrebbe risultare errata.
- Al momento della scrittura dei tag, le API di sistema forniscono anch’esse soltanto il nome del tag, mentre il colore effettivo viene determinato dalla definizione del Finder per quel particolare nome.
5. Come vengono conservati i metadati dei tag in base alle diverse posizioni dei dischi o delle reti? (APFS / AppleDouble / NTFS ADS)
5.1 APFS (disco locale) — Salvataggio nativo degli xattr (il metodo più affidabile)
APFS supporta nativamente gli attributi estesi, pertanto i metadati dei tag vengono salvati direttamente negli xattr del file stesso.
5.2 Posizioni che non supportano o supportano parzialmente gli xattr — AppleDouble (._nomefileoriginale)
Quando il file system o il protocollo di destinazione non è in grado di conservare in modo affidabile gli xattr (come avviene spesso con FAT32, exFAT e unità di rete quali SMB/WebDAV/NFS), macOS archivia i metadati in file AppleDouble associati:
._nomefileoriginale(ad esempio,photo.jpgcorrisponderà a._photo.jpg).
Visibilità:
- Finder non li mostra mai, nemmeno se si abilita la visualizzazione dei file nascosti.
- Nel terminale, con il comando
ls -la, questi file sono visibili. - Su Windows, se si abilita la visualizzazione dei file nascosti, questi file
._saranno visibili, causando così la comparsa di numerosi piccoli file.
Importante: motivo comune della “perdita” dei tag:
- Se su Windows o con alcuni strumenti si spostano/copiando i file limitandosi a trasferire solo il file originale e lasciando i file
._nella posizione originale, i tag sembreranno “scomparsi” una volta arrivati alla nuova destinazione. - Tuttavia, se successivamente si spostano anche i file
._corrispondenti, i tag possono normalmente essere ripristinati.
5.3 Connettività SMB a NTFS: possibile utilizzo di ADS (Alternate Data Streams)
Quando si accede a un volume NTFS tramite SMB e se sono soddisfatte le condizioni del server e del protocollo, macOS potrebbe non generare file ._, bensì scrivere i metadati nei ADS (Alternate Data Streams) di NTFS:
- Gli ADS sono una caratteristica di NTFS: oltre ai dati principali, un file può contenere diversi flussi di dati aggiuntivi invisibili, utilizzati per archiviare metadati supplementari.
- Vantaggio: durante gli spostamenti o le copie all’interno di un volume NTFS, questi metadati vengono generalmente mantenuti insieme, risultando relativamente “puliti” anche per gli utenti Windows (poiché non vengono creati file
._).
Attenzione, però:
- Quando si sposta o si copia un file da NTFS a FAT32 o exFAT, poiché questi file system non supportano ADS o altri tipi di metadati, Windows potrebbe mostrare un messaggio simile:
“Si desidera copiare il file senza copiare le proprietà?” Questo indica che i metadati aggiuntivi verranno persi; di conseguenza, i tag potrebbero non essere conservati dopo il trasferimento.
6. Come visualizzare gli xattr dei tag di un file?
Il comando xattr da riga di comando non è pratico: non è in grado di gestire né di visualizzare attributi plist binari come com.apple.metadata:_kMDItemUserTags; è necessario utilizzare l’opzione -px per ottenere un output corretto in formato esadecimale.
Si consiglia l’utilizzo di strumenti di terze parti:
- xattred: permette di visualizzare e verificare in modo intuitivo xattr come
_kMDItemUserTagsecom.apple.FinderInfo.
7. Qual è la relazione tra Spotlight e i tag? I tag dipendono da Spotlight?
- I tag non dipendono da Spotlight: una volta applicati, i metadati dei tag vengono immediatamente scritti negli xattr del file, e il fatto che siano indicizzati o meno non influisce sulla loro presenza.
- Spotlight è semplicemente un motore di indicizzazione: si occupa di creare indici basati sui nomi dei tag e su altri metadati, al fine di consentire ricerche a livello di sistema.
- macOS generalmente mantiene automaticamente gli indici dopo operazioni come spostamenti o rinomine dei file; tuttavia, dischi esterni, unità di rete e cartelle incluse nella “Privacy ricerca” potrebbero non essere indicizzate da Spotlight.
8. Che cosa fa l’“indicizzazione avanzata” di questa app?
Quando Spotlight non è in grado di indicizzare determinati file (ad esempio, su dischi esterni, unità di rete o cartelle escluse dall’indicizzazione), l’app offre un’indicizzazione avanzata:
- Mentre sfogli la cartella nell’app, l’app registra le informazioni sui tag presenti in quella cartella.
- Quando scegli di visualizzare tutti i file contrassegnati da un determinato tag dall’albero delle cartelle, l’app integra i risultati di Spotlight con i file individuati grazie all’indicizzazione avanzata.
- È possibile fare clic con il tasto destro sulla cartella e selezionare “Scansiona e aggiorna” per aggiornare l’indicizzazione dei tag all’interno di quella cartella.