From: Patrick Totzke <patricktotzke@googlemail.com>
To: notmuch-list <notmuch@notmuchmail.org>
Subject: a python terminal gui?
Date: Fri, 20 May 2011 11:47:41 +0100 [thread overview]
Message-ID: <1305888097-sup-2343@optimusprime> (raw)
[-- Attachment #1: Type: text/plain, Size: 3228 bytes --]
Hi all,
First of all, Thanks to everybody involved in the project. Using notmuch is
good fun and I totally agree that the spin-off/rewrite of sup is a great idea.
However, as a vim user I feel that the one thing that's truly missing is a
maintainable, feature-rich commandline GUI. Let's change that.
I'm aware of existing proposed guis: vala-notmuch, notsomuch, I have also seen
a minimal non-oop python gui that doesn't use the python bindings and whose name
I forgot.
This is a proposal for a terminal gui, written in python.
Currently, it is more a sketch of a framework, so let me explain the key ideas here:
* I use python because I personally am heavily biased in the python vs. ruby discussion:
I've been working with python for a while and have never used ruby anywhere else than
for my sup-mail config. I find rubys syntax highly unintuitive, had (and still have)
problems to install/work with up-to-date ruby-gems on my ubuntu system.
Also, I read somewhere™ that sup is based on a email library that is no longer maintained.
I know these are only my personal, non representative and maybe uninformed impressions,
but I have the feeling that I'm not alone here.
On the other hand, cnotmuch and all other libs I (plan to) use in this project
were easy_installed without any problems.
* I want a gui that looks and feels like sup, without the ugly parts.
* use libraries wherever possible. Therefore, instead of
programming raw curses, I go for the urwid toolkit: It's a bit like gtk,
you create a bunch of widgets and put them together in a tree-like structure
and the library handles redrawing the screen and redirecting key presses etc.
I'm aware of some arguments against urwid (PEP8 compatibility, slow py3k awareness),
but consider the advantages:
- no boring and error-prone ncurses hacking
- possibly multiple frontends (curses, web)
- correct display of unicode chars
- a lot of ready-made widgets are available (textboxes, selectable lists). There's even
an additional widget-lib called urwid-sat that defines widgets for password inputs etc.
- ready made colour theming for mono/16/256 colours.
one might also look around for a mutt/abook contact lib
You can find the code at here: https://github.com/pazz/notmuch-gui
Obviously, there is a lot that's missing, but I think having this framework makes it easier
for anyone to contribute. For example, to be able to display mails,
one could code a urwid.Widget that can display a given email.message.Message.
That widget will then be used in a widget that displays a whole notmuch.thread
which we could put inside a new buffer class that extends my ng.buffer.Buffer
So far, there are only two modi (ng.buffer.Buffer subclasses):
a bufferlist and one to display thread search results.
I consider all of this to be a proof-of-concept, any part of this proposal
is up for discussion. I'd be interested in any feedback whatsoever, and happy
to delegate work to anybody willing to contribute. I'm aware that the code
is not pretty, probably not the sleekest oop design and non-conforming
with a lot of conventions. Hit me :)
Cheers,
/pazz
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
next reply other threads:[~2011-05-20 10:47 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-20 10:47 Patrick Totzke [this message]
2011-05-20 22:00 ` a python terminal gui? Carl Worth
2011-05-21 14:53 ` Patrick Totzke
2011-05-21 18:50 ` Patrick Totzke
2011-05-23 17:17 ` Carl Worth
2011-05-24 8:28 ` Sebastian Spaeth
2011-05-24 20:10 ` Carl Worth
2011-05-21 1:42 ` Mueen Nawaz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://notmuchmail.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1305888097-sup-2343@optimusprime \
--to=patricktotzke@googlemail.com \
--cc=notmuch@notmuchmail.org \
--cc=patricktotzke@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).