# Cartella virtuale

In informatica una cartella virtuale denota generalmente un principio di organizzazione per file che non dipende dalla dislocazione fisica degli stessi nelle cartelle. La cartella virtuale è in pratica uno script che unisce risultati da varie sorgenti dati, quali database o indici in altri formati e presenta gli stessi nello medesimo formato visuale del classico contenuto di una cartella.

## Tecnologia

Le cartelle virtuali forniscono un mezzo per rendere più semplice all'utente trovare file legati tra loro dai dati in essi contenuti o dai loro metadati. L'utente specifica un criterio di ricerca e tutti i file che soddisfano tale criterio sono automaticamente aggregati in una cartella virtuale. I file di una cartella virtuale possono essere dislocati in diverse partizioni di uno stesso disco, in dischi diversi (esterni o meno), unità di rete, etc.
I documenti non possono essere memorizzati all'interno di una cartella virtuale, poiché fisicamente una cartella virtuale non è altro che un file che memorizza una query di ricerca. A seconda dell'implementazione, il sistema operativo può reagire diversamente al tentativo di un utente di memorizzare un file in una cartella virtuale; tale reazioni sono classificabili in due tipologie:
* il sistema operativo memorizza il file in un'opportuna locazione fisica
* il sistema operativo non permette in alcun modo la memorizzazione fisica di un file attraverso una cartella virtuale
Molte implementanzioni costruiscono un indice di tutti i volumi del sistema al primo avvio del sottosistema di ricerca desktop; tutti i cambiamenti successivi vengono indicizzati di volta in volta, operando in background. La costruzione di un indice evita di ripercorrere ogni volta l'intera struttura del file system e si garantisce così una ricerca quasi istantanea; ciò migliora anche l'esperienza utente nei confronti del sistema.

## Implementazioni

Le cartelle virtuali si sono inizialmente diffuse grazie ai programmi di posta elettronica. Nel 2000, Helix Code (divenuta successivamente Ximian prima di essere acquisita da Novell) rilasciò una versione preliminare del suo client di posta Evolution che includeva le cartelle virtuali per permettere agli utenti di organizzare le e-mail. I client e-mail con questa caratteristica permettono di creare cartelle che automaticamente elencano tutti i messaggi di posta elettronica corrispondenti a delle regole definite dall'utente; ad esempio, tutti i messaggi che hanno come mittente un particolare indirizzo di posta elettronica o che includono nel corpo del messaggio una particolare parola chiave. Le cartelle virtuali sono state successivamente introdotte in altri programmi di posta elettronica, come Microsoft Outlook, Mozilla Thunderbird, Apple Mail. Il concetto si è poi pian piano diffuso in altre applicazioni, come iTunes, Amarok, Windows Media Player (riproduttori audio che implementano delle playlist virtuali), per poi diventare una caratteristica peculiare dei file manager nei sistemi operativi o funzionalità aggiunta di file system semantici.
Oggigiorno tutti i maggiori sistemi operativi mettono a disposizione le cartelle virtuali, da macOS a Windows Vista, passando per tutti i sistemi Unix-like capaci di adottare GNOME come desktop environment.

### Mac OS X

In Mac OS X Tiger la caratteristica di cartella virtuale viene indicata col nome di cartelle smart ed è implementata in modo tale da mostrare il risultato di una ricerca Spotlight. Una cartella smart in Mac OS X è un file XML che descrive i criteri di ricerca (la query) che viene usata da Spotlight quando un utente accede a una di queste cartelle; la relativa ricerca viene elaborata e i risultati popolano la cartella smart.
Molte applicazioni in Mac OS X utilizzano il motore di Spotlight per creare varianti delle cartelle smart che presentino aggregati di file gestiti dall'applicazione in base a dei specifici criteri predefiniti o definiti dall'utente; ne è un esempio iPhoto, con i suoi Album Smart.

### Microsoft Windows

Windows Vista presenta anch'esso la funzionalità di cartella virtuale, implementata anche in questo caso come un file XML che immagazzina la query che viene poi utilizzata dal sottosistema di ricerca integrato nel sistema operativo.
Nelle prime versioni di sviluppo del sistema operativo di casa Microsoft esistevano delle cartelle virtuali predefinite, come Musica, Immagini, Documenti e simili, usate come rimpiazzo delle corrispettive cartelle speciali già esistenti nelle precedenti versioni di Windows. Successivamente si è deciso di ritornare alle normali cartelle poiché quelle virtuali, allo stato attuale (anche negli altri sistemi), non permettono all'utente le stesse operazioni che egli esegue su una comune cartella: non è possibile, infatti, memorizzare file all'interno di esse, demandando al sistema l'effettiva dislocazione fisica dei file.

### GNOME

A partire dalla versione 2.14, in Nautilus di GNOME è stata integrata la ricerca desktop grazie alla quale è possibile creare anche cartelle virtuali, salvando i risultati della ricerca, così come avviene anche nei sistemi precedentemente descritti. Il funzionamento di una cartella virtuale in GNOME è il medesimo già descritto per Mac OS X e Windows Vista: l'utente vi accede e la cartella viene popolata con i risultati della ricerca. Anche in questo caso la cartella virtuale è un file XML che descrive la ricerca da effettuare.
La caratteristica peculiare in questo caso è che il sistema di ricerca desktop di Nautilus può utilizzare diversi motori di ricerca desktop come back-end, quali Beagle, Tracker.