3 KiB
password-store-ivy
A pass frontend based on Ivy, made primarily to use with EXWM and ivy-posframe. Types fields from entries.
Also take a look at Nicolas Petton's pass, password-store-ivy is designed as complementary to the Nicolas' package.
This package is made with Ivy because I need some fine-tuning like actions and turning off sorting in some completions, and Ivy happens to be the completion system I'm using now.
Installation
As the package isn’t yet available anywhere but in this repository, you can clone the repository, add it to the load-path and require the package. My preferred way is use-package with straight:
(use-package password-store-ivy
:straight (:host github :repo "SqrtMinusOne/password-store-ivy")
:after (exwm))
This package types stuff with xdotool, so you need to have that available in your $PATH.
Usage
Emacs' built-in password store integration has to be set up.
The only command is M-x password-store-ivy, which invokes Ivy to select an entry from the pass database. Available commands in the selection buffer:
M-a. Perform autotypeM-p. Type passwordM-u. Type usernameM-U. Type urlM-f. Select a field to type
Customization
There are a few parameters that control delays:
password-store-ivy-initial-waitcontrols the initial delay before starting to type a sequence (in milliseconds)password-store-ivy-delaycontrols the delay between typing characters (in milliseconds)
There is also password-store-ivy-sequences that determines the sequence of actions password-store-ivy performs.
It is an alist with the following required keys (corresponding to the basic actions):
autotypepasswordusernameurl
The values are lists of the following elements:
wait. Wait forpassword-store-ivy-initial-waitmilliseconds(wait <milliseconds>). Wait for<milliseconds>.(key <key>). Type<key>.(field <field>). Type<field>of entry.
For example, the starting values:
'((autotype . (wait
(field . "username")
(key . "Tab")
(field . secret)
(key . "Return")))
(password . (wait (field . secret)))
(username . (wait (field . "username")))
(url . (wait (field . "url"))))
In addition to the global override, sequences can be overriden per-entry with a field called sequence-<name>, where <name> is a key of password-store-ivy-sequences.
For example, here is an override to press Tab twice:
<pass> username: thexcloud@gmail.com url: <url> sequence-autotype: (wait (field . "username") (key . "Tab") (key . "Tab") (field . secret) (key . "Return"))