Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: Console based email client with Lua scripting (lumail.org)
78 points by stevekemp on July 9, 2017 | hide | past | favorite | 22 comments


Since we are on the topics of email clients. I just started migrating out of the gmail web client, and I think this is a very interesting project.

However, I just started using https://notmuchmail.org/ . It has a C library (and shell, python, haskell etc. bindings) with loads of clients (emacs, vim, web, etc.).


> In order to use Notmuch, you will need to have your email messages stored in your local filesystem, one message per file.

One message per file? That's frustrating.

Doesn't really matter for ext4 drives, but I still have some ext3 ones, and past 10,000 files in a directory, performance really starts to suck.


What kernel are you running? The last kernel to use the ext3 driver to mount ext3 volumes by default is no longer maintained, as far as I'm aware. The ext3 driver was completely removed for 4.3. All kernels since 2.6.28 can mount ext2 with the ext4 driver, and I think all kernels with ext4 support can mount ext3 with the ext4 driver.

If you're using the ext4 driver, you can enable the dir_index feature (which I think is what you're looking for) with tune2fs.

You can do a proper conversion in a relatively short time, if it's a problem with the on-disk format. Pretty sure that ext4 is mainly just ext3 with journaling and a generally much better implementation.


A change to ext4 would be quite painless, but I'm not allowed to manage the drives on my work machine, which is unfortunate.


Out of interest, is there a reason why?

I get not wanting to bother with migrating old drives full of data but I would assume that emails are to be stored on your main system(s) with more current file systems.


ext3 on my work machine. Something I'm not allowed to change. (Hopefully the situation will change somewhere in the next 12 months).


Posting this here because it has been mentioned in some of the recent mutt-related stories, and I just made a new release.

The recent release doesn't have too many changes, primarily because it is pretty stable & reliable. But a new release is always time for a minor celebration.


recent mutt-related stories

In the past month, I find only this one:

Switching to the Mutt Email Client

https://news.ycombinator.com/item?id=14567074

263 points by ingve 23 days ago | 241 comments

Am I missing others?


I remember there being a few over the past few months because, after a few years mulling over it, I finally made the leap to mutt based on them. Also remember lumail being mentioned, but I didn't try it.


Hmm... If you remember which submissions, I'd be interested in knowing what they are. I need to find something other than Thunderbird.


The posts didn't convince me to switch, they just reminded me it existed. I'm using mutt specifically because I want far less functionality in my email client, probably not for everyone. No contact/calendar integration, moving things is a pain, searching is a pain. I'm sure there are good solution for these issues but I just want to get emails in an inbox and send them out an outbox. If I need more, I move the useful information from the email to a tool better suited for the job (e.g. file system, database, version control).


Made me want to try my dillo+lua idea again ..


That would be great to see!


It works, and by works there's lua.h somewhere... hum.

I also linked sqlite to remove dillo tiny bookmarking feature. In a way I wanted to make the browser a tinier brick; emacsish through lua, so you can improve it as you see fit.


Why should I choose your project instead of Neomutt?


If you're happy with Neomutt then there is probably no single reason to switch. But if you're just an old-style Mutt user, or you've been using pine, etc, then you might appreciate the flexibility.

The client is a little opinionated, and different, because it is purely modal. But because Lua is used to present the core UI it is possible to change things in fun ways.

For example in mutt you can change the format that is used to display the list of messages in a folder. lumail allows the same, but it allows more. For example if you have twitter notifications you'll see the "From" header is like this:

     Bob Smith (via Twitter)" <notify@twitter.com> 
I have this function defined to change that:

     function on_cleanup_name(name)
        -- Remove "(via Twitter)" if present
        name = string.gsub(name, "%(via Twitter%)", "" )
        -- Remove leading/trailing spaces.
        name = (name:gsub("^%s*(.-)%s*$", "%1"))
        -- more stuff here ..
        return(name)
     end
That's perhaps not a terribly useful thing to do, but it is little things like that which add up to much more flexibility.


How are scripts used in this thing? I'm just curious. Do you use scripts to set auto-responders? Manual spam filtering? What?


The core application is a little C++ shell for reading messages, Maildirs, etc, and drawing the screen. Everything else is built upon that.

So Lua is used for pretty much everything:

* Drawing the UI.

* Responding to key-presses.

* Responding to events.

You can write scripts to do many things, such as training messages as spam, deleting all messages from "Bob" which are unread.

I have a bunch of servers that get backed up every day, I have a script which deletes all but the most recent 100 messages in the folder "Automated.Backups" whenever I open it, for example.


I love everything Lua. Going to have to try this out tonight.


> With the exception of GNU Emacs none of the console clients I examined had any built in support for scripting with a real language.

"mh"[0] might be interesting to some.

[0] https://en.m.wikipedia.org/wiki/MH_Message_Handling_System


Wow so many errors. I'm guessing this is still early in it's development?


The domain was registered back in 2013, so it has been around a while. The CI shows it working just fine:

https://travis-ci.org/lumail/lumail

If you're seeing errors please do file a bug report with all the details.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: