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") |                            (when (string= event "finished\n") | ||||||
|                              (message "%s process finished." process)))))))) |                              (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) | (provide 'functions) | ||||||
|  |  | ||||||
|  | @ -65,7 +65,10 @@ | ||||||
| 
 | 
 | ||||||
|       ;; Launch applications with completion (dmenu style!) |       ;; Launch applications with completion (dmenu style!) | ||||||
|       (exwm-input-set-key (kbd "s-d") #'ivy-run-external-command) |       (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 |       ;; Toggle between line-mode / char-mode | ||||||
|       (exwm-input-set-key (kbd "C-c C-t C-t") #'exwm-input-toggle-keyboard) |       (exwm-input-set-key (kbd "C-c C-t C-t") #'exwm-input-toggle-keyboard) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue