~craftyguy

Oregon, US

~craftyguy/caerbannog-devel

Last active a month ago

~craftyguy/caerbannog-announce

Last active 4 months ago

~craftyguy/ridecasa

Last active 11 months ago

~craftyguy/public-inbox

Last active 1 year, 10 months ago
View more

Recent activity

[PATCH] widgets/terminal: Only call vterm.ScreenCell.Attrs once in styleFromCell 5 days ago

From Clayton Craft to ~sircmpwn/aerc

This fixes a substantial performance issue when scrolling emails with
long/complicated contents, where scrolling down a single line can take
something like hundreds of ms before the screen is updated to reflect
the scroll. It's really bad if the email has lots of columns, e.g. like
if it's an html email that was passed through a filter (w3m, etc) to
render it.

Using pprof, I found that the multiple calls to vterm.ScreenCell.Attrs()
in styleFromCell were really really expensive. This patch replaces them
with a single call.

Here's a before and after with a simple, but very manual test of opening
a large email with contents that went through a w3m filter and
continuously scrolling up and down over and over for ~30 seconds:
[message trimmed]

Re: [PATCH] passlist: show the gpg dialog in a separate thread a month ago

From clayton craft to ~craftyguy/caerbannog-devel

Thanks, but I think I'm going to go with the patch I posted yesterday, since it
limits what runs in a separate thread (even if it's not as succinct as your
patch here). What do you think?

[PATCH v2] passlist: move gpg decryption to a thread so UI is not blocked a month ago

From Clayton Craft to ~craftyguy/caerbannog-devel

This uses the concurrent.futures interface to threading. I chose to only
stick the call to gpg decrypt into a thread, to reduce any chances of
thread unsafe stuff from being included (by way of gtk objects/state,
etc) that might happen if copy_pass or _decrypt_file were in a separate
thread.

This also includes a polling loop that basically yields to gtk's
mainloop while waiting on the thread to complete.
---
rebased, and reverts to using gpgme instead of python-gnupg

 caerbannog/passlist.py | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)
[message trimmed]

[PATCH 4/4] passlist: disable list UI when decrypting/prompting pinentry a month ago

From Clayton Craft to ~craftyguy/caerbannog-devel

The user can click around now that the UI isn't blocked, and this can
result many passphrases being copies over each other in the clipboard
(after they do eventually unlock with pinentry), and other strange
behaviors.
---
 caerbannog/passlist.py | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/caerbannog/passlist.py b/caerbannog/passlist.py
index f6bddcc..444cb9a 100644
--- a/caerbannog/passlist.py
+++ b/caerbannog/passlist.py
@@ -171,7 +171,12 @@ class PassList(Gtk.ListBox):
        # order of this conditional is important, since PassItem is derived
[message trimmed]

[PATCH 3/4] passlist: move gpg decryption to a thread so UI is not blocked a month ago

From Clayton Craft to ~craftyguy/caerbannog-devel

This uses the concurrent.futures interface to threading. I chose to only
stick the call to python-gnupg's decrypt into a thread, to reduce any
chances of thread unsafe stuff from being included (by way of gtk
objects/state, etc) that might happen if copy_pass or _decrypt_file were
in a separate thread.
---
 caerbannog/passlist.py | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/caerbannog/passlist.py b/caerbannog/passlist.py
index 893eedf..f6bddcc 100644
--- a/caerbannog/passlist.py
+++ b/caerbannog/passlist.py
@@ -1,10 +1,12 @@
[message trimmed]

[PATCH 2/4] README: update with gpg module change a month ago

From Clayton Craft to ~craftyguy/caerbannog-devel

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 2806902..12a43da 100644
--- a/README.md
+++ b/README.md
@@ -41,7 +41,7 @@ Run-time dependencies:
- anytree (Python module)
- fuzzyfinder (Python module)
- gobject (Python module)
- gpgme (Python module)
- python-gnupg (Python module)
[message trimmed]

[PATCH 1/4] passlist: replace gpgme with python-gnupg a month ago

From Clayton Craft to ~craftyguy/caerbannog-devel

This moves the initialization to the passitem class, so it's only
initialized once instead of every time the user tries to decrypt a
password.

python-gnupg seems to be more maintained than the gpgme stuff, and is a
wrapper to gpg so it supports passing args straight to gpg, which might
be handy later.
---
 caerbannog/passlist.py | 37 ++++++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 17 deletions(-)

diff --git a/caerbannog/passlist.py b/caerbannog/passlist.py
index 4967341..893eedf 100644
--- a/caerbannog/passlist.py
[message trimmed]

[PATCH 4/4] readme: remove dependency on libnotify a month ago

From Clayton Craft to ~craftyguy/caerbannog-devel

---
 README.md | 1 -
 1 file changed, 1 deletion(-)

diff --git a/README.md b/README.md
index c9016b7..2806902 100644
--- a/README.md
+++ b/README.md
@@ -36,7 +36,6 @@ Build-time dependencies:
Run-time dependencies:

- libhandy 1.x
- libnotify
- pinentry-gnome
[message trimmed]

[PATCH 3/4] passlist: replace libnotify with in-app notifications a month ago

From Clayton Craft to ~craftyguy/caerbannog-devel

---
 caerbannog/passlist.py | 26 +++++++-------------------
 1 file changed, 7 insertions(+), 19 deletions(-)

diff --git a/caerbannog/passlist.py b/caerbannog/passlist.py
index 651960f..525edcb 100644
--- a/caerbannog/passlist.py
+++ b/caerbannog/passlist.py
@@ -10,9 +10,7 @@ from .logger import Logger
gi.require_version('Gdk', '3.0')
gi.require_version('Gtk', '3.0')
gi.require_version('Handy', '1')
gi.require_version('Notify', '0.7')
from gi.repository import Gdk, Gio, Gtk, GLib, GObject  # noqa: E402
[message trimmed]