Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id 273C6429E25 for ; Sat, 21 May 2011 07:54:05 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: -0.799 X-Spam-Level: X-Spam-Status: No, score=-0.799 tagged_above=-999 required=5 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wIo4ktJ-eEjx for ; Sat, 21 May 2011 07:54:03 -0700 (PDT) Received: from mail-ww0-f45.google.com (mail-ww0-f45.google.com [74.125.82.45]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by olra.theworths.org (Postfix) with ESMTPS id CD048431FD0 for ; Sat, 21 May 2011 07:54:02 -0700 (PDT) Received: by wwi36 with SMTP id 36so4008326wwi.2 for ; Sat, 21 May 2011 07:54:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:subject:from:to:in-reply-to:references:date :message-id:user-agent:content-transfer-encoding:mime-version :content-type; bh=t566TedtM6hc/5J+UPD4xUGR1HEgujfgwbHyKyVCglw=; b=TPoCCu60d1dONsykGdVtmro2HWM/tII/NGNP+swRrUS5qR8fZI9eUfKcKKIQv/pyIU 9CYr+X5M1pOZ32jKOynz7rmUCA3ycNVOXjK8DZlThlulZdZFE6EiXgFAk5YsCHL7HCpj GHLC6l5Ii7S14cEBap1XX/gh5981sbsnaNQJY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=subject:from:to:in-reply-to:references:date:message-id:user-agent :content-transfer-encoding:mime-version:content-type; b=RO+avPu1ITqqU2my3pIF3+fgMEjPCxwsv6Zxfu7jAQ0XedT6H2waINa0ZmKzT+6vAg U6h0Pwlz3atT/8Y+BnGpZ9vpnrgkfkwvBjQKBqP3xlploZCUUdtfsJQ/KxEm3o3MtLKX RhiAfYE9EDy8YKfnV8JP8dnPci0HQG1ducmAE= Received: by 10.216.203.195 with SMTP id f45mr647147weo.89.1305989640601; Sat, 21 May 2011 07:54:00 -0700 (PDT) Received: from localhost (cpc1-sgyl2-0-0-cust47.sgyl.cable.virginmedia.com [80.192.18.48]) by mx.google.com with ESMTPS id m15sm2351818weq.2.2011.05.21.07.53.58 (version=TLSv1/SSLv3 cipher=OTHER); Sat, 21 May 2011 07:53:59 -0700 (PDT) Subject: Re: a python terminal gui? From: Patrick Totzke To: notmuch@notmuchmail.org In-reply-to: <87pqndoww8.fsf@yoom.home.cworth.org> References: <1305888097-sup-2343@optimusprime> <87pqndoww8.fsf@yoom.home.cworth.org> Date: Sat, 21 May 2011 15:53:56 +0100 Message-Id: <1305989550-sup-9586@brick> User-Agent: Sup/git Content-Transfer-Encoding: 8bit MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-1305989636-651577-22279-1925-1-="; protocol="application/pgp-signature" X-Mailman-Approved-At: Sat, 21 May 2011 22:53:56 -0700 X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 May 2011 14:54:05 -0000 --=-1305989636-651577-22279-1925-1-= Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Again, Excerpts from Carl Worth's message of Fri May 20 23:00:23 +0100 2011: > > However, as a vim user I feel that the one thing that's truly missing= is a = > > maintainable, feature-rich commandline GUI. > = > "... that's not implemented in emacs" you mean? ;-) of course :D > It's funny to me that you used the name "notmuch-gui" since I've always= > understood the 'G' in GUI to indicate "graphical", to distinguish from > non-graphical terminal interfaces like you propose here. I always intuitively understood "graphical" as anything visual. But your right, http://en.wikipedia.org/wiki/Graphical_user_interface suggests that a curses-like interface is not a GUI nor a CLI. Anyhow, I agree that at some point I'll need a real name. > I believe all new code should be doing "import notmuch" rather than > "import cnotmuch", and if there is any package that installs bindings > that work as "cnotmuch" we should get those updated right away. Thanks for the clarification. I assume I'll always get the current bindings distributed with notmuch itself. A make target inside notmuch/bindings/python would indeed be helpful. > > You can find the code at here: https://github.com/pazz/notmuch-gui = > I was a bit surprised to see so many results in my initial view. I'd > expect a default view to be tag:inbox rather than tag:unread. (I didn't= > realize I had over 100 thousand messages with the unread tag, but > apparently I do.) Perhaps that's a sup default that I've long since > forgotten? Yep, its an artefact of my debugging behaviour. Having the initial buffer show the inbox makes total sense and is also what sup does. > * The interface blocks for a while when searching for something (like= > "tag:unread" in my case) that returns a *lot* of results. Are you > somehow sucking in all the results immediately rather than just wha= t > you need to dill the current screen? That is surprising! I only fill the screen by iterating over an initial part of the iterator returned by Query.search_threads() I do a second query to count the messages by Query.count_messages(), but I'd guess that this translates to some sort of "SELECT COUNT" and should also be fast. Maybe there's some copying going on = at lower levels? > * I was a bit surprised that 'i' and 'u' kept opening new buffers > rather than switching to an existing buffer. It shouldn't be like this, I agree. I'm just annoyed that sup treats the inbox view different from other searches, in terms of keybindings. But nevertheless one could have "I" point to a unique inbox search buffer. > * The '/' key didn't seem to do anything for me, so I wasn't able to > actually do any custom searches. This is because it really is "\" :P that was a typo in the README. > It looks like a fine start to me. Please let me know if there's anythin= g > I can do to help with this, (in terms of hosting the code or anything > else). Thanks, that's helpful. I guess it would make sense to place this under notmuch/contrib at a later point if it gets usable. Ah I have question regarding "toplevel" messages in threads: How can it be that a mail that is not the one that started a thread is contained in thread.get_toplevel_messages() ? The only thing I can think of is that a user somehow forced two threads to become one. Take this very thread for example. Why do I get Mueen Nawaz's reply as a toplevel message? does this mean that messages header has incorrect Reply-to headers set? @Mueen Nawaz: It's a good idea to post this on the wiki. Will do. Cheers, /p --=-1305989636-651577-22279-1925-1-= Content-Disposition: attachment; filename="signature.asc" Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iEYEARECAAYFAk3X0gQACgkQlDQDZ9fWxaoMkQCgzX4RQU6FjA4hYmjbR2yMMSJY o7MAoMWFtps2ZoLqnNZGDY2LTY7gWSXk =fLnp -----END PGP SIGNATURE----- --=-1305989636-651577-22279-1925-1-=--