Giter Site home page Giter Site logo

jugglerchris / lumail Goto Github PK

View Code? Open in Web Editor NEW

This project forked from lumail/lumail.obsolete

0.0 2.0 0.0 2.56 MB

A console-based mail-client with integrated Lua scripting support.

Home Page: http://lumail.org/

Lua 7.26% C 6.54% C++ 83.11% Perl 1.32% Makefile 1.56% Shell 0.22%

lumail's Introduction

Build Status

Lumail

lumail is a modal console-based email client, which features extensive scripting support, via an embedded Lua intepretter.

You'll find a quick introduction to using lumail on the lumail website, along with screenshots.

In brief lumail is a modal application, so you're always in one of three states:

  • Interacting with lists of mailboxes.
  • This is the mode you'll start in.
  • Default keybindings include:
    • Press a to view all mailboxes.
    • Press n to view mailboxes containing new mail only.
    • Move around via j/k//.
    • You may open the single selected folder by pressing RETURN.
    • Or you may toggle the selected state by pressing SPACE and jumping into index mode with I when you've selected all the folders you care about.
  • Interacting with lists of messages. These messages may come from more than one folder.
  • Default keybindings include:
    • Press a to view all messages.
    • Press n to view new messages only.
    • Move around via j/k//.
  • Interacting with a single message.
  • Default keybindings include:
    • Move around via j/k.
    • Delete a message with 'd'.
    • Reply to a message with 'r'.

Building/Installation

The application is developed in C++ and has intentionally minimal dependencies:

  • lua 5.1 - The scripting language.
    • lua 5.2 is also supported, but is not yet the default.
  • libncursesw - The console input/graphics library.
  • libgmime-2.6 - The MIME-library.
  • libglibmm-2.4 - The library we use for UTF-8 aware strings.
  • libpcre3 - The regular-expression library.

Upon a Debian GNU/Linux system you may install all required packages with:

 # apt-get install libncursesw5-dev liblua5.1-0-dev lua5.1 \
     libgmime-2.6-dev libpcre3-dev libglibmm-2.4-dev

There are binary packages for Debian GNU/linux, compiled by the author.

Although we might become more complex in the future the code currently builds via a simple Makefile, and running make with no arguments should be sufficient.

When you run make two versions of the main lumail binary will be built, one with debugging information present, and one without. Building both at the same time is useful as it allows more diagnostics to be made if/when bugs are found.

There are two choices you can make when building lumail:

  • Whether to enable domain-socket support.
    • This allows commands to be sent to a running lumail instance, over a unix domain socket.
    • NOTE Even if support is compiled-in there will be no socket by default, instead your configuration file will need to invoke the bind_socket() primitive to initiate the listener.
  • Which version of Lua to build against (5.1 or 5.2)
    • Run "make LUA_VERSION=5.1" or "make LUA_VERSION=5.2" to choose explicitly.
    • NOTE: For Fedora distributions you will need to run: "make LUA_VERSION=".

Once compiled the client may be executed directly, but you will need to supply a valid (Lua) configuration file:

 $ ./lumail --rcfile ./lumail.lua

Installation should be as simple as copying the supplied configuration file to /etc/lumail.lua and copying the binary to /usr/local/bin. If you run make install this will be done for you.

Configuration & Lua-Primitives

If you examine the supplied lumail.lua configuration file you'll get a flavour for the configuration.

The main part of the configuration is to point the mail-client at your local Maildir location, from which all sub-folders will be determined at run-time.

At startup the following files are loaded and executed, if they are present:

  • /etc/lumail.lua
  • /etc/lumail.d/*.lua
  • ~/.lumail/config.lua

If zero configuration files are loaded then the client will abort with an error message. This is to ensure that the keymap(s) are defined, etc.

Once you have configuration file you can use any of the supplied Lua primitives to do interesting things. The online Lua examples are a good starting point for reference.

Further Information

You may find further information upon the lumail website:

Contributing

I welcome bug reports, and pull-requests.

If you submit two or more functional patches I'm happy to give you direct commit access to the repository.

Steve

lumail's People

Contributors

iltempo avatar jturner avatar jugglerchris avatar kain88-de avatar olafura avatar skx avatar terceiro avatar torstehu avatar trou avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.