diff options
author | Vincent Ambo <mail@tazj.in> | 2018-06-06T07·46+0200 |
---|---|---|
committer | Vincent Ambo <mail@tazj.in> | 2018-06-06T07·46+0200 |
commit | 66e86d2546c8abdc22cc7333e85e50eef3408c3d (patch) | |
tree | 8364fee63c818f159ddb117e15eb1e8b13f73ddf | |
parent | be8d47257f1fa60e63e4ea6e76502011067a515d (diff) |
feat(functions): Add custom ivy-password-store function
The default `ivy-pass` function shells out to `pass` in such a way that using pinentry with emacs doesn't work, causing EXWM to freeze until `C-g` is hit, after which the password entry buffer pops up. That was very inconvenient - however, the new auth-source integration with pass works correctly and this commit introduces a new function and bindings for using the same functionality as before but doing the actual password-reading via auth-source.
-rw-r--r-- | init/functions.el | 20 | ||||
-rw-r--r-- | init/nixos.el | 5 |
2 files changed, 24 insertions, 1 deletions
diff --git a/init/functions.el b/init/functions.el index 07411396b27d..5ed9a06fd6fb 100644 --- a/init/functions.el +++ b/init/functions.el @@ -170,4 +170,24 @@ Including indent-buffer, which should not be called automatically on save." (when (string= event "finished\n") (message "%s process finished." process)))))))) +(defun ivy-password-store (&optional password-store-dir) + "Custom version of password-store integration with ivy that + actually uses the GPG agent correctly." + + (interactive) + (ivy-read "Copy password of entry: " + (password-store-list (or password-store-dir (password-store-dir))) + :require-match t + :keymap ivy-pass-map + :action (lambda (entry) + (let ((password (auth-source-pass-get 'secret entry))) + (password-store-clear) + (kill-new password) + (setq password-store-kill-ring-pointer kill-ring-yank-pointer) + (message "Copied %s to the kill ring. Will clear in %s seconds." + entry (password-store-timeout)) + (setq password-store-timeout-timer + (run-at-time (password-store-timeout) + nil 'password-store-clear)))))) + (provide 'functions) diff --git a/init/nixos.el b/init/nixos.el index a75695d0c8e3..431ba705c3bc 100644 --- a/init/nixos.el +++ b/init/nixos.el @@ -65,7 +65,10 @@ ;; Launch applications with completion (dmenu style!) (exwm-input-set-key (kbd "s-d") #'ivy-run-external-command) - (exwm-input-set-key (kbd "s-p") #'ivy-pass) + (exwm-input-set-key (kbd "s-p") #'ivy-password-store) + (exwm-input-set-key (kbd "C-s-p") '(lambda () + (interactive) + (ivy-password-store "~/.aprila-secrets"))) ;; Toggle between line-mode / char-mode (exwm-input-set-key (kbd "C-c C-t C-t") #'exwm-input-toggle-keyboard) |