[[!img notmuch-logo.png alt="Notmuch logo" class="left"]] # Notmuch Language Bindings [DRAFT] The Notmuch library, `libnotmuch`, can be used from many programming languages using the Notmuch language bindings. The [[command line interface|manpages]] and the [[email clients and frontends|frontends]] are based on the language bindings. [[!toc levels=2]] ## C and C++ `libnotmuch` is a shared C library. [The API](https://git.notmuchmail.org/git/notmuch/blob/HEAD:/lib/notmuch.h) The Notmuch command-line interface is based on the C library. ## Python Notmuch includes Python bindings to the Notmuch shared library. Please refer to the nice and extensive [Notmuch Python API documentation](http://notmuch.readthedocs.org/projects/notmuch-python/). The bindings are very simple to use. As an example, given you have the Python bindings installed (or simply set your PYTHONPATH environment variable to point to the .../bindings/python directory), this snippet will produce a list of mails matching the given expression: >>> import notmuch >>> db = notmuch.Database() >>> query = db.create_query('tag:inbox AND NOT tag:killed') >>> list(query.search_messages()) # doctest:+ELLIPSIS [...] [The source](https://git.notmuchmail.org/git/notmuch/tree/HEAD:/bindings/python/) ## Ruby [The source](https://git.notmuchmail.org/git/notmuch/tree/HEAD:/bindings/ruby/) The [client for vim](https://git.notmuchmail.org/git/notmuch/blob/HEAD:/vim/README) is in Ruby, so worth a look. ## Go [The source](https://git.notmuchmail.org/git/notmuch/tree/HEAD:/contrib/go/)