Secure ShellFish: il mio nuovo flusso di lavoro per scrivere da iPad come su Mac
Gli ultimi giorni di settembre 2020, in una giornata particolarmente poco produttiva, ho scoperto un nuovo modo per gestire il mio flusso di lavoro ancora meglio su iPad.
La prima cosa che ho fatto è fare un breve video per il canale Telegram di Avvocati e Mac che trovate qui sotto!
Ma che cos’è Secure ShellFish e perché ritengo questo nuovo flusso di lavoro così valido ed interessante?
Ho già scritto dell’applicazione, di cui sono anche beta tester, a luglio 2019: qui trovato il mio articolo dove spiego nel dettaglio come ho sempre utilizzato questa applicazione per accedere da remoto al mio iMac ed ai dati del mio ufficio da iPad.
Sintetizzando Secure ShellFish permette di collegarsi da iPad via SSH ad un server remoto (nel mio caso un Mac) ed accedere ai documenti lì salvato. Questi documenti sono resi disponibili dal sistema operativi (iOS o iPadOS) attraverso l’integrazione di Secure ShellFish come document provider all’interno di File.
Recentemente lo sviluppatore dell’applicazione, Anders Borum, ha implementato una nuova funzione all’interno dell’applicazione ovvero un terminale via SSH. Inizialmente, a parte qualche test, non ho degnato di nota questa nuova funzionalità perché avevo già un ottimo sistema per collegarmi al terminale del mio Mac via Blink Shell.
Con il tempo e la personalizzazione del terminale che ho fatto (qui trovate la mia attuale configurazione su GitHub) mi sono trovato con un problema (stupido se volete) ma fastidioso dal mio punto di vista: su iPad non riuscivo ad usare i fonts speciali che rendevano “bello” il mio terminale.
In particolare, col tempo, ho adottato Powerlevel 10k ed i NerdFonts per la visualizzazione del mio terminale.
Secondariamente, per la “gestione” del terminale non utilizzo l’applicazione Terminale pre-installata di Apple ma iTerm. Anche qui, una delle particolarità di iTerm, è lo schema cromatico che utilizzo ovvero il Nord Theme. Sì lo so sono tutti dettagli minori, ma considerate che ora io scrivo in Vim quotidianamente in una finestra di terminale e che anche l’occhio ha bisogno della sua parte!
Una delle cose che mi ha sempre infastidito di Blink Shell è che, nonostante i miei sforzi, non sono mai riuscito ad uniformare l’esperienza di lavoro da terminale su iPad con quella sul Mac.
Piccolo intermezzo: Fontcase
Tra i tanti esperimenti per cercare di personalizzare i fonts di Blink Shell ho installo l’app Fontcase e con questa sono riuscito ad installare una selezione dei NerdFont su iPad. Non l’ho detto prima ma questa particolare raccolta di fonts open-source è pensata per gli sviluppatore / coder per avere dei font monospazio (o simil monospazio) con anche tutta una serie di simboli aggiuntivi (in stile icone) che permettono di personalizzare in modo avanzato il prompt del terminale, tra le altre cose.
Se ci fosse interesse posso tranquillamente scrivere un articolo più dettagliato su Fontcase ma qui basti segnalare che l’app è gratuita e con un po' di circonvoluzione vi permette di installare su iOS / iPadOS qualsiasi font vogliate. Non è per utenti di primo pelo, anch’io ci ho messo un po' per capirne il funzionamento, ma una volta compreso il funzionamento è relativamente semplice utilizzarla.
Arriva Secure ShellFish in aiuto
Questo è il contesto in cui mi trovavo mentre stavo bighellonando con l’iPad un pomeriggio di settembre.
Non ricordo esattamente perché sono finito su Secure ShellFish ma ho aperto una finestra di terminale sul mio MacBook Pro e mi è comparsa la solita schermata di terminale con i caratteri mancanti per la Powerline 10k. Mi sono infastidito e ho premuto sull’icona delle rotelle per la personalizzazione del terminale di Secure ShellFish.
Come potete vedere tra le possibili configurazioni (“Settings” in inglese) c’è lo schema dei colori (“Color Theme” in inglese) e la famiglia dei fonts (“Font Family” in inglese). Ho quindi premuto sulla Font Family e mi sono comparsi tutti i font a disposizione tra cui i NerdFont che avevo installato precedentemente e di cui mi ero scordato.
Li ho selezionati ed il terminale è immediatamente cambiato!
Galvanizzato dalla scoperta mi sono buttato ad approfondire cosa potevo ulteriormente personalizzare.
Ed di cose ce ne erano!
Ho quindi installato il mio tema preferito e configurato come preferivo la dimensione del font.
Facendo queste cose mi sono ricordato di una funzione del terminale di Secure ShellFish che avevo ritenuto interessante ma che poi non avevo mai approfondito e che, ovviamente, ora per me diventava molto interessante: la shell integration ovvero la possibilità di utilizzare la shell (il terminale, volgarizzando il termine) per lavorare con le funzioni di iPadOS.
Il terminale di Secure Shell Fish e l’integrazione della shell con iOS / iPadOS
L’idea avuta da Anders Borum è geniale!
Abitualmente, per qualsiasi applicazioni che apre una finestra su un terminale remoto in iOS / iPadOS è impossibile interagire tra questa finestra (ed i file contenuti sul computer remoto) e le altre applicazioni sul nostro device.
Anche con Secure ShellFish inizialmente l’interazione tra i documenti remoti e le applicazioni sull’iPad erano possibili solo attraverso File per iOS, ad esempio, scrivevo un documento attraverso Blink Shell ed in split view avevo aperto l’app File con la cartella remota in cui si trovava quel documento, ad esempio per vederne la sua “renderizzazione” in PDF (nell’ipotesi di atto telematico scritto in Vim con Markdown e Pandoc).
Non sarebbe molto più comodo fare tutto ciò direttamente dall’applicazione in cui si vede il terminale remoto? La risposta è ovviamente sì ma come?
Borum, che tra l’altro è lo sviluppatore di un’altra ottima applicazione come Working Copy, aveva già più o meno tutto quel che gli serviva una volta che oltre all’interfaccia per collegarsi ai documenti remoti aveva creato un’interfaccia per collegarsi al terminale remoto; e così ha fatto!
Con una apposita configurazione del computer remoto (che vedremo nel punto successivo) è possibile usare la finestra di terminale di Secure ShellFish come si utilizzerebbe una normale app di iOS / iPadOS: si può interagire con le dita (o il puntatore da iOS 13.4).
È sufficiente spostarsi nella cartella del terminale remoto in cui si trova il documento a cui vogliamo accedere e digitare il comando: ls
.
Questo comando stamperà a video il contenuto dei documenti. Ora con il dito o il puntatore sarà possibile selezionare il documento che ci interessa e trascinarlo altrove. Quasi “magicamente” entrerà in gioco il sistema di drag & drop di iOS / iPadOS e potremo utilizzare le documento in vari modi.
In particolare se l’estensione del documento è supportata da una applicazione e questa supporta l’apertura sul posto sarà possibile trascinare il documento sul lato destro dello schermo ed aprire il documento stesso in split view nell’applicazione.
Ma è anche possibile copiare il documento così selezionato all’interno di un’altra cartella, se nella split view abbiamo già aperto l’app File. Insomma l’interazione con i documenti remoti è intuitiva e conforme all’esperienza di iOS / iPadOS.
Da ultimo ha implementato un altro trucco interessante.
È infatti possibile utilizzare un apposito comando da terminale per aprire un documento nella share sheet di iOS / iPadOS per utilizzarlo con i flussi normali del sistema operativo mobile di Apple.
Basta quindi digitare:
sharesheet nome_documento.estensione
e si aprirà il documento nella finestra mobile di condivisione. A questo punto potremo utilizzarlo come meglio crediamo.
La cosa ulteriormente interessante è che se scegliamo la funzione di anteprima presente nella finestra di condivisione potremo visualizzare il documento in anteprima.
Se ciò non bastasse questa funzione è utilizzabile con molteplici documenti, per cui se digitiamo ad esempio:
sharesheet *.jpg
verranno aperti tutti i documenti in formato JPG all’interno della specifica cartella.
Come configurare il tutto?
Vediamo quindi come configurare il nostro terminale per funzionare correttamente con Secure ShellFish.
Come si vede dall’immagine sottostante è necessario copiare ed inserire nel file nascosto .profile
i comandi di cui all’immagine.
Segnalo che è opportuno fare questa operazione dal Mac e non attraverso un editor di testi direttamente dal collegamento col l’iPad. Io ho riscontrato dei problemi quando copiavo ed incollavo lo script.
Per le mie necessità usando ZSH come shell ho copiato il contenuto dello scritto nel mio .zshrc
e tutto ha funzionato perfettamente. Per chi utilizza i miei dot files da GitHub si trova la pappa già pronta.
Qual’è quindi il mio nuovo flusso di lavoro su iPad?
Premetto che, per motivi contingenti alla pandemia, l’utilizzo dell’iPad che faccio quotidianamente per lavoro è fortemente diminuito posto che ora ho una postazione di lavoro fissa sia a casa che in ufficio (con un iMac 27" in ufficio ed un MacBook Pro 16" collegato ad un monitor esterno a 27" a casa). Sto tuttavia ragionando di ripristinare i miei pomeriggi con solo iPad proprio per non perderci troppo la mano.
Ciò detto grazie alle nuove funzioni di Secure ShellFish il mio flusso di lavoro su iPad è sempre più simile ed uniforme a quello su Mac riducendo di molto le frizioni predenti e permettendomi di lavorare in modo uniforme sulle 2 piattaforme.
Porter aprire velocemente i PDF generati da Vim (utilizzando Pandoc e LaTeX) mi rende più semplice svolgere da remoto su iPad le operazioni senza necessità tra l’altro di uscire dall’applicazione in cui scrivo.
Note dolenti
È tutto oro quel che luccica? Purtroppo ci sono alcune note dolenti che, quantomeno per me, non influenzano negativamente l’esperienza ma da tenere presente.
Secure ShellFish, rispetto a _Blink Shell, non ha e non potrà avere Mosh come tipo di collegamento al computer remoto. Questo perché Mosh richiede per l’utilizzo del proprio codice che l’applicazione in cui è incorporato sia a sua volta open-source, cosa che _Secure ShellFish non è e mai sarà. Potrebbe sembrare poca cosa, ma dalla mia esperienza maturata fino ad ora se si esce dall’app, ad esempio per fare dell’altro sull’iPad o lo si spegne per un po' di tempo, il collegamento SSH non viene mantenuto. Apple è molto spartana nel chiudere le applicazioni in background al fine di risparmiare batteria.
Questo non è un grosso problema se avete fatto le vostre operazione a terminale ma se, come il sottoscritto, avete Vim aperto e ci state scrivendo sopra la cosa è meno piacevole. Certo tra i salvataggi automatici di Vim e i salvataggi che faccio non ho grossi rischi di perdere dati … tuttavia è una cosa da tenere a mente ed a volte qualche problema me la da.
Il secondo problema (che ho scoperto cercando di aggirare la perdita della sessione SSH) è che Tmux non è compatibile con le funzioni di condivisione di Secure ShellFish che vi ho appena descritto. Quindi se apro una sessione di Tmux sul computer remoto riesco senza problemi a mantenere attiva la mia sessione di lavoro (basta semplicemente distaccarsi da essa) ma poi una volta che mi ci ricollegherò non potrò usare il comando sharesheet
o il drag & drop.
Una soluzione mediana è quella di creare più sessioni di terminale, una da utilizzare per le funzioni di iOS / iPadOS e l’altra dedicata solo al collegamento via Tmux ma oggettivamente non è comoda.
Ho scritto allo sviluppatore e, spero / credo, che in un futuro prossimo sia possibile implementare le funzioni anche in una sessione di Tmux ma, ovviamente, ad oggi non è possibile.
Da ultimo segnalo quello che non è un difetto in senso tecnico ma una cosa da tenere presente.
Secure ShellFish è un’applicazione professionale, sviluppata da una persona che vive dai proventi dell’app stessa, e legittimamente ha un costo significativo:
- 27,99 € al momento in cui scrivo per lo sblocco a vita;
- 3,49 € al mese in abbonamento.
Personalmente già tempo addietro avevo acquistato l’applicazione con sblocco a vita e per le mie necessità lavorativa è ormai indispensabile ma segnalo la cosa per chi fosse solo curioso.
In conclusione
Mi rendo ben conto che il mio metodo di scrittura sia abbastanza inusuale nell’ambito legale e professionale ma credo che l’utilizzo di una applicazione come quella di Secure ShellFish per l’accesso da remoto (ed offline) dei documenti del proprio ufficio sia sicura e vantaggiosa. Se si aggiunge l’ulteriore tassello di poterla utilizzare per accedere al terminale remoto le sinergie aumentano ulteriormente. Quest’applicazione è l’esempio di come dovrebbero essere le applicazioni per iOS / iPadOS, senza reinventare infatti la ruota (il terminale remoto esiste dagli albori di internet) Anders Borum ha piegato un vecchio archetipo alla nuova filosofia di un sistema ibrido (prevalentemente touch ma anche testuale e con puntatore) creando un’applicazione che utilizza funzioni del passato re-interpretate con la filosofia di utilizzo dell’iPad.
Come sempre se avete domande o richieste potete lasciare un commento qui sotto.