Desktop skeuomorfici e rendering: non è una battuta
Un desktop Wayland skeuomorfico come DEsk stressa la GPU come la UI piatta non fa mai. Ecco quanto costa davvero il ray tracing di una scrivania.

Ecco un'affermazione che irriterà entrambe le fazioni: lo skeuomorfismo non è morto perché agli utenti non piaceva. È morto perché costava caro, in pixel, in cicli GPU e in ore di lavoro dei designer, e il design piatto ha vinto per ragioni economiche, non estetiche. Un nuovo progetto che sta circolando, DEsk, un desktop Wayland skeuomorfico per Linux in cui le finestre sono fogli di carta su una scrivania di noce ray-traced, è il primo vero banco di prova di questa tesi da anni. E dimostra il punto in modo splendido: nel momento in cui decidi che l'intera stanza è illuminata da una sola lampada da scrivania, ti sei iscritto a un'architettura di rendering che ha più in comune con un game engine che con GNOME Shell.
Cosa deve effettivamente renderizzare un desktop skeuomorfico
Il design piatto è clemente con il renderer. Un compositor moderno come Mutter o KWin passa la maggior parte del tempo a fare compositing di texture: le applicazioni ti consegnano dei buffer, tu disegni dei quad, applichi qualche shader per gli angoli arrotondati e un'ombra portata, e basta. L'intero frame è sostanzialmente gratuito su qualsiasi GPU prodotta nell'ultimo decennio, ed è esattamente per questo che la UI piatta ha preso il sopravvento: non costa nulla e scala a qualsiasi risoluzione con una semplice trasformazione.
Lo skeuomorfismo rompe ogni parte di questo patto. Nel momento in cui il linguaggio di design dice «questa finestra è un foglio di carta crema con fibre, spessore e un angolo piegato», ti servono:
- Shading dei materiali — la carta non è un colore, è una risposta diffusa quasi sottosuperficiale con texture di fibre. È lavoro per pixel, non un rettangolo pieno.
- Illuminazione coerente — ogni oggetto della scena deve concordare su dove sia la luce. Una lampada da scrivania significa una shadow map (o una ray query) a cui tutto partecipa, compresi i contenuti live delle finestre.
- Ombre di contatto — una finestra «appoggiata sulla scrivania» ha bisogno di ambient occlusion dove la carta incontra il noce, altrimenti l'illusione crolla all'istante.
- Deformazione — DEsk ti permette di sollevare l'angolo della carta per sbirciare il retro del foglio, e di accartocciare le finestre in una palla quando le chiudi. È displacement dei vertici su una texture live, non un'animazione di scala.
Nessuna di queste cose è difficile di per sé. I game engine le fanno da decenni. Ma un compositor desktop ha vincoli che un gioco non ha: il contenuto di quei «fogli di carta» è output arbitrario di applicazioni che si aggiorna fino a 60 fps, e non puoi precalcolare nulla su di esso. Stai facendo shading di un feed video live come se fosse inchiostro su fibra.
Il compositor diventa un game engine
La documentazione architetturale di DEsk descrive la mossa in modo chiaro: la stanza (scrivania, scaffale, console, cassetta della posta) viene ray-traced sulla GPU tramite GLES 3, con un tracer CPU come fallback, e il risultato viene messo in cache per dimensione dello schermo. Quella singola frase contiene l'intera strategia ingegneristica, e vale la pena scomporla perché è l'unico modo sensato di farlo.
Il trucco è la separazione statico/dinamico. Fare ray tracing della stanza a ogni frame sarebbe assurdo: anche un path tracer modesto richiede secondi per frame su hardware di fascia media. Ma la stanza è statica. La scrivania non si muove; la lampada non si muove. Quindi la tracci una volta al login («il primo login disegna la stanza una volta: qualche secondo su una GPU, di più senza»), metti in cache la radianza, e da lì in poi la stanza è semplicemente uno sfondo texturizzato. Gli oggetti dinamici (finestre di carta, il cassetto, le lettere nella cassetta della posta) vengono renderizzati in forward sopra, illuminati in modo coerente con la scena in cache.
// Sketch of the two-layer architecture a skeuomorphic shell converges on
struct frame {
// Layer 1: the room. Traced once at login, cached per output size.
texture room_cache; // desk, shelf, post box, baked lamp light
// Layer 2: dynamic objects, forward-rendered each frame.
vector<object> paper_windows; // app buffers mapped onto paper quads
vector<object> drawer_items;
vector<object> notifications;
};
void render(frame *f) {
blit(f->room_cache); // one textured quad, nearly free
for (auto &o : f->paper_windows)
draw_paper(o); // fibre shader + fake AO + dog-ear
composite(f->drawer_items, f->notifications);
}
Non è un caso che questo sia esattamente il modo in cui funzionava Myst nel 1993: scene statiche pre-renderizzate con sprite dinamici composti sopra. Diversi osservatori hanno notato che DEsk trasmette «un forte feeling da Myst», e hanno più ragione di quanto sappiano. Non è solo una parentela estetica, è la stessa architettura di rendering, adottata perché gli stessi vincoli (illuminazione globale costosa, compositing economico) valgono ancora. Il nerd di storia che è in me adora questa cosa. Trent'anni di progressi GPU, e la risposta onesta a «come faccio a fare ray tracing del mio desktop» è ancora «non farlo: traccialo una volta e mentici sopra».
Il design multi-monitor mostra lo stesso pragmatismo. Invece di fare ray tracing di una stanza più grande per ogni schermo, i display extra mostrano «altre assi della scrivania, che continuano da essa»: lo sfondo statico si estende e la scena in cache si ammortizza tra le uscite. Uno schermo scollegato a sessione in corso ha semplicemente le sue finestre riassegnate a uno di quelli rimasti. Semplice, ma aggira il problema davvero difficile di ritracciare a ogni evento di hotplug.
Lo skeuomorfismo pesa sulla GPU in modi che la UI piatta non fa mai
Parliamo in modo concreto del costo, perché «è più pesante» fa un lavoro molto poco meritato nella maggior parte delle discussioni su questo stile. Confrontiamo cosa fa un compositor piatto per una finestra con ciò che richiede la metafora della carta di DEsk:
Piatto: si lega il wl_buffer del client come texture, si disegna un quad con uno shader che lo campiona, magari si arrotondano gli angoli con una signed-distance function, si applica un'ombra economica a 9 tap. Costo per finestra: una manciata di letture di texture per pixel, tutte da regioni favorevoli alla cache.
Carta: il buffer del client è solo l'«inchiostro». Ti serve anche uno strato base di carta (texture di fibre, scurimento dei bordi, bordo di spessore), un angolo piegato che è una geometria separata con la sua illuminazione, un'ombra di contatto sulla scrivania che dipende dalla posizione della finestra nella scena, e un'illuminazione che concordi con la lampada impressa nella cache della stanza. E quando l'utente trascina un bordo per «tirare fuori più carta», il quad della carta si ridimensiona indipendentemente dal contenuto: hai disaccoppiato la geometria della finestra dalla geometria della superficie, cosa che nessun compositor normale fa.

Ma il costo reale non è il throughput: le GPU moderne ridono di qualche texture layer in più. È la complessità della pipeline. Il budget di shader di un compositor piatto è uno o due programmi per l'intera sessione. Una shell skeuomorfica richiede un piccolo sistema di materiali: carta, noce, ottone, vetro (le lenti della lampada dell'orologio), tessuto. Ogni materiale è una variante di shader; ogni variante è qualcosa che può rompersi su qualche driver; ognuna interagisce con l'illuminazione condivisa della lampada, quindi non possono essere sviluppate in isolamento. È per questo che è morta la classica era dei temi di Enlightenment e GTK2, ed è il contrappeso più forte dei professionisti: il window manager è la parte facile. Ogni applicazione disegna ancora il proprio contenuto con GTK o Qt, e nessuna quantità di noce lato compositor farà sembrare un'app libadwaita appartenente a una scrivania fisica. DEsk lo risolve solo in parte: le finestre con decorazioni lato client «stanno su carta anche loro», il che significa che la metafora avvolge le app invece di trasformarle.
Wayland rende tutto più facile e più difficile allo stesso tempo
C'è un motivo per cui un progetto come questo esiste ora e non nel 2010. La scommessa architetturale centrale di Wayland (il compositor possiede l'intero frame, ogni pixel passa attraverso di lui) è esattamente la scommessa che una shell skeuomorfica deve fare. Con X11 un'app poteva disegnare dove voleva, e il massimo che potevi fare era un compositing manager che riassegnava disperatamente le finestre sperando nel meglio. Con Wayland la shell riceve buffer di superficie puliti e isolati e ha totale libertà su come presentarli. Se vuoi mappare una superficie su un foglio di carta deformabile con un angolo piegato, Wayland è il primo sistema di display in cui questo è semplicemente difficile invece che incoerente.
Ma Wayland alza anche il conto. Un ambiente desktop non è un renderer; è un renderer più vent'anni di accumulo di protocolli: Xwayland per le app legacy, il bridging IBus per i metodi di input (DEsk supporta la digitazione nell'indice della libreria e nel blocco appunti), PipeWire per la manopola del volume, logind per la luminosità e la gestione del coperchio, MPRIS per la pagina multimediale dell'orologio, PAM per la schermata di blocco. Ognuna di queste è una superficie di integrazione che un progetto come GNOME distribuisce su centinaia di contributori. DEsk traccia una linea netta («cosa crea e cosa prende in prestito») delegando rete, Bluetooth, stampa e il theming delle altre app a software libero esistente. Questa strategia di prestito è l'unico modo in cui un piccolo team può rilasciare un intero desktop, ma significa che l'illusione skeuomorfica si interrompe bruscamente ai bordi: le impostazioni Wi-Fi sono il pannello GTK piatto di qualcun altro.
Da notare per chi fosse tentato di provarlo: poiché la stanza è in cache per dimensione dello schermo e il layer dinamico è semplice forward rendering GLES 3, il costo a regime dovrebbe essere nella norma, paragonabile a qualsiasi compositor con effetti pesanti. I punti dolenti sono il trace al login su macchine senza GPU (il fallback CPU esiste, ed è lento) e la generale ruvidità di una beta v0.1: i recensori segnalano animazioni incoerenti sui controlli con stato, come il tasto di accensione del Pannello di controllo, che in una UI skeuomorfica non è un bug cosmetico. Quando l'animazione della rotazione della chiave va storta, non puoi capire se la macchina si spegnerà davvero. Lo skeuomorfismo alza la posta sulla correttezza delle animazioni, perché l'animazione è l'indicatore di stato. La grande virtù poco apprezzata del design piatto è che un interruttore a levetta ha esattamente due stati disegnabili e nessuno intermedio.
Perché abbiamo smesso di costruire così
La storia standard dice che lo skeuomorfismo era una stampella (metafore dall'aspetto reale per insegnare alla gente i touchscreen) e che una volta che gli utenti sono cresciuti abbiamo buttato via le cuciture di pelle. Questa storia è in gran parte sbagliata, e DEsk è utile proprio perché espone la vera economia. Lo skeuomorfismo è morto quando sono accadute due cose insieme: i display Retina hanno quadruplicato il numero di pixel che le texture dipinte a mano dovevano coprire, e il mobile ha fatto girare la UI su GPU vincolate che succhiano batteria. La UI vettoriale piatta scala gratis; una texture di metallo spazzolato a 1x, 2x e 3x no. Il redesign di iOS 7 di Apple non è stato un'evoluzione del gusto, è stato un budget di rendering tagliato drasticamente. Se hai letto di come i terminali accelerati via GPU sono passati dalle griglie di glifi TTY a pipeline di shader complete, hai visto lo stesso compromesso dall'altro lato: spendiamo la GPU liberamente dentro il contenuto di un'app, ma il chrome stesso è andato a dieta.
C'è anche un motivo più profondo che non ha nulla a che vedere con le GPU: la coerenza non si compone. Un designer può creare una metafora fisica splendida; mille sviluppatori terzi no. La metafora della libreria funziona per le app di DEsk. Nel momento in cui Firefox disegna la sua UI grigia piatta sulla carta, stai guardando uno screenshot attaccato con lo scotch a un oggetto di scena. Il thread di Hacker News ha centrato il punto da due angolazioni: un commentatore nostalgico dell'era dei temi di GTK2, un altro che notava che i toolkit moderni «sembrano progettati per resistere ai temi». Il desktop può essere una scrivania; le app non lo saranno mai. La metafora perde, e chiunque abbia costruito un ambiente a tema sa che la perdita è fatale per l'illusione. È lo stesso divario che rende gli anti-pattern UX così duri a morire: la superficie è facile da sistemare, l'ecosistema no.
Dove l'affermazione controcorrente crolla
Ho detto che lo skeuomorfismo ha perso per ragioni economiche, e ci credo. Ma l'onestà richiede le concessioni, e le asperità di DEsk le forniscono.
Primo, parte del costo non è affatto rendering: è ambiguità nell'interazione. Una metafora fisica prende in prestito le aspettative del mondo reale dell'utente, e la fisica non ha un annulla. Quando chiudere una finestra significa «accartocciarla in una palla e lanciarla», è divertente esattamente una volta e leggermente allarmante la quarantesima volta che chiudi, d'istinto, la finestra sbagliata. L'astrazione del chrome piatto è una funzione: una piccola × è una promessa, non una performance. Secondo, lo stato. Gli oggetti fisici devono sempre apparire per ciò che sono; un'animazione di rotazione della chiave bloccata non è una transizione a scatti, è una bugia su se la macchina si spegnerà. La UI skeuomorfica deve essere corretta nei punti in cui la UI piatta può permettersi di essere approssimativa, e la correttezza nelle animazioni costa in modo brutale in tempo di QA, come sa bene chiunque abbia rilasciato sistemi in cui la UI deve riflettere fedelmente uno stato distribuito.
La grande virtù poco apprezzata del design piatto è che un interruttore a levetta ha esattamente due stati disegnabili e nessuno intermedio. Una chiave d'ottone ne ha infiniti, e ciascuno di essi è una segnalazione di bug.
Terzo, accessibilità e scopribilità tagliano in entrambe le direzioni. Diversi commentatori hanno suggerito che una vera metafora di scrivania potrebbe aiutare davvero gli utenti anziani che non si sono mai fatti un modello mentale del file system: imparano a cliccare a memoria e non riescono a recuperare quando cambia, perché la UI piatta «non ha alcuna logica intrinseca per loro». Una scrivania ha una logica: le lettere vanno nella cassetta della posta, i documenti sono carta, le cose che conservi vanno nel cassetto. È un argomento reale, e liquidarlo come nostalgia è pigro. Ma la stessa fisicità che aiuta un utente nasconde funzionalità a un altro: come si scopre che Super+D apre il cassetto, o che una finestra piegata può finirci dentro? Le affordance fisiche funzionano quando gli oggetti sono a portata di mano; le scorciatoie da tastiera sono pura astrazione appresa in ogni caso.

A cosa serve davvero DEsk
Sarebbe un errore leggere DEsk come una proposta perché tutti lavoriamo ora su scrivanie ray-traced. Non succederà, e l'economia con cui ho aperto regge ancora: un vendor di piattaforma che distribuisce a un miliardo di dispositivi non può permettersi shader di materiali per pixel sul chrome, illuminazione della lampada messa a punto a mano e chiavi d'ottone con animazioni corrette. Il design piatto resta il default giusto per il software di sistema, nello stesso modo in cui il cemento è il default giusto per i ponti.
Ciò che DEsk dimostra davvero è qualcosa che il desktop Linux avrebbe avuto bisogno di vedere provato da un decennio: il layer del compositor è ora abbastanza espressivo da essere un medium. Wayland più una GPU moderna danno a un singolo sviluppatore determinato una tela a frame intero con abbastanza margine per renderizzare un mondo coerente, non solo disporre rettangoli. Il trucco dell'era Myst (cuocere la luce costosa, fare forward rendering del layer dinamico) chiude il divario di prestazioni che rendeva tutto ciò impossibile. Che il mondo costruito sia una nostalgica scrivania di noce, il ponte di comando della Nostromo sognato da un commentatore, o qualcosa che nessuno ha ancora immaginato, è questione di gusto. La capacità è la notizia.
C'è uno schema che continua a ripetersi nell'informatica: una tecnologia matura, il suo mainstream converge sull'estetica più economica e adeguata, e poi gli hobbisti riscoprono le estetiche costose come forma di artigianato. È successo con le tastiere meccaniche, con l'arte dithered a un bit, con gli shader CRT negli emulatori. I desktop skeuomorfici sono i prossimi in questa coda. Non sostituiranno nulla. Ci ricorderanno soltanto, come la singola lampada da scrivania di DEsk che illumina un'intera stanza ray-traced, che il rettangolo grigio piatto è sempre stato una decisione di budget, e i budget, a differenza dei gusti, si possono discutere.


