notmuch-vim - qualche appunto

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3931
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

notmuch-vim - qualche appunto

Messaggio da joe »

Edito questo messaggio, perché alla fine poteva essere un post su un wiki più che una domanda posta su un forum.
Anzi penso sia possibile anche in caso vi siano risposte editare il messaggio iniziale di un topic.
Ad ogni modo sintetizzo un po' quanto avevo scritto inizialmente, tagliando un po' di roba poco utile.

Scopo:
  • ottenere un'interfaccia veloce a GMail
  • che lavori quindi in locale da terminale e da cui si possano inviare le mail
  • sincronizzare la situazione locale con quella remota per ritrovarsi davanti una casella quanto più possibile simile anche via webmail da browser
Un esempio banalissimo delle operazioni principali più frequenti che svolgo dalla mail:
  • leggere i messaggi in inbox
  • archiviarli (ritrovandoli solo nell'etichetta "All" o "Tutti i messaggi")
  • rispondere ed inviare messaggi e ritrovarmeli marcati come "sent"
  • supporto agli allegati
Al momento uso il client grafico Mailspring che credo sfrutti le API GMail anziché lo standard IMAP. Trovo questa situazione gestita in modo soddisfacente, nel senso che l'interfaccia Mailspring è molto simile alla webmail gmail, e facilmente riproducibile senza far nulla anche su più macchine diverse. Purtroppo è un pachiderma tutt'altro che rapido, rilevo anche momenti in cui va in stallo per diversi secondi e poi si sblocca. Insomma, non è nulla di rapido e maneggevole come tool da terminale... però è colorato e moderno esteticamente, ma chissene.

Ho trovato una soluzione che potrebbe fare al caso mio:
  • lieer: è una sorta di interfaccia a GMail che sfrutta proprio le API di big G. E traduce le varie etichette gmail in corrispondenti etichette o meglio tags digeribili da notmuch. In pratica lieer è in grado di sincronizzare la situazione locale e remota in entrambe le direzioni. I messaggi risulteranno dotati di uno o più tag/labels invece che posizionati in varie directory imap.
  • notmuch: funziona in locale, aggiunge o toglie tags ai vari messaggi per "spostarli" a nostro piacimento. Lavora come un indicizzatore attraverso un database agganciato alla directory contenente i mesaggi email. Si può usare anche standalone da riga di comando. Si possono ad esempio cercare tutti i messaggi presenti nella inbox, provenienti da tizio ecc... è un motore di ricerca che fruga tra le nostre mail.
  • notmuch-vim: è il vero e proprio client con cui ci si può interfacciare alla nostra casella di posta in un ambiente molto VIM friendly.
Cosa sono riuscito ad ottenere/capire:

Lieer può funzionare da riga di comando grazie al comando "gmi", esempio, immaginando di avere i messaggi dell'account joe-gmail (possiamo chiamare così la directory che conterrà la roba inerente quell'account) in ~/Mail:

Codice: Seleziona tutto

gmi sync -C ~/Mail/joe-gmail
la dir joe-gmail dovrà contenere il database di notmuch, si fa nella configurazione proprio di notmuch dal wizard al primo avvio basta dirgli di usare quella directory.

Quello che non ho trovato per il momento è come richiamare quel comando lì sopra "gmi ecc..." da dentro VIM. Senza dover uscire e rilanciare:

Codice: Seleziona tutto

vim -c ':NotMuch'
Ad esempio non sarebbe male premere "F5"' e ritrovarsi la casella che si sta consultando con VIM aggiornata alla situazione remota eventualmente cambiata nel frattempo, tipo se sono arrivati nuovi messaggi.
Volendo si potrebbe mettere quel comando in cronjob, volendo si può lanciare da vim richiamando la shell, con

Codice: Seleziona tutto

:!gmi sync -C ~/Mail/joe-gmail
Sinceramente non ricordo come si può mappare quel comando su un tasto, ad esempio F5... ma ora che sto scrivendo mi sa che forse la strada era quella e si dovrebbe trovare cercando in rete, perché è una peculiarità di VIM liscio, non del plugin notmuch-vim o altro...

Invece ad esempio per l'invio dei messaggi, si può sempre usare lieer, che comprende una funzionalità di sendmail, il comando seguente può essere impostato direttamente in notmuch-vim, anche attraverso il ".vimrc":

Codice: Seleziona tutto

" impostazione dell'invio mail in notmuch-vim attraverso "lieer / gmi"
let g:notmuch_sendmail = 'gmi send -t -C ~/Mail/joe-gmail
Di default dalla "Compose View" di notmuch-vim, in Normal mode, premendo "s" si richiama il "send" del messaggio che richiama appunto il comando sendmail specificato da notmuch_sendmail, ovvero "gmi send ecc...".

Ho testato la cosa e funziona.

I dettagli dell'impostazione predefinita dei tasti nelle varie modalità di "View" è consultabile qui:

https://github.com/felipec/notmuch-vim/ ... otmuch.txt

L'impressione è che dopo aver configurato per bene vim/notmuch-vim, sia possibile ottenere un client molto interessante e rapido.
Per il memento mi fermo qui, se interessa qualche altro dettaglio, chiedete pure. Sempre che lo abbia già afferrato anch'io...

Se qualcuno vuole commentare e suggerire il mapping di F5 per lanciare la sincronizzazione da dentro vim, grazie mille. :thumbright:

Aggiungo un altro paio di links:
https://github.com/gauteh/lieer
https://notmuchmail.org/

Avatar utente
joe
Iper Master
Iper Master
Messaggi: 3931
Iscritto il: ven 27 apr 2007, 11:21
Slackware: 15.0
Kernel: 5.15.38
Desktop: dwm

Re: notmuch-vim - qualche appunto

Messaggio da joe »

Aggiorno un attimo la situazione, ci sto trafficando a spizzichi e bocconi, metto qui in questo altro messaggio, sperando poi di riuscire a modificare ulteriormente il primo post per fare un po' d'ordine quando avrò ottenuto una situazione accettabile.

Ho apportato alcune modifiche al plugin notmuch-vim, in particolare nel mio sistema è stato installato con "vundle" e il file da modificare è il seguente:

Codice: Seleziona tutto

~/.vim/pack/plugins/start/notmuch-vim/plugin/notmuch.vim
Magari poi metto una diff... ma le modifiche sono piuttosto banali.
Però l'effetto secondo me è notevole in quanto aggiunge una semplicità d'uso e una comodità maggiori.

Il plugin adotta il funzionamento a schermate, appena si apre si trovano le "folders" che poi sarebbero le etichette (labels di GMail nel mio caso). Se si usa IMAP sono le varie directory imap convertite in tags. In ogni caso sono dei tags che "notmuch" elabora e notmuch-vim mostra a schermo. Ovviamente ci troviamo di fatto in un buffer di VIM. Niente di ché.
Entrando in una "folder" si ha una schermata che elenca tutti i messaggi coerenti con i tags associativi. Ecc...
Di default con <enter> si entra nella schermata, mentre con "q" si esce tornando alla schermata precedente.
Abbastanza comodo, ma io preferisco le "frecce", così ho aggiunto la navigazione attraverso le frecce, destra per entrare, sinistra per tornare indietro.
Per uscire dalla schermata primaria, quella con le "directory", si deve fare come in VIM, o si preme ZZ, oppure ZQ, oppure ":q", ecc... abbastanza scomodo per mio conto... così ho modificato il plugin in modo che sia possibile chiudere il tutto premendo "q" e basta, dalla schermata delle "directory", quella più esterna per capirci.

Inoltre ho mappato F5 in ~/.vimrc per richiamare la sincronizzazione col server GMail:

nmap <F5> :silent call system('gmi sync -q -C /mnt/crmx5/temp/mail-notmuch-lieer &> /dev/null &') <cr> =

Sarebbe meglio creare un mapping specifico per il solo notmuch-vim, ma per il momento volevo provare e ho messo lì la direttiva.
In pratica premendo F5 viene aggiornata la maildir locale con la casella GMail remota, il tutto avviene attraverso lieer/gmi, quindi sfruttando le API gmail piuttosto che IMAP o altro.

Una lista TODO conterrebbe sicuramente:
  1. Possibilità di organizzare un attimo meglio la schermata iniziale, quella con le directory di cui sopra. In particolare vorrei avere in evidenza solo la INBOX, la Importanti, la All, la Sent, Trash, Spam, e ad esempio raggruppare le altre etichette/directory in modo da potervi accedere, ma alla bisogna.
    Per capirci ora lanciando l'alias "mails" ecco cosa appare:

    Codice: Seleziona tutto

           18 INBOX                (tag:inbox)
          101 Sent                 (tag:sent)
         5033 All                  ()
            4 Spam                 (tag:spam)
            7 Trash                (tag:trash)
            0                      (-----)
            0 Amazon Importanti    (tag:Amazon Importanti)
           26 G_security-alert     (tag:G_security-alert)
           70 LQ                   (tag:LQ)
          130 aduc                 (tag:aduc)
          129 alien                (tag:alien)
          386 amz                  (tag:amz)
            9 attachment           (tag:attachment)
           42 facebook             (tag:facebook)
          105 freeebooks           (tag:freeebooks)
         1451 hwupgrade            (tag:hwupgrade)
           62 important            (tag:important)
            0 personal             (tag:personal)
            0 promotions           (tag:promotions)
            0 social               (tag:social)
          966 tomshardware         (tag:tomshardware)
          837 unread               (tag:unread)
            0 updates              (tag:updates)
          977 varie-newsletter     (tag:varie-newsletter)
    
    Che per i miei gusti è un po' troppo dispersivo e confusionario.
    Ma non ho trovato informazioni per gestire directory nidificate, o alterare il layout della schermata iniziale insomma.
    Si potrebbe fare un nuovo "tag" di notmuch, ma poi sarebbe applicato come label anche alla casella GMail remota, almeno credo, il ché lo eviterei per non alterare in tal senso la casella mail di origine.
  2. Organizzare una gestione multi account in modo 'avere sott'occhio tutti i messaggi.
  3. Provare qualche soluzione per gestire una rubrica con gli indirizzi a cui inviare messaggi per non doverli digitare per intero, so che vi sono progetti in tal senso che funzionano con TAB per auto-completare gli indirizzi da inserire. Insomma, lì le risorse ci sarebbero già pronte.
  4. Come inviare messaggi contenenti allegati. Anche qui immagino che vi siano soluzioni già integrate con notmuch-vim o almeno documentate.
PS,
Se per caso qualcuno avesse commenti in merito derivanti da informazione ed esperienza diretta con questo plugin, annessi e connessi, ben vengano.
Per il momento mi limito ad aggiungere che tra newsboat ed nchat si riescono a gestire in modo molto rapido da terminale vari aggiornamenti su roba che si tiene d'occhio e su chat tipo whatsapp. Se riesco ad ottenere una situazione accettabile anche per le mail grazie a notmuch-vim farebbe molto comodo

Rispondi