Creare comandi rapidi che funzionano sia su iOS che macOS
Come ho detto su A2, il podcast che condotto assieme all’amico Roberto Marin, sul mio MacBook Pro di casa sono passato quasi subito a macOS Monterey. Uno dei motivi principali che mi ha spinto a passare al nuovo sistema operativo di Apple è la presenza di Comandi Rapidi ora anche su macOS.
Pian piano (Comandi Rapidi su macOS Monterey non è partito benissimo) l’applicazione è risultata più stabile e, visto che sto automatizzando molto su iOS e volevo avere la stessa esperienza e lo stesso flusso di lavoro anche su macOS, ho iniziato a sperimentare con dei comandi rapidi multi piattaforma.
Questo è ancora un percorso sperimentale e il passaggio non è ancora indolore e richiede degli arzigogoli, qua e là, ma ho fatto questi esperimenti più che altro a fini “scientifici” per vedere lo stato attuale delle due piattaforme e quanto e con che fatica è possibile farle convergere in un utilizzo quotidiano.
Questa articolo non entrerà troppo in dettaglio ma punta a dare un primo sguardo sull’inter-compatibilità dei comandi rapidi tra piattaforme (macOS e iOS) mostrandovi alcuni dei miei primi esperimenti.
1. Perché avere un comando rapido “multi piattaforma”?
La prima domanda che ci si deve fare è: perché farlo?
Personalmente ho trovato questi come aspetti positivi:
- Avere uno stesso comando per tutte e due le piattaforme permette uniformità di utilizzo (che è poi uno degli scopi principale di automatizzare una o più attività);
- Ne ho parlato in un recente articolo, automatizzare per me significa ridurre l’attrito di fare una cosa, potersi muovere in modo indifferente ma uguale (o quasi uguale) su macOS ed iOS è un vantaggio perché non richiede lo sforzo di pensare a come fare una cosa su una piattaforma e come farla nell’altra, non c’è la necessità di cambiare disposizione mentale e quindi svolgere quella attività diventa meno impegnativo a livello cognitivo ovvero effortless;
- Non credo valga per tutti ma per me ha l’ulteriore vantaggio di permettermi di testare e paragonare le due piattaforme (macOS ed iOS) ottimizzando i miei flussi di lavoro su tutte e due le piattaforme e comprendere meglio cosa posso fare su una o sull’altra;
Ovviamente ci sono anche degli aspetti negativi:
- Il primo, sicuramente, è che si aumenta la complessità dello specifico comando rapido, come vedremo meglio oltre, non sempre è possibile ottenere lo stesso risultato su tutte e due le piattaforme e, spesso, occorre creare due differenti soluzioni; ne consegue che l’unico comando rapido diventa più complesso, sia da creare che da “leggere” (ovvero comprendere dopo che si è “scritto”);
- Secondariamente, proprio perché non è possibile fare tutto in modo identico sulle due piattaforme di Apple, creare un flusso di lavoro identico richiede di “inventarsi” due approcci, a volte, totalmente differenti per risolvere il medesimo problema e lavorare doppio, come meglio si vedrà nel comando rapido che ho creato per segnare le spese della famiglia; questo personalmente non lo trovo necessariamente un dato negativo ma, per chi vuole andare via veloce, può esserlo.
2. Creazione journaling su Obsidian
Vediamo quindi brevemente la prima delle due automazioni multi-piattaforma che ho creato.
Per i miei primi esperimenti ho cercato di utilizzare automazioni relativamente semplici che non mi complicassero troppo la vita.
Nel caso specifico, visto che sto cercando di implementare nel mio flusso di lavoro Obsidian (più avanti probabilmente ci saranno articoli sull’argomento o una puntata di A2), vediamo come ho automatizzato la creazione di un documento in Markdown all’interno di Obsidian.
Obsidian, per chi non lo sapesse, è un programma di gestione delle note / conoscenza in file Markdown. La “bellezza” di questo programma che, pur non essendo open-source, è gratuito per l’utilizzo non-commerciale, inoltre le note o i documenti creati nel programma sono salvati direttamente in una cartella del computer. Non c’è quindi un sistema di lock-in e il “database” dei documenti è utilizzabile con qualsiasi programma che legge un file di testo. La cosa interessante di Obsidian è che è possibile collegare i documenti l’uno con l’altro in modo molto semplice usando le doppie parentesi quadre così [[]]
.
L’automazione in oggetto è abbastanza banale e mi crea un canovaccio del mio journaling quotidiano (che ho iniziato a fare da gennaio 2022). L’idea di fondo del journaling è quella di scrivere un “diario” riepilogativo della giornata che possa servire a ricordare meglio e approfondire cosa è successo un determinato giorno. La cosa interessante è che grazie al collegamento delle note il “diario” può diventare anche un modo per rintracciare cose fatte o pensieri avuti, esterni dal diario stesso … ma ragionerò su questo aspetto in un eventuale futuro articolo.
2.1 Come gestisco io la sincronizzazione di Obsidian tra macOS ed iOS ?
Pur essendo presente una applicazione per iOS ed iPadOS di Obsidian ho deciso, allo stato, di non utilizzarla perché la sincronizzazione tra differenti piattaforme è possibile solo attraverso il loro sistema di sincronizzazione che, seppur sicuro perché è cifra i documenti in transito e a riposo con una chiave di cifratura scelta dall’utente, il servizio di sincronizzazione è a pagamento (con un abbonamento mensile) e, posto che non sono ancora completamente “venduto” sull’utilizzo di Obsidian per lavoro, ho deciso per ora di non pagare il loro servizio di sincronizzazione.
Ma ovviamente non poter lavorare indifferentemente su macOS e iPadOS per me è un limite insormontabile e, quindi, ho trovato una sorta di sotterfugio che, brevemente, vi spiegherò.
La sincronizzazione dei documenti di Obsidian la faccio, come per i dati del mio ufficio, con Syncthing tra vari Mac (prevalentemente l’iMac in ufficio ed il MBP a casa) e con Secure ShellFish su iOS / iPadOS.
Ho già illustrato tutto il funzionamento in altri articoli a cui vi rimando. Unica precisazione, che ha senso fare qui, è che per lavorare i file in Markdown su iOS / iPadOS uso iAWriter di cui sono beta-tester e che, grazie alle novità della versione 6 di cui non vi posso ancora parlare, mi permette di avere “quasi” la stessa esperienza che potrei avere in Obsidian su iPad, quantomeno per le funzioni di base che, poi, dal mio punto di vista sono quelle che mi interessano.
2.2 Il Comando Rapido
Per abitudine inizio sempre con il comando rapido per iOS / iPadOS. Nel caso specifico è veramente molto semplice:
- un'azione di testo all’interno del quale c’è il modello del mio journaling; nel caso specifico per ora sono andato veramente sul semplice: la data del giorno e l’ora in cui ho lanciato il comando / ho iniziato il journaling (così da avere un’idea precisa di quando l’ho scritto e se sta diventando una routing) e poi la divisione tra mattina e pomeriggio. Ero partito con qualcosa di più complesso ma poi mi sono accorto che, almeno in questa fase iniziale, era meglio partire con poco e poi, eventualmente, creare qualcosa di più dettagliato;
- l’unica particolarità dell’azione testo è che, all’interno ho inserito una variabile “data” che prende la data e l’ora attuale e le formatta come: Numero giorno, mese in parole ed anno a 4 cifre, un trattino e poi ora e minuto.
A questo punto grazie alle nuove funzionalità di salvataggio il modello viene salvato nella cartella dove tengo, giorno per giorno, un documento markdown con il “diario” della giornata.
A fini organizzativi ho deciso (per ora) di suddividere la cartella di journaling in anni, sia perché una suddivisione maggiore mi sembrava eccessiva, sia perché, se il processo continuasse sul serio dopo qualche anno mi troverei con una infinità di file in un’unica cartella (più o meno 365 documenti all’anno 🤓).
La particolarità di questa azione è che proprio perché il file MD finale è salvato con il modello AAAA-MM-GG.md
e nella cartella con il numero dell’anno dopo aver selezionato come cartella di salvataggio quella del journaling ho impostato che, automaticamente, il file venga salvato nella sotto-cartella dell’anno e con il nome di cui al modello in oggetto. A titolo di esempio quindi 2022/2022-01-20.md
.
L’automazione utilizzata per creare le date dovrebbe funzionare senza problemi, il file finale salvato veniva nominato tuttavia: 2022-01-20.txt
. Ho quindi aggiunto, per non saper ne leggere ne scrivere, un'ulteriore azione di rinomina del file che, a forza bruta, risolve il problema.
Veniamo quindi al trucco per creare un comando rapido che funzioni indifferentemente su iOS e su macOS.
Per fare ciò si deve utilizzare l’azione “ottieni dettagli dispositivo”.
Quest’azione vi permette di ottenere varie informazioni del dispositivo su cui è lanciato il comando rapido e, conseguentemente, differenziare le azioni eseguite dal comando rapido stesso.
Se avete solo un Mac vi consiglio di scegliere l’opzione “Modello dispositivo" che vi restituirà su macOS “Mac” e su iPhone e iPad i rispettivi dispositivi. Io, avendo più Mac e avendo salvato i file di Obsidian in cartelle con un percorso non esattamente uguale, ho scelto l’opzione “Nome dispositivo” per distinguere, in un futuro, tra i vari Mac (attualmente solo il mio MBP ha installato Monterey).
A questo punto non c'è altro da fare che utilizzare un azione "se" per distinguere se il dispositivo usato è un Mac o meno e, in base al risultato, eseguire una serie ulteriori di azioni pensate per una o per l’altra piattaforma.
Nel caso di questo flusso di lavoro l’unica vera differenza è la cartella di destinazione che sul Mac è collocata dentro la cassaforte di Obsidian mentre, su iPadOS, è collocata in una specifica cartella di Secure ShellFish.
Piccola nota finale: su iOS non tutte le cartelle sono uguali; infatti se Comandi Rapiti non ha problemi ad accedere alle cartelle di iCloud o quelle create direttamente sul dispositivo, per le cartelle dei c.d. document providers invece il discorso è profondamente diverso. Nella pratica a parte le applicazioni come Secure ShellFish e Working Copy che utilizzano il sistema di gestione della condivisione di cartelle di iOS la maggior parte degli altri document provider non sono compatibili con il salvataggio (e le altre opzioni legate alla manipolazione dei file) di iOS. Per il sottoscritto questo significa che, ad esempio, non posso salvare su iOS alcun file con Comandi Rapidi in NextCloud se non manualmente 😭.
3. Salvataggio spese casa in foglio Excel / Numbers
Questo comando rapido è relativamente banale nella pratica, salva data del giorno in cui si segna la spesa, l’oggetto della spesa ed il valore della spesa in un foglio di calcolo di Numbers. Nel caso specifico è il foglio di calcolo che condivido con mia moglie e ci permette di segnare, di giorno in giorno, le spese famigliari e, con un minimo di manipolazione dei dati, di avere idea di quanto stiamo spendendo mensilmente ed annualmente. Nulla di incredibile.
La comodità è che con questa azione vengono presentate 2 domande (oggetto spesa e valore di spesa) ed i dati vengono automaticamente salvati nel foglio di calcolo (sempre perché un’automazione deve essere effortless o rendere un’attività senza attrito!😉).
Non entrerò troppo nel dettaglio (per alcuni versi questo comando rapido è “complicato” ed ancora acerbo) ma voglio mostrarvelo perché un simile strumento, oltre che per la gestione delle spese di casa, si può prestare a molto altro: ad esempio tracciare le spese anticipate che si effettuano per i clienti in un foglio di calcolo di Numbers …
Più avanti conto di scrivere alcuni sui possibili usi utili per gli avvocati di Numbers che sto scoprendo essere un’applicazione veramente comoda per tante cose. Se siete curiosi ho condiviso sul gruppo Telegram di Avvocati e Mac alcuni esperimenti che ho fatto per risolvere piccoli ma concreti problemi quotidiani.
3.1 C’è un’azione di Numbers su iOS ma nulla su macOS
La particolarità di questo comando rapido dal mio punto di vista è che, rispetto a quella che vi ho presentato precedentemente, c'è un’azione su iOS per inserire all’interno di un foglio di Numbers delle nuove celle (dei nuovi dati per intenderci) ma non esiste un’azione simile per Numbers di macOS!
Oltre a creare quindi una distinzione in base al tipo di dispositivo ho dovuto creare due differenti flussi di lavoro per macOS e iOS.
Come sempre ho iniziato con iOS e, visto che era comodo, ho deciso di implementare lo “stesso” metodo su macOS.
Non mi addentrerò troppo nei dettagli qui perché probabilmente scriverò uno specifico articolo visto che, di quello che ho fatto, non c’è allo stato traccia online e, quindi, credo di essere stato per caso uno dei primi ad implementare la cosa (non so se è un bene o un male 😅).
Su macOS ho creato un AppleScript la cui particolarità è che prende i dati passati da comandi rapidi e poi li utilizza per creare le varie celle di Numbers.
Qui basti dire che, come si può vedere dalle catture schermo sottostanti, non è proprio intuitivo come passare degli “input” (dati) da Comandi Rapidi ad AppleScript.
Ciò detto, ho fatto alcuni esperimenti con qualcosa di più semplice e sono riuscito a far dialogare Comandi Rapidi con Apple Script. Come potete vedere dalla versione del comando rapido visibile da macOS e dai relativi commenti che mi sono lasciato, l’operazione è tutto fuorché lineare.
Ad esempio ho dovuto spezzare lo script in 2 parti perché (presumibilmente, non ne sono sicuro al 100%) c’erano troppe indentazioni dello script.
3.2 Considerazioni finale su automazione per iOS e macOS
Nel tempo ho iniziato a capire un pelino di AppleScript e, seppur non proprio super intuitivo come linguaggio di programmazione, devo ammettere che è una potente colla che permette di far dialogare le applicazioni su macOS (se ovviamente supportano AppleScript). Tuttavia, come si vede dall’azione per iOS di Numbers, Comandi Rapidi (se gli sviluppatori delle applicazioni lo supportano) permette di automatizzare in modo decisamente più semplice rispetto allo scripting. Questo, come tutto, ha i suoi vantaggi (maggior semplicità per l’utente inesperto) ed i suoi svantaggi (minor flessibilità e possibilità di automatizzare dove non ci sia un’azione specifica).
Giusto per fare un esempio: l’azione di iOS per Numbers permette di inserire delle celle solo all’inizio o alla fine di una tabella, punto. Con l’AppleScript, sicuramente più complesso da leggere e scrive, posso però inserire un dato in qualsiasi parte del foglio di calcolo … nel caso specifico ho fatto proprio questo perché su iOS l’inizio del file di Numbers non ricomprende la riga di celle con i nomi delle colonne, mentre su macOS no; ho dovuto, quindi, inserire i dati nella seconda riga del foglio, cosa che non mi era possibile su iOS e, di fatto, mi ha imposto di modificare come gestivo precedentemente il foglio delle spese.
In conclusione
Come al solito speravo di scrivere un articolo breve ed ho superato le 2500 parole … Spero di avervi però dato un minimo il senso dei cambiamenti che ci aspettano con macOS Monterey e iOS 15 per Comandi Rapidi. L’unificazione dei sistemi, seppur non ancora completa, inizia a vedersi e poter in parte uniformare i flussi di lavoro ed automazione sulle due differenti piattaforme credo sia un ottimo auspicio.
Come anticipato conto, appena ho un attimo, di scrivere un dettagliato articolo sull’integrazione di AppleScript e Comandi Rapidi, ma sto anche aspettando che qualcuno di più esperto degli anglofoni ne parli e specifichi cose che io ho semplicemente “scoperto” sbagliando e riprovando.