Recensione: Alfred, il maggiordomo che ogni macOS dovrebbe avere

Leggi questo articolo grazie alle donazioni di Teresio Demaria, Massimiliano Zullo.
♥ Partecipa anche tu alle donazioni: sostieni SaggiaMente, sostieni le tue passioni!

Noi di SaggiaMente seguiamo Alfred fin dagli albori. Ne parlammo quando ancora era una beta e successivamente con l'arrivo della versione 1.0 del 2011. A distanza di sette anni, l'ho inserito nella mia selezione delle migliori app per macOS del 2018, a conferma del fatto che le buone premesse si sono poi trasformate in un ottimo e solido software. La considero un'utility essenziale, un supporto insostituibile nella mia attività quotidiana al pari di Hazel, a cui ho dedicato un approfondimento poco tempo fa. Tuttavia non troverete su questo sito una recensione di Alfred perché mi è sempre sembrata un'operazione impossibile.

Sembra un duplicato di Spotlight, ma non lo è

Appena si installa e si avvia l'app – che appoggia il suo cappello nella barra di stato – ci appare pressoché identica a Spotlight. Ciò potrebbe bastare a restituire un'errata prima impressione, ovvero quella di un duplicato rispetto a funzionalità native di macOS. In effetti è più o meno così finché non si aprono le preferenze e si iniziano a capire le sue reali potenzialità. Ma è qui che si pone il problema che mi ha portato a pensare che fosse impossibile recensirlo: Alfred può fare davvero di tutto e per analizzare ogni sua funzionalità nel profondo non basterebbe un libro. Non a caso il sito dello sviluppatore include sia un Blog che un ricco Forum, ma anche una sezione Help con guide e tutorial. E vi garantisco che nell'uso avanzato può capitare di non trovare comunque risposta ai quesiti più ostici.

Spotlight cerca per noi quel che desideriamo, è capace di eseguire calcoli e conversioni e supporta anche numerosi operatori logici e di filtro, alcuni dei quali li ho descritti nel lontano 2010. In alcuni di questi campi è superiore ad Alfred (ad esempio lo trovo più comodo per convertire misure e valute), ma quest'ultimo si estende ben più in là, in luoghi dove nessun Spotlight si è mai spinto prima. Si potrebbe dire che al suo interno si trovino pure le funzioni di macOS (sezione tastiera) o Automator, ma anche così ci si limiterebbe ad una piccola porzione del suo potenziale. Inizio dalla fine, dicendovi che Alfred è gratuito, almeno finché non si vogliano usare le sue funzioni più avanzate. Senza di queste – ovvero non acquistando il PowerPack – è comunque un'ottima utility, ma io vi parlerò della versione completa. Non fraintendetemi, il software è sempre uno solo, ma inserendo il codice del PowerPack si sbloccano tante funzioni in più, tra cui la più importante è senza dubbio Workflows.

Proviamo insieme a dare uno sguardo ai vari pannelli di preferenza, partendo da quello General in cui si definiscono le cose essenziali, come la shortcut per mostrare la sua finestrella (io uso alt+spazio). Subito dopo c'è Features, in cui ci si può perdere per ore vista la miriade di sotto aree. Si parte da quella base, la ricerca, dove si possono definire in modo granulare i percorsi ed i tipi di contenuti da indicizzare, e fin qui sembra davvero un duplicato Spotlight. Iniziamo ad intravedere il diverso approccio poco più in basso, nell'area File Search.

Qui io non cambio nulla, ma solo perché uso pochissimo Alfred per quello che già Spotlight sa fare bene. Comunque si può notare la logica basata su parole chiave, che consentono ad esempio di vedere direttamente all'interno di un file scrivendo "in" e poi il nome. Ma non è qui che mi voglio soffermare – vi avevo avvisato che c'era troppo roba da analizzare – quanto nella successiva area Web Search.

Ricerche web agli steroidi

Sempre basandosi sulle parole chiave, si possono automatizzare le ricerche che effettuiamo più spesso sul web, in modo da non dover digitare l'indirizzo del sito (o peggio ancora cercarlo su Google) e poi inserire il testo da cercare. Facciamo l'esempio di Amazon, che più o meno usano tutti: io posso scrivere "az nome prodotto" nella mascherina di Alfred e lui aprirà il browser portandomi direttamente ai risultati. Per i siti più noti le automazioni sono già presenti, si deve solo decidere di attivarle, ma se ne possono creare a piacimento. Di norma è sufficiente effettuare una ricerca tipo, ad esempio su ebay per cambiare piattaforma, e poi copiare l'URL risultante dalla barra degli indirizzi. A quel punto si deve inserire nel campo "Search URL" in fase di aggiunta di una nuova web search, sostituendo al testo di ricerca la parola chiave {query}

Com'è fatta una Web Search

Vi avviso: se questa cosa vi sembra già complicata, allora non siete "tipi da Alfred". Questo software può fare un trilione di cose al posto vostro ma va istruito, per cui si deve avere un po' di dimestichezza di base. Se poi si conosce anche un po' di programmazione è meglio, perché servirà per sfruttare la sezione più importante (mi riferisco ancora a Workflows). Data la premessa, non mi dilungo nell'illustrare gli altri campi da popolare per la creazione di una web search, poiché si tratta di scegliere un titolo, la parola chiave da utilizzare e personalizzare l'icona. In genere non serve modificare il tipo di codifica, lasciando UTF8 e sostituendo gli spazi con +, ma se fosse necessario si può fare anche questo. Facendo delle finte ricerche potrete provare come il sito di destinazione tratta i caratteri e scegliere le giuste opzioni, in fondo vi è anche un campo con un tasto "Test" che consente di simulare subito una ricerca per vedere se è tutto in ordine. Ci si perdono 5 minuti ad aggiungere un sito nell'elenco, ma se lo si utilizza spesso ci si rende facilmente conto di quanto la procedura diverrà più comoda grazie ad Alfred.

Altra cosa che mi piace molto è Web Bookmarks, ovvero la possibilità di includere nei risultati anche i preferiti, di Safari o Google Chrome. Si possono integrare nella ricerca generica oppure dedicargli una parola chiave per trovarli prima ed evitare di mischiarli. Infine è possibile scegliere se aprirli nel browser predefinito oppure in quello da cui deriva il bookmark. Comodissimo.

Salto un po' di sezioni, lasciandovi il divertimento di scoprire cosa si può fare in Calculator, Dictionary e Contacts, anche se non serve un intuito da Sherlock Holmes per capirlo. Mi soffermo invece su Clipboard, dove si trova una delle funzioni che uso con maggior frequenza.

Altro che appunti, questa è un'enciclopedia

Si tratta in sostanza di uno storico degli appunti, che ci consente di recuperare con una combinazione di tasti (io uso ctrl+alt+command+C, ma non ricordo se è quella predefinita) la lista delle copie precedenti. Occupa sicuramente un po' di memoria ma cambia completamente l'uso del computer nelle attività complesse: se servono dei dati si possono copiare anche in sequenza, con la consapevolezza di poterli incollare più tardi (anche il giorno dopo) senza che gli appunti vengano sovrascritti.

Scrivi poco, produci molto

In Snippet, invece, si trovano delle liste di sostituzione, simili a quelle presenti in macOS / Preferenze di Sistema / Tastiera / Testo. Io le uso entrambe, perché quelle di macOS hanno il vantaggio di sincronizzarsi con iOS, quando funziona, ma su Alfred si possono inserire anche interi blocchi di testo, volendo pure con variabili. Ad esempio ho uno snippet che scrivendo ;lcase mi restituisce il contenuto degli appunti tutto in minuscolo, oppure ;ucase per convertirlo in maiuscolo. Chiaramente la cosa si può usare anche per strutture precompilate di email o documenti, ma viene utilizzato testo non formattato, per questo per cose più complesse uso TextExpander (recensione).

Saltiamo ancora qualche sezione, nello specifico iTunes Mini Player e 1Password, entrambi attivabili per dialogare direttamente con le omonime app. Non è che non le usi o non siano interessanti, ma il tempo stringe e c'è ancora tanto di cui discutere, per cui sorvolo su quelle che potremmo definire ovvietà. In parte forse lo è anche l'area System, tuttavia vi vorrei almeno mostrare l'interfaccia delle preferenze così da capire quante funzionalità offre di base Alfred (molte altre si possono creare con i Workflows).

Parliamo al sistema

L'utilità di questi comandi credo dipenda molto dalla praticità con cui ognuno utilizza la tastiera. Ovviamente le parole chiave associate alle varie azioni si possono cambiare ma la maggior parte di queste si ottengono già nativamente su macOS con scorciatoie ben più veloci. Ad esempio per svuotare il cestino faccio decisamente prima con ⇧⌘⌫ che a scrivere "emptytrash" su Alfred (che va pure attivato prima). Stessa cosa vale per le funzioni che di solito abbiamo sulla tastiera (gestione volume su tutte) e quelle che possiamo associare agli angoli attivi (ad esempio lo screensaver o il blocco). Tuttavia non bisogna bollare subito questa sezione come inutile, perché ci sono diversi comandi che rendono più comode delle operazioni altrimenti noiose. Penso ad esempio al fatto che scrivendo quit la prima voce che Alfred ci propone (e che possiamo attivare con invio) agisce su tutte le app aperte. Oppure anche ad eject, che ci può elencare tutti i volumi del computer per espellerli o ancora di più a ejectall (personalizzabile con una whitelist) con cui si possono scollegare tutti insieme (per uno solo ⌘E mi pare più rapido). Da notare che tutte le keyword sono in inglese ma si possono convertire in italiano, abbreviare o disattivare.

Andiamo veloce anche su Large Type, dove si può personalizzare lo stile di visualizzazione ingrandita di un testo selezionato, e passiamo a Terminal. Qui c'è poco o nulla da personalizzare, giusto il carattere con cui si attivano i comandi e l'app di riferimento, ma in sostanza possiamo aprire Alfred e scrivere > e a seguire un comando della shell. Premendo invio questo verrà eseguito sul Terminale che ci mostrerà il risultato. Non mi ricordo sempre di utilizzarlo perché ho già l'app quasi sempre attiva, ma può essere comodo.

Lasciamoci i Workflows alla fine, per cui andiamo in Appearance, dove si può banalmente scegliere l'aspetto della finestra di Alfred. In passato le opzioni erano poco intriganti, infatti avevo creato un mio stile personalizzando colori, font, spaziature, ecc.. ma da quando hanno aggiunto il tema Alfred macOS Dark uso sempre quello.

Protip: non tutti sanno che la finestrella di Spotlight, così come quella di Alfred, si può spostare dove si preferisce e il sistema se ne ricorderà in futuro. Io uso questo trucchetto per non confondere le due app in questione, che possono presentarsi in modo piuttosto simile, avendo posizionato Spotlight al di sotto del centro orizzontale dello schermo e Alfred al di sopra.

Advanced è una sezione in cui non entro praticamente mai, a parte che per impostare il percorso di salvataggio delle preferenze. È posizionato da sempre nel mio Dropbox e quindi ci accedo da ogni postazione senza dover cambiare mai una virgola. Inoltre le preferenze sono state sempre compatibili con i major update dell'app e quindi continuo ad usare le stesse dall'alba dei tempi (...di Alfred).

Ok, ora mi sembra che davvero non si riesca ad arrivare a Workflows quindi mettiamo avanti veloce pure per Remote (che consente di avviare task di Alfred dall'app companion per iOS) e Usage, in cui si trovano dati statistici sull'utilizzo (pochi, purtroppo).

La potenza è nei Workflow

Quello che vedete qui sopra è il Workflow che ho creato per la generazione dei link del SaggioSupporto, che chiunque può scaricare dal nostro sito dedicato. È uno dei più complessi che ho fatto finora a livello di logica, perché ho provato a tener conto di diversi scenari di utilizzo, ma come codice ne ho di più complicati ad uso interno. Iniziamo da questo: cos'è un Workflow su Alfred? Si tratta di un'automazione che si scatena con un innesco (trigger) e che può compiere operazioni quasi illimitate appoggiandosi ai suoi strumenti interni "semplificati" come a script creati dall'utente con una miriade di linguaggi, tra cui Shell, Apple Script, PHP, Javascript e Python. Questi sono quelli che io conosco ed utilizzo, ma ci sono anche Ruby, Perl, AS e forse ne dimentico qualcuno. A questo punto dovrebbe essere chiaro perché è impossibile analizzare nel dettaglio tutte le possibilità offerte dai Workflow: il limite è solo la dedizione, perché anche non conoscendo perfettamente questi linguaggi si possono trovare su internet i comandi che ci interessano ed utilizzarli. Ad esempio io non avevo mai usato Apple Script più di tanto, ma l'ho integrato in molte mie automazioni poiché su alcune cose è decisamente il più immediato su macOS. Per darvi un'idea concreta di utilizzo ho pensato di creare insieme un Workflow, iniziando dalla finestra di aggiunta (che sia attiva con il pulsante + in basso a sinistra).

Qui si definisce il nome, si assegna una descrizione ed una categoria, mentre in basso si può scegliere un id per il bundle (io inizio sempre con com.saggiamente.), il creatore e un sito web. Infine si può aggiungere un'icona personalizzata. In questo caso ho scelto quella di macOS per le preferenze Monitor, poiché andremo a creare un workflow che libera completamente la scrivania da ogni elemento. Dopo aver salvato, premiamo col tasto destro nello spazio libero ed aggiungiamo un trigger. In questo caso trovo indicata una combinazione di tasti, che agisce direttamente senza aprire la finestra di Alfred, quindi scegliamo Trigger / Hotkey. Bisogna chiaramente evitare sovrapposizioni con le shortcut di sistema e delle app, per cui io tendo ad usare tanti tasti modificatori insieme. Nello specifico ho scelto ⌥⇧⌘F, che riesco ad eseguire facilmente con la sola mano sinistra. A voi la libertà di modificarla. Non definiamo limitazioni in base all'app attiva nella sezione "Related Apps" in quanto è più comodo richiamare il workflow senza doversene preoccupare.

Ogni elemento che si aggiunge costituisce un tassello e andrà collegato in sequenza con i successivi. Il trigger è il primo della lista, da qui parte tutto, per questo è chiuso alla sua sinistra ed ha solo un punto di connessione sulla destra, che a breve vedremo come usare. Prima di tutto, però, cerchiamo di capire come portare a casa l'obiettivo di liberare la scrivania. Andremo sostanzialmente ad utilizzare tre comandi del terminale, che modificano altrettante chiavi di preferenza nei .plist di configurazione di macOS.

Nota bene: Questi comandi possono subire variazioni con gli aggiornamenti del sistema operativo.

Nascondere automaticamente la Barra dei menu

defaults write NSGlobalDomain _HIHideMenuBar -bool true

Nascondere automaticamente il Dock

defaults write com.apple.Dock autohide -bool true

Nascondere tutte le icone sul desktop

defaults write com.apple.finder CreateDesktop -bool false

Dopo ognuno di questi comandi aggiungiamo anche quelli che chiudono (e riaprono) i servizi di sistema correlati, altrimenti non si vedrebbero le modifiche fino al logout o al riavvio. Il codice complessivo sarà il seguente:

#autohide menubar
defaults write NSGlobalDomain _HIHideMenuBar -bool true
killall -KILL SystemUIServer
#autohide dock
defaults write com.apple.Dock autohide -bool true
killall -KILL Dock
#hide desktop icons
defaults write com.apple.finder CreateDesktop -bool false
killall -KILL Finder

Con il tasto destro sull'area vuota del workflow scegliamo Action / Run Script ed incolliamo il codice all'interno della finestra, cancellando le righe predefinite e accertandoci che sia selezionato il linguaggio bash in alto a sinistra. Per una logica più ferrea preferisco riordinare i comandi in due gruppi, quelli che modificano le preferenze e quelli destinati al reload dell'interfaccia.

Avvertenza: il comando che nasconde automaticamente la menu bar è l'unico che si comporta diversamente rispetto all'omologo presente nelle preferenze di sistema, in quanto eseguendolo da Terminale si applicherà solo alle app aperte da quel momento in poi, nelle altre rimarrà visibile. Non sono riuscito a trovare una soluzione dalla shell bash, se qualcuno sapesse come aggirare l'ostacolo me lo faccia sapere nei commenti così possiamo integrare l'articolo. Allo stato attuale suggerisco di eseguire il workflow con il numero minore possibile di app già aperte.

Una volta salvata questa seconda tessera del puzzle, andiamo a collegarla al trigger cliccando sul nodo alla sua destra e trascinandolo alla sinistra dello script. Ecco come dovrebbe apparire:

A questo punto il workflow FreeDesk è già funzionante, basta usare l'innesco per vederlo all'opera, che nel mio caso è ⌥⇧⌘F (ma vi ricordo che potete modificarlo e che la menubar sparirà solo nelle app aperte da quel momento in poi). Per riportare tutto alla normalità basta semplicemente invertire il valore booleano dei singoli comandi e verrebbe spontaneo creare un secondo trigger, strutturalmente identico a questo, modificando lo script di conseguenza. In realtà andremo a fare qualcosa di un po' più sofisticato, così da fornirvi un'accenno delle potenzialità reali di Alfred.

Creiamo un nuovo script, con il quale leggere l'impostazione attuale di una delle tre configurazioni, preferibilmente quella che non ha una controparte disponibile tramite UI, in modo da assicurarci che non derivi da una preferenza specifica dell'utente. Mi riferisco cioè al rendering delle icone sulla scrivania, che possiamo controllare in questo modo:

defaults read com.apple.finder CreateDesktop

Cancelliamo il legame tra il trigger ed il precedente script (basta cliccare sulla linea e premere ⌫) e ne creiamo uno nuovo che punta alla verifica del valore di configurazione appena creata. Questo avrà un output, che corrisponde esattamente al valore in questione e che potete vedere facilmente eseguendolo dal terminale. In sostanza darà 0 in caso di false oppure 1 per true. Introduciamo qui brevemente lo strumento di debug, cliccando sull'icona a forma di "insetto" in alto a destra e poi creando un elemento Utilities / Debug da mettere in sequenza subito dopo lo script. Nella finestra che si aprirà durante la creazione, cancellate ", {allvars}" lasciando solo '{query}'.

Arrivati a questo punto, rieseguendo il workflow la finestra di debug mostrerà l'output racchiuso tra due apici singoli e noterete che oltre al valore booleano espresso come intero (0 o 1) ci sarà un ritorno a capo prima della chiusura dell'apice. Non ho trovato molta documentazione in merito, forse esiste un metodo per evitarlo nativamente, ma lo faremo in modo manuale così da presentarvi una ulteriore funzione. Nello specifico si tratta di Utilities / Replace, che andremo a configurare in modalità regex e scrivendo nel campo di ricerca [\r\n], lasciando vuota la sostituzione nel campo with. In sostanza il comando andrà ad eliminare il ritorno a capo e per questo motivo lo posizioneremo tra lo script e il debug, in questo modo:

Come si può notare dalla finestra in basso, ora l'output è "pulito" e sarà più semplice creare un filtro condizionale. Creiamo un nuovo nodo di tipo Utilities / Filter, facciamogli analizzare il valore di {query} e scegliamo "is equal to" 1. In questo caso sapremo che le icone sulla scrivania saranno visibili, che è la condizione di default del sistema, quindi gli andiamo a connettere in sequenza lo script che nasconde tutto e che abbiamo già creato all'inizio. Selezioniamo quest'ultimo ed eseguiamo ⌘C per copiarlo, poi subito dopo ⌘V per incollarne una copia identica. Lo apriamo con un doppio clic e invertiamo i valori booleani (ovvero sostituiamo true con false e viceversa). Per fare un po' d'ordine si possono usare diversi colori sui vari nodi ed assegnare una descrizione (Edit Note...), il tutto cliccando con il tasto destro su ognuno di questi:

Creiamo ora un secondo filtro, basato sulla condizione {query} is equal to 0. Questa ci restituirà true nel caso in cui le icone sulla scrivania siano già nascoste, quindi andremo a collegare il filtro alla destra dello script di verifica e dopo di questo ci metteremo il blocco di codice in cui riportiamo il tutto alla condizione di default (quindi con visibilità degli elementi). Dopo aver aggiunto un po' di colore e qualche descrizione, andiamo pure a creare due azioni di tipo Output / Post Notification, in modo che il workflow ci notifichi quando mostra o nasconde gli elementi della scrivania.

Ho creato questo workflow insieme a voi per questo articolo, per cui non escludo che sia esente da bug. In particolare noto che le due operazioni non vanno eseguite troppo velocemente in sequenza, poiché il sistema non fa in tempo a riattivare Finder, Dock e SystemUI. Di norma, però, non sarà un problema nell'uso reale dell'automazione, poiché passeranno presumibilmente diversi secondi (se non minuti) prima di passare da uno stato all'altro. Ecco dunque il risultato delle nostre fatiche:

Conclusione

Voto 5/5Come anticipato, recensire Alfred è una missione impossibile tante sono le sue funzioni e potenzialità. Al di fuori delle opzione native senza PowerPack, ho deciso di concentrarmi sui workflow, la vera marcia in più di quest'app. Io credo che Apple stia lavorando ad una versione di "Comandi" per macOS, un qualcosa che nelle prossime versioni del sistema operativo possa rimpiazzare il vetusto Automator aggiornandone le funzionalità. Forse, e dico forse, uno strumento di questo tipo potrebbe fornire un'ampio ventaglio di possibilità all'utente base, ma è davvero difficile che raggiunga le potenzialità di Alfred dato il suo essere completamente aperto e trasversale rispetto il sistema ed i linguaggi di scripting supportati. Io non uso moltissimi workflow ma quelli che ho incrementano la mia produttività in modo incredibile e la maggior parte li ho creati in prima persona, cuciti sulle mie esigenze. Tuttavia esiste una ricca libreria di ricette già pronte che si possono importare in Alfred, come ad esempio quella che elenca i processi in uso del sistema e ci consente di killarli direttamente dalla finestrella dell'app, senza aprire il terminale. Per gli usi più complessi può capitare di non trovare documentazione online, ma quello che c'è è già sufficiente per un uso abbastanza avanzato. Alcune chicche (e limiti) si scoprono solo provando e lavorandoci per qualche tempo. Non mi sento tuttavia di considerarlo un aspetto negativo e per questo assegno ad Alfred le 5 stelle di SaggiaMente, ribadendo la mia valutazione di software essenziale per la produttività con macOS.

PRO
+ Tantissime funzionalità già nella versione base
+ Sincronizzazione delle preferenze tra più postazioni su base cloud
+ Semplice da utilizzare per le opzioni principali della schermata Features
+ Potenzialità "senza limiti" nella sezione Workflows

CONTRO
Nulla di rilevante, a parte forse una curva di apprendimento lenta

DA CONSIDERARE
| Per ottenere il massimo da Alfred occorre avere dimestichezza con la programmazione

Maurizio Natali

Titolare e caporedattore di SaggiaMente, è "in rete" da quando ancora non c'era, con un BBS nell'era dei dinosauri informatici. Nel 2009 ha creato questo sito nel tempo libero, ma ora richiede più tempo di quanto ne abbia da offrire. Profondo sostenitore delle giornate di 36 ore, influencer di sé stesso e guru nella pausa pranzo, da anni si abbronza solo con la luce del monitor. Fotografo e videografo per lavoro e passione, seguimi su Instagram