Automatizzare un programma nella barra dei menù di macOS
Breve articolo (è da un po' che non pubblico niente lo so!) su un veloce esperimento di automazione che ho fatto in questi giorni.
Il problema
Ormai da svariati mesi utilizzo il Tiling Manager per macOS chiamato Amethyst (su cosa sia un Tiling Manager ve ne parlerò nel punto successivo, state con me).
Una necessità che mi è sorta nel tempo è quella di abilitare e disabilitare questa funzione in base alle mie specifiche necessità. Il problema è che Amethyst non è una normale applicazione di macOS ma è una di quelle cosiddette applicazioni che funzionano dalla barra del menù di macOS (come si vede nell’esempio sottostante).
Inoltre tra le tante opzioni di scorciatoie a tastiera che offre questa applicazione non ce n’è una per disabilitare e riattivare il sistema di tiling manager stesso.
Mi sono dovuto scervellare un po' quindi per creare una automazione che facesse ciò. Ve ne parlo perché, seppur quello che vi farò vedere probabilmente non si applicherà al vostro flusso di lavoro, credo sia un trucco utilie da conoscere se non si vuole utilizzare il mouse per interagire con le applicazioni della barra menù di macOS.
Tiling Manager
Ma prima di entrare nel vivo dell’articolo una giusta precisazione ... che cosa diavolo è un tiling manager ?
Il tiling window manager ovvero gestore di finestre a mattonelle è uno specifico programma che si occupa di gestire (vedremo dopo meglio come) la disposizione delle finestre aperte sul nostro schermo.
Esistono svariati gestori di finestra nel mondo Linux ma su macOS dal quel che ho potuto vedere io solo 2: Amethyst, che sto usando, e xmonad.
L’idea dei tiling window manager è che, invece di stratificare tante finestre di differenti applicazioni sulla nostra scrivania, dovendoci occupare di riposizionarle, ridimensionarle ed organizzarle in vari modi, il gestore delle finestre si occupa di fare tutto ciò. Questo significa che ad ogni nuova applicazione che apriamo sulla nostra scrivania (virtuale) automaticamente questa, assieme alle altre applicazioni già presenti, si auto-ridimensiona per permettere di avere tutte le finestre visibili.
Oltre a questo effetto organizzativo di base, grazie ad una serie di scorciatoie a tastiera, è possibile muoversi da una finestra all’altra senza dovere alzare le mani dalla tastiera ovvero modificare la collocazione delle singole finestre, ampliandole o riducendole così come spostandole l’una rispetto all’altra.
Il risultato finale, come potete vedere dall’immagine sottostante, è una scrivania ben organizzata che permette di lavorare in modo più focalizzato e senza alzare le dita dalla tastiera alla ricerca del mouse che, per uno scrittore, è un innegabile vantaggio di ergonomia e funzionalità.
Ho intenzione di farvi vedere in un video il funzionamento di tutto questo sistema perché, a parole, sembra molto più complesso di quello che effettivamente è. Qui basti sottolineare che, una volta imparate le scorciatoie a tastiera, lavorare con Amethyst è comodissimo.
Non ho testato xmonad perché da quel che ho letto è decisamente più complicato di Amethyst da installare e configurare.
Automatizzare la barra del menù di macOS
Pur essendo molto comodo l’utilizzo di macOS con un tiling windows manager a volte poter avere le finestre che si sovrappongono è comodo. Questo mi capita quando per esigenze varie devo aprire e consultare più di 3 finestre contemporaneamente, ad esempio per trascrivere dati in un foglio di calcolo che prendo da svariati PDF.
Dovendo proprio lavorare su una posizione che richiedeva questa flessibilità mi sono reso conto che non c’era modo di automatizzare il tutto con Keyboard Maestro … almeno così inizialmente pensavo.
Spulciando per il forum di Keyboard Maestro infatti sono incappato in questo post che mi ha mostrato la strada per ottenere il risultato che volevo: AppleScript.
Pur essendomi sempre prefissato di imparare meglio AppleScript non ho mai trovato il tempo / la voglia di fare uno studio sistematico del potente linguaggio di programmazione che permette di automatizzare il flusso di lavoro tra applicazioni di macOS.
Tornando a noi, il problema con il post che ho trovato era che seppur mi indicava la via per l’automazione che volevo creare non mi spiegava chiaramente come procedere. Infatti l’automazione spiegata era legata a Dropbox e non al mio Amethyst.
Come sempre, tuttavia, è possibile trovare quel che si vuole mettendo assieme gli script fatti da altri. Ho quindi fatto alcune ricerche finalizzate a trovare AppleScript che spiegassero come "pilotare" le applicazioni della barra del menù ed ho trovato questo articolo.
Facendo qualche prova (ho inserito al posto di Dropbox Amethyst) e sperimentato velocemente su come dare una serie di comandi a tastiera via AppleScript, sono riuscito a creare questo banale script.
tell application "System Events"
tell UI element "Amethyst"
tell menu bar item 1 of menu bar 1
click
key code 125 -- freccia in giù
key code 36 -- invio / return
end tell
end tell
end tell
Nella sostanza i comandi riportati dicono di aprire il menù a tendina nella barra del menù di Amethyst e di premere freccia in giù ed invio. Questo permette di abilitare (Enable) e disabilitare (Disable) l’applicazione.
Attualmente l’operazione, non so esattamente per quale motivo, è "lenta" ma fa il suo dovere e mi permette di continuare a lavorare quando viene lanciata.
Automatizzare il lancio dello script con Keyboard Maestro
A chiusura del tutto ho creato una semplicissima macro di Keyboard Maestro per lanciare lo script, la vedete qui sotto.
In conclusione
Spero, con questa "banale" automazione, di avervi incuriosito sulle possibilità di interagire con la barra del menù di macOS senza la necessità di utilizzare il mouse. Come dicevo all’inizio dell’articolo l’esempio è legato alle mie specifiche esigenze ma quello che volevo mostrarvi è il concetto di base che può essere applicato in differenti modi e per differenti esigenze.
Questo è un esempio di come, attraverso l’automazione di macOS, è possibile risolvere problemi specifici del proprio flusso di lavoro che, altrimenti, richiederebbero l’intervento di un vero programmatore. Sì, stavo quasi per scrivere allo sviluppatore di Amethyst per chiedergli di inserire una specifica scorciatoia a tastiera per fare quello che ho fatto io in completa autonomia (forse non benissimo ma questo poco importa 😜).
Come sempre se avete domande o suggerimenti potete scrivere un commento qui sotto o mandarmi una email.
Alla prossima!