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.
This commit is contained in:
parent
be8d47257f
commit
66e86d2546
2 changed files with 24 additions and 1 deletions
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue