Deprecated: Creation of dynamic property Timber\Site::$pingback is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Site.php on line 180

Deprecated: Creation of dynamic property Timber\User::$name is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/User.php on line 118

Deprecated: Creation of dynamic property Timber\Post::$has_disclaimer is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_lock is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_last is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$tipologia is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_tipologia is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$attributi is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_attributi is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$in_evidenza_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_in_evidenza_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$inviato_in_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_inviato_in_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$fonte is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_fonte is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$fonte_url is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_fonte_url is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$os_meta is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_category is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_blz_affiliation_attributes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_content_type is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_attributes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_speciali is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_focuskw is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_metadesc is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_linkdex is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_content_score is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_focuskeywords is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_keywordsynonyms is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_estimated-reading-time-minutes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_f7c3bbddc8f2b0ce6d1cddcac6507b14 is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_thumbnail_id is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$os_previous_publish_date is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$os_notification_id is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_indexnow_last_ping is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_2201eade823c6fd9727509fc74f48051 is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_time_2201eade823c6fd9727509fc74f48051 is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_41c2c2bea133a01ae00c738382763053 is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_oembed_time_41c2c2bea133a01ae00c738382763053 is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_date_gmt is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$ping_status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_password is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_name is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$to_ping is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$pinged is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified_gmt is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_content_filtered is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$guid is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$menu_order is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_mime_type is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_count is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$filter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71
Windows 11, funzione stile macOS per mostrare il desktop al volo

Windows 11, funzione stile macOS per mostrare il desktop al volo

PeekDesktop replica su Windows 11 il click sul desktop tipico di macOS: minimizza e ripristina le finestre con precisione, usando API leggere e hook globali.

Chi lavora trascorre molte ore al giorno dinanzi a un PC sa bene quanto sia importante, in molte occasioni, poter passare rapidamente al desktop senza interrompere il flusso di lavoro. In Windows si può usare la combinazione di tasti Windows+D per passare rapidamente al desktop: premendo di nuovo la stessa scorciatoia, si possono ripristinare le finestre aperte, nella stessa posizione in cui si trovavano in precedenza. In alternativa c’è Windows+M che riduce a icona tutte le finestre aperte.

Sul versante macOS, già ai tempi di Exposé e oggi con macOS Sonoma, Apple ha raffinato un gesto semplice ma efficace: basta cliccare sullo sfondo per nascondere tutto. Su Windows, invece, la storia è diversa. Esistono scorciatoie e pulsanti, ma nessuna interazione realmente equivalente.

Per replicare su Windows il comportamento ben noto agli utenti dei sistemi macOS, il leggendario sviluppatore Microsoft Scott Hanselman ha voluto sviluppatore una nuova applicazione “ad hoc”, battezzata PeekDesktop.

PeekDesktop: un’idea semplice che Windows non ha mai adottato davvero

Un’applicazione come PeekDesktop non aggiunge nuove finestre, non introduce interfacce complesse e non richiede configurazioni elaborate. Fa una sola cosa, ma la fa bene: cliccando su uno spazio vuoto del desktop, tutte le finestre aperte vengono temporaneamente minimizzate; un secondo clic, oppure il ritorno a un’applicazione, ripristina esattamente lo stato precedente. In pratica, una replica fedele del comportamento già familiare a chi arriva da macOS.

Il comportamento è davvero intelligente e “strizza l’occhio” proprio a chi proviene da macOS ed è abituato a un comportamento ormai abitudinale.

Microsoft non ha mai introdotto questo tipo interazione in modo nativo, probabilmente per evitare conflitti con altri comportamenti dell’interfaccia o per mantenere coerenza con il modello storico di Windows.

A livello di interfaccia, spostandosi all’estrema destra della barra delle applicazioni, oltre l’orologio quindi facendo clic si ottiene un comportamento identico alla combinazione di tasti Windows+D. A parte questo, tuttavia, Microsoft non ha introdotto ulteriori modifiche a livello di interfaccia.

Architettura tecnica: hook globali e gestione dello stato delle finestre

Sotto la superficie, PeekDesktop si appoggia a un insieme di API (Application Programming Interfaces) Windows ben note ma usate con grande attenzione.

Hanselman ha previsto un hook globale di basso livello, SetWindowsHookEx con flag WH_MOUSE_LL, che consente di intercettare i clic del mouse senza interferire con il normale funzionamento delle applicazioni.

Una volta rilevato il clic, il tool utilizza WindowFromPoint per determinare quale elemento si trova sotto il puntatore. Non basta però distinguere tra finestra e desktop: serve evitare falsi positivi, ad esempio quando l’utente clicca su un’icona. Per questo entra in gioco AccessibleObjectFromPoint, che sfrutta il layer di accessibilità per verificare con maggiore precisione la natura dell’oggetto selezionato.

La gestione delle finestre rappresenta la parte più delicata. PeekDesktop scorre tutte le finestre attive tramite EnumWindows e ne salva posizione, dimensioni e stato attraverso la struttura WINDOWPLACEMENT. Ciò consente di ricostruire in modo fedele la disposizione originale, anche in configurazioni multi-monitor o con finestre massimizzate.

Il risultato è sorprendente: nessun bisogno di privilegi amministrativi, consumo di memoria inferiore ai 2 MB in idle e un impatto praticamente nullo sulla CPU.

Esperienza d’uso: immediata ma non priva di limiti

L’uso quotidiano evidenzia subito i vantaggi. Il desktop diventa uno spazio realmente operativo e accessibile con maggiore facilità e naturalezza.

Emergono però alcune imperfezioni. Il cestino, ad esempio, crea un’interazione poco fluida: il clic destro tende a ripristinare le finestre prima di mostrare il menu contestuale.

Anche il Task Manager si comporta in modo anomalo, rifiutando di minimizzarsi insieme alle altre applicazioni. Non è chiaro se si tratti di una scelta progettuale o di una limitazione tecnica legata alla priorità del processo.

Un altro punto critico riguarda il menu contestuale del desktop. In alcune situazioni, operazioni semplici come la creazione di una nuova cartella causano il ripristino involontario delle finestre. In pratica, l’interazione tra eventi di sistema e hook globali non è sempre perfettamente prevedibile.

Compatibilità e distribuzione: un’utilità leggera e promettente

PeekDesktop è distribuito come eseguibile standalone, utilizzabile senza necessità di installazione. Basta scaricare l’archivio ZIP, estrarlo ed eseguire il file. Interessante il supporto nativo per le architetture ARM: un dettaglio non scontato che dimostra attenzione verso il futuro hardware di Windows.

L’utilità sviluppata da Hanselman può avviarsi automaticamente all’accensione del sistema, ma è richiesta un’attivazione manuale dell’apposita opzione.

Nel corso dello sviluppo, le dimensioni del pacchetto sono state ridotte in modo significativo: da oltre 6 MB a circa 1,16 MB nelle versioni più recenti, segno di un lavoro di ottimizzazione continuo.

L’aspetto più interessante non è tanto il tool in sé, quanto ciò che rappresenta. PeekDesktop dimostra che piccole migliorie mirate possono incidere in modo reale sull’esperienza d’uso. Non serve rivoluzionare l’interfaccia: basta intervenire su gesti quotidiani, riducendo attrito e frizione operativa.

Ti consigliamo anche

Link copiato negli appunti