Meli email client, pre-alpha release
meli.delivery
meli.delivery
I think the GUI stacks are too bloated or too hideous (electron, cpp/qt,c# and it's limitations, etc...) to work with these days so much that the cool kids (hardcore techy people) just gave up and started doing TUIs to solve their own problems directly?
I would love to see a language agnostic UI stack that can run across platforms, to an extent Electron is "language agnostic" since you write the UI in whatever language you want, you just then compile it to JS (and eventually WebAssembly).
Doesn't look that bad?
If I can use any language with the awesome Qt tooling I am set. They seem to be working on making Python such a citizen in the official Qt languages stack but its taking forever and is only 1 single language.
Maybe they need to do what Godot did. Implement a bridging programming language that bridges any native language to their engine. With Godot I can write code in Rust, D, probably Nim and so on and all due to GDNative their bridging language to ensure you can use what you are comfortable using.
Same with Qt5, anything that needs Qt4 or less is now broken unless you use Slackware which tries to keep everything it ever had (it even has Gtk1). Qt5 is made by a company whose income doesn't come from desktop apps anymore and certainly not from being a stable API for a desktop environment. Though even if they wanted, C++ lacking a stable ABI doesn't help much.
The only alternative would be Motif but that hasn't got any meaningful update since the 90s and is only limping in life thanks to a company whose income seem to come from consulting about converting your Motif app to Qt.
Other toolkits either rely on one of the above, have largely been ignored and/or are even less stable than Gtk.
And the majority of all toolkits are way too bloated, not just in terms of resource use but also in terms of how easy they are for a developer to master them.
The storage consumed is reasonable in terms of modern sizes storage.
Purely from the perspective of the end user I'm not sure I understand what the difficulty is.
The user doesn't care if the app is gtk 2 or 17. From the user's perspective they click install and an icon appears and their free hard drive space goes down a tiny amount.
Another massive benefit is that I can seamlessly use all of the same tools over an SSH/Mosh connection. X11 forwarding over SSH has never practically worked for me (it's too laggy and Australian internet makes doing it between networks basically impossible).
i now carry a tiny laptop (gpd pocket) where i have all my important stuff, including ssh keys to servers. i use any other available device as a workstation with a browser, and use ssh/mosh to access my tiny laptop to do the important work and access servers through that.
What is the keyboard like to type on and how fast can you type? Where did you purchase it?
i got the first model of that series during their crowdfunding campaign. (it's their second product that they released 2 years ago) the keyboard on that was a bit wobbly, occasionally a key would not work (most annoying when typing a password), but for the most part it is usable.
the newer model is supposed to have a better keyboard, as i think the keyboard was what most people complained about.
it has plenty of diskspace and ram, to be practically usable, and if you got the right charger then you can hook up an external monitor and keyboard when at home or in the office, and have it portable otherwise. (and it really fits into my pant pockets)
That is worrying that keys would stop working. I'd definitely be interested in a cheaper model with an ARM processor primarily for remote development on the go.
but that's the first model. current models are supposed to have much better keyboards
The infrared mouse works OK (I'd prefer the thinkpoint-esque knob of the original GPD Pocket), but you can also attach a Apple Magic Trackpad 2 on it. These work very well if you run a new Linux kernel and patch up some software such as Xinput.
I run Kali Linux on it (its part of my pentest equipment; don't use it for e-mail and such [1]). Slapped an Apple logo on it for the fun of it.
Can I recommend the device? Well yes and no.
Its an OK build quality, and if you apply thermal pads and some copper you can easily run the machine without the fan on all the cores. It does get a bit more hot on the bottom then.
Its a bit expensive now, I'd say, compared to say the current Raspberry Pi 4 plus a powerbank plus a monitor. Its just 2018 price and hardware. Perhaps look at the successor(s) such as the black version or perhaps the Max?
Worst part is they screwed me over cause there's a clear spot on the top right due to attachment of the (touch)screen and in certain light / colors it is rather apparent. CS said they couldn't notice the issue. No warranty was provided. And even then I read about some people had to pay import tax once more receiving their (repaired/new) device but they want you to send the device without value (which means you could lose the whole thing if it gets lost). Typically Chinese.
[1] You could argue you shouldn't use such Chinese hardware for pentest purposes which is a fair point.
I didn't think this was a big ask but I guess now that most people just use a single Gmail account the market for such things is dwindling. Here I sit with 7 accounts in Thunderbird. Maybe I'm just going to be stuck with eM Client or Outlook and using RDP to check my email. I'm willing to pay, someone please give me a decent cross platform alternative with a GUI, ideally a proper, non-electron one.
The TUI clients I've looked at all seem to suffer from some mix of:
- Poor mail notifications
- Poor multi-account support
- Single maintainer that could disappear at any time
- Archaic keybindings, or perhaps I'm just too lazy to learn them
- HTML mail is used widely now as most people use webmail and just doesn't map well to console applications
Overall when I want my mail client to "just work" I've found them to be piss poor compared to Thunderbird. Which is beginning to seem rather silly, but it's still my experience.
I don't know what to do. Maybe I should fork Mailspring, strip out the account garbage and just tolerate Electron, but that'd create a whole bunch of maintenance work I just can't take on right now.
Now I just forward my IMAP accounts to gmail. This is horrible for many reasons (don't lecture me, I know), but I haven't been able to find a good solution and messing about with email is time-consuming.
I may just consolidate on Fastmail when my current IMAP provider subscription needs renewing. From a brief test a while back their web client seems to be on a par with gmail.
-- crontab -e
-- 0 * * * * /usr/local/bin/imapfilter
function main ()
-- See 'man imapfilter_config' for an explanation of
-- imapfilter options and functions.
-- Some config examples:
-- https://github.com/lefcha/imapfilter/blob/master/samples/config.lua
-- https://gist.github.com/dylanwh/408810
-- http://www.npcglib.org/~stathis/blog/2012/07/09/linux-task-sorting-mail-with-imapfilter/
-- General Options
options.timeout = 120
options.subscribe = true
-- Accounts
{%- for v in ACCOUNTS | from_json %}
local {{ v.serverName }} = IMAP {
server = '{{ v.server }}',
username = '{{ v.username }}',
password = '{{ v.password }}',
ssl = '{{ v.ssl }}'
}
{%- endfor %}
-- GMAIL
-- Gmail behaves differently to normal imap. With a normal imap acccount
-- you can simply use move_messages(). Google stores both inbox
-- and sent email in the "[Gmail]/All Mail" folder. An email sent to yourself
-- from the same email address exists as a single email and is visible in
-- the Inbox and Sent box. If you delete the inbox mail then the sent mail
-- is also deleted. Thus it is only safe to delete mail once both the Inbox
-- and Sent box is copied.
-- Only go ahead and copy inbox/sent/spam from gmail if I have received
-- some Inbox email.
if (gmail['Inbox']:check_status() > 0) then
inbox_mail = gmail["Inbox"]:select_all()
inbox_copy_success = inbox_mail:copy_messages({{ PRIMARY }}['Gmail Inbox'])
sent_mail = gmail['[Gmail]/Sent Mail']:select_all()
sent_copy_success = sent_mail:copy_messages({{ PRIMARY }}['Gmail Sent'])
spam_mail = gmail["[Gmail]/Spam"]:select_all()
spam_mail:move_messages({{ PRIMARY }}['Gmail Spam'])
-- Only clear the All Mail folder if we were successful in moving
-- our Inbox and Sent mail. Note: move_messages is supposed to return
-- booleans for copying the messages and then marking them as deleted.
-- For some reason the mark for deletion return value is 'nil'.
-- This may need to be [Gmail]/Bin or [Gmail]/Trash check your account!
if (inbox_copy_success and sent_copy_success) then
print('Safe to delete both inbox and sent')
move_inbox = inbox_mail:move_messages(gmail['[Gmail]/Trash'])
move_sent = sent_mail:move_messages(gmail['[Gmail]/Trash'])
if (move_inbox and move_sent) then
print('Emptying bin');
bin_mail = gmail['[Gmail]/Trash']:select_all()
bin_mail:delete_messages()
end
end
end
{%- if SECONDARY != '' %}
-- {{ SECONDARY }}
-- Only go ahead and copy inbox/sent/spam from {{ SECONDARY }} if I have received
-- some Inbox email.
if ({{ SECONDARY }}['Inbox']:check_status() > 0) then
inbox_results = {{ SECONDARY }}['Inbox']:select_all()
inbox_results:move_messages({{ PRIMARY }}['{{ SECONDARY }} Inbox'])
sent_results = {{ SECONDARY }}['Sent']:select_all()
sent_results:move_messages({{ PRIMARY }}['{{ SECONDARY }} Sent'])
spam_results = {{ SECONDARY }}['Junk']:select_all()
spam_results:move_messages({{ PRIMARY }}['{{ SECONDARY }} Spam'])
end
{%- endif %}
end
main()You don't technically need a server.
It's a very simple, single binary that runs on a cron job with no dependency other than lua. I do it on a VPS instance that I have, but there's no reason why you couldn't run it locally.
I do really wish I could find a better email client though, but Thunderbird is "good enough" for now. I don't get a warm fuzzy feeling using it, but I also don't rage at it not working constantly.
I looked at this video about mutt https://www.youtube.com/watch?v=2jMInHnpNfQ which made me think about making a switch.
However can we really do better than Mutt. Mutt typically had issues with multiple accounts and moving emails between the two. I have been migrating away from Google and this is a handy ability (which thunderbird has). I was quite excited by Drew Devault's aerc client https://drewdevault.com/2019/06/03/Announcing-aerc-0.1.0.htm... so maybe that or meli might be the solution for me.
Really there are only 3 requirements for me:
* Be able to use Vim for editing (one of my major gripes in Thunderbird
* Be able to use markdown, ideally something like pandoc, in thunderbird I use Markdown Here https://markdown-here.com but that requires you to edit in rich text mode and then convert to markdown. This is really annoying because you end up with <br> and <p> in the wrong places and have to always convert back to "Body Text".
* Be able to sync my contacts from CardDav. I could not go back to having a non-centralized address book. Ideally such a client would benefit from https://www.etesync.com/ as well
* Calendars I don't think need to strictly be in a mail client. What's the usecase for that? MacOSX has Mail.app and iCal.app separate. Is this a hangover from the Outlook/Google design. https://www.calcurse.org looks pretty healthy, though they say their CalDav support is experimental.
* PGP support, WKD, OPENPGPKEY, AutoCrypt etc. Enigmail does a lot of things right.
Just remember its there when you are ready for it ;)
As far as multi-account goes, though, it’s relatively easy to setup in mutt, using something like isync and mu for archiving and searching.
When everything on your phone and desktop is constantly seeking your attention it's nice to have some apps working for you.
Ideally I want Android-style reply in the notification level stuff.
I did have an issue in early 2019 where parsing of contact names somehow got messed up, causing outgoing messages to not get sent. After a few productive days of sending emails I found twelve in my outbox that hadn't actually sent! I got scared and went back to Thunderbird after that, but I keep Geary installed and launch it from time to time to sync my mail.
- Email notifications just work. I get a bell on my terminal when a new email comes and my desktop environment (i3m) shows a highlighted xterm and a highlighted workspace so that I know that I have a new message.
- Excellent multi-account support. I have 4 email accounts and I can seamlessly move messages between them.
- It had a single maintainer who disappeared, someone else took over who disappeared, and now there is a new maintainer.
- The keybindings are relatively simple (n for next and p for previous) but the arrow keys and mouse also work.
- You can view html emails using w3m or lynx or whatever.
It supports standard features such as choosing your own editor to compose emails (default is nano, which is a successor of pico, which was the editor used by pine), filtering a message to a program (for example, to git apply patch), filter a message before sending, multiple ways to display threading, and so on. It has working support for signing and encrypting messages, decent support of reply templates. It has really really good documentation available in a context sensitive manner.
I sometimes feel that alpine/pine doesn't get as much love as other TUI email clients.
Have you tried Postbox? It's cross-platform Mac/Windows, native non-Electron (actually forked from Thunderbird long ago), supports multiple accounts, lots of keyboard shortcuts & paid non-subscription product developed by a company. I've been using it ever since Eudora died, it's the closest I've found to that Eudora power user workflow. It's a GUI app though, not a terminal app.
This can be easily fixed. Try using Evolution for a while and you never complain about search issues with Thunderbird. In fact, you will praise Thunderbird for its search features. If still something is lacking, install recoll on your system to find stuff.
I would pay for an email client too.
Time for someone to write an Electron-based update to the venerable "biff"[1] program.
* Notifications can be configured to do pretty much whatever you want (by invoking a command when new mail arrives)
* Multi-account support works well (currently have it hooked up to my personal and work accounts simultaneously)
* Developed by a community
* The visual component of HTML mail is irrelevant 99% of the time. A reasonable textual interpretation can be generated by piping the message through `w3m --dump`, a process which can happen automatically inside mutt when viewing those messages with no action required on your part. If you absolutely must see the formatted message with images and such, this is only a keystroke away.
There's a lot of initial configuration to do, granted, but you only need to do it once. Then you stick your mutt directory up on github or similar, and never need to do it again. Setting up a new or different machine is a clone away.
You can learn the initial keybinds in a couple hours (it's a lot simpler than vim), and I think you'll be blown away once you get proficient at it.
This may be a bit extreme, but after many years, I think all GUI mail clients suck. Email is primarily a textual medium at the end of the day.
That, and Mutt's the only thing I can think of where the expected features of a mail client work with reliability. Putting up with Thunderbird's speed/stability or Outlook's stability/searching isn't something we should have to do in 2019.
I think I will do that.
> Notifications can be configured to do pretty much whatever you want (by invoking a command when new mail arrives)
My understanding was that was pretty trivial to have going using notify-send and aplay
https://neomutt.org/feature/new-mail
> Multi-account support works well (currently have it hooked up to my personal and work accounts simultaneously)
Admittedly when I looked at it was pre neomutt days, I seem to remember there being a special sidebar patch that upstream refused to use.
https://www.youtube.com/watch?v=mPiQuWbF57M Mutt Wizard Published on Apr 25, 2019
In that video he demonstrates a loose script that he's developed https://github.com/LukeSmithxyz/mutt-wizard, it might be a good way for me to dip my feet in it and learn about all the components.
https://www.youtube.com/watch?v=hvc-pHjbhdE he did a video on calcurse too..
Sorry for the gaudy 4chan-style meme stuff. That's not my thing either but the videos are very succinct and he seems to be a good speaker.
> Developed by a community
Yes, this important to me and more likely to make me help out.
> The visual component of HTML mail is irrelevant 99% of the time. A reasonable textual interpretation can be generated by piping the message through `w3m --dump`, a process which can happen automatically inside mutt when viewing those messages with no action required on your part. If you absolutely must see the formatted message with images and such, this is only a keystroke away.
Very true, most of the email i receive is plain text, sometimes its not, but with minimal formatting. Theoretically it should be possible to view these HTML emails in Firefox should it not?
> There's a lot of initial configuration to do, granted, but you only need to do it once. Then you stick your mutt directory up on github or similar, and never need to do it again. Setting up a new or different machine is a clone away.
This.... the main reason I like plaintext configs.
and I'm right there with you about being willing to pay. Thunderbird is what I use, but I'm always asking myself if there's a better way.
Do you consider Xaw scrollbars a feature? They feel totally inconvenient to use with their weird "the position you click at is the amount to scroll and the button to use is the direction to scroll" behavior. The only way i use such a scrollbar myself is with middle clicking since that is the only way i find them usable.
Not touching a mouse is a big plus. It may not bother you now but it probably will in a few years.
I guess you could argue that with the recent-ish rise of new CLI-friendly languages and frameworks like Go, Rust and Node that the people are reinventing the wheel in terms of terminal based tooling. However there has always been a strong undercurrent of people favouring the terminal for most types of work (myself included).
Immediate advantages, at least for me:
- a possibility to use proportional fonts, it's more pleasant for me and increases content density
- borders and other decorations could be smaller, increasing density
- smooth scrolling could be implemented, which is nice
- it could better integrate with desktop environment
Possible and very much desired extensions:
- basic image and video support
- possibility to use different font sizes
It would still be limited to a coarse grid, but that's what makes development easy.
I never looked beyond superficial it's possible or easy enough to do. I also don't have much experience, beyond basics with ncurses.
I, for one, cannot get enough of this. Faced with the choice of a performant and full-featured GUI and a slightly slower and worse TUI, I get to chose the text interface 100% of the time. It is so much more convenient!
Sadly this obsessive search for the ultimate workflow becomes a goal unto itself, leading to a life-long unsuccessful and unsatisfying search that is doomed to fail.
Meanwhile, in the real world GUIs have long superseded any text-based UIs, speciality tasks aside. E-mail is not a special task...
Instead TUI's work just fine for a lot of things while consuming less of your computers resources as well as being easy on your eyes and state of mind (no hectic blinking and notification banners and sounds distracting you from everything you do).
Just because we have more resources and faster computers doesn't mean we should max them out. Use less and you could have a device with enormous battery duration, blazingly fast and easy on the mind.
They even support mouse interaction and enable me to work for some hours with an old thinkpad before the battery dies.
With mail it's something different in my opinion. While it was easy to get used to VIM, nmtui, newsbeuter etc. I could never get my head around mutt.
I hate to use Thunderbird because of the UI/UX and some missing features and I miss the seamless integration into the OS (click on a date in a mail to create an appointment in your calendar*) but it's the only good working mail client out there I know.
Mailspring/Nylas has a really nice interface but as another user wrote it wants to steal your credentials and I don't like that.
Electron is okay as long as it helps providing a better UX, for me that is one of the most important features besides stability & security.
As a calendar app "MineTime" is the best I've seen out there so far and sometimes I wish I'd have a bunch of apps like these for a great "FOSS Desktop Experience".
@author: Great work - hope you create something like mutt and alpine that can enrich the ideas in the world of TUI mail clients.
In comparison a GUI application would just draw a filled rectangle. For a local X11 application or OpenGL application this may even done as a hardware accelerated operation without even touching any pipes.
To me the "graphical" side of a TUI (which is pretty much most of it) sounds way more heavy than the equivalent of a GUI.
But I noticed with an old thinkpad (x220) that I can reduce overall resource consumption and prolong battery life just by switching everything I can to a more terminal-centered workflow.
Ranger consumes less than dolphin, I use NMTUI because i3wm doesn't have a clickable task bar item for configuring WiFi (at least in my setup) and VIM/NVIM consume less than VSCode, IntelliJ, Atom or other editors.
Clearly there is a difference when you compare an electron app to some other running in the JVM or natively but in the end I have the feeling that terminal apps run better and faster.
Another very important thing in my opinion is the possibility to use these apps via SSH which is still my preferred way to remotely use computers (no VNC, RDP, teamviewer etc.).
Terminal-based interfaces predate GUIs and have never really stopped being popular among a specific crowd. Perhaps they are gaining more traction now because of all the warts that current popular GUI frameworks have, but it is by no means a new development that is suddenly happening.
Why I like it? Well, if you're a Emacs user and you can get everything to work with Emacs-esque keybinds that's great. Same with vi(m) keybinds. With Mutt, its a matter of setting EDITOR right and you can compose your e-mails with vi(m) (yes, you could set EDITOR to something more nefarious ;). You don't get to make such choices with a GUI e-mail client.
Email and TUI are such a natural fit. Make it work with your favorite editor and most nerds will switch.
$ inbox
(shows the first 10 emails in the inbox)
$ search from:john
(shows emails from john with numbers)
$ reply 4
(opens up vi to edit a reply to the email #4)
...
I've been dreaming a client like this for decades, and actually started developing it, but the development is stagnating for now (due to the spec changes and other priorities).https://github.com/aligrudi/neatmail
Or mother (and its, uh, "mother", nedmail) if you're a Plan9 person:
In macOS, however, it is trivial to pass it to quickview, which can display most anything.
I wonder how it compares? I guess both are pretty alpha at the moment.
The result was a client-core written in C++ with most of the UI setup and configuration handled via lua:
Woohoo! Hope this project gets a lot of love and support, because this has always been my preferred way to view threads.
Can anyone recommend a more complete Linux mail client (TUI or GUI) that works this way, akin to Gmail's conversation view? Thunderbird theoretically can with some extensions but I've never quite managed to get it to work right.
My other issue with switching to a TUI mail client would be that piping html mail to w3m and replying to it in plaintext (or writing html by hand in response) just never seemed robust enough to deal with a wide cross section of office worker humanity and their image/formatting/table-laden mails... Ah well, a man can dream.
In my experience, lynx is superior for this task. You can use this line in your ~/.mailcap:
text/html; lynx -stdin -dump -force_html -width 70; copiousoutput; description=HTML Text; test=type lynx >/dev/nullTUI's are just a very restricted type of GUI's. These restrictions make the devs focus on what is important, because there is literally no room for bullshit. These UI's pack more punch per pixel and thus make for a more productive experience - if you're so inclined.
While I like true CLI TUIs, I can also live with TUI-like interface in the browser. I just like the style of them, the compactness, the cleanness. They will never go out of style. They are too productive.
https://github.com/pazz/alot https://alot.readthedocs.io/en/latest/
Alot is a terminal-based mail user agent for the notmuch mail system. It features a modular and command prompt driven interface to provide a full MUA experience as an alternative to the Emacs mode shipped with notmuch.
Recent versions of Emacs support a modern text-shaping engine, Harfbuzz, when run in GUI mode, which is another option for emacs-based mail clients. I guess it's maybe not technically a TUI in this case, but emacs mail clients are still very TUI-like, even when run in non-terminal emacs.
(By the way, cheers for participating on the fediverse, and not legacy silos!!)
> An error occurred during a connection to meli.delivery. SSL received a record that exceeded the maximum permissible length. Error code: SSL_ERROR_RX_RECORD_TOO_LONG
4 syllables, doesn't roll off the tongue
Ehhhh
Also, I can't figure out a way to sign up to https://git.meli.delivery so I can create an 'issue.
> cargo build
to just compile, or
> cargo run
to compile & run
Otherwise you'd be compiling it in debug mode (which is really slow for most projects).