I am using pass as my main password manager. It is completely cli based under version control and gpg2 encrypted. But use pass only in the cli makes no sense, when you have browsers or other applications which are asking for a password. To get a more handy usage of pass and autotype function, we have to be a little bit creative.
rofi is a windows switcher and application launcher which is high configurable. I combined both in one script. To get the auto type feature I am using xdotool
which should be standard installed on every Linux machine.
Depend on the rofi.conf
you will get a nice password manager, which is full integrated in your system.
#!/bin/bash shopt -s nullglob globstar # switch for autotyping typeit=0 if [[ $1 == "--type" ]]; then typeit=1 shift fi # get all the saved password files prefix=${PASSWORD_STORE_DIR-~/.password-store} password_files=( "$prefix"/**/*.gpg ) password_files=( "${password_files[@]#"$prefix"/}" ) password_files=( "${password_files[@]%.gpg}" ) # shows a list of all password files and saved the selected one in a variable password=$(printf '%s\n' "${password_files[@]}" | rofi -dmenu "$@" -theme ~/dotfiles/i3/rofi.rasi) [[ -n $password ]] || exit # pass -c copied the password in clipboard. The additional output from pass is piped in to /dev/null if [[ $typeit -eq 0 ]]; then pass show -c "$password" | head -n1 2>/dev/null else # If i want to use autotype i save the user name and the password in to a variable # the actual password files are simple text file. # The password has to be on the first line, # because if you using `pass -i` the first line will be replaced with a new password passw=$(pass show $password | head -n1 ) uname=$(pass show $password | tail -n1 ) # xdotool types the username on the active spot (cli or inputfield from a browser) xdotool type "$uname" # type a TAB (for moving forward in browser input fields) xdotool key Tab # type the password in the active input xdotool type "$passw" xdotool key Tab fi
I'm using i3wm as window manager, so I can easily use short keys to activate my password manager.
bindsym $mod+p mode "password" mode "password" { bindsym p exec "/home/maren/dotfiles/scripts/passScript.sh" bindsym t exec "/home/maren/dotfiles/scripts/passScript.sh --type" bindsym Return mode "default" bindsym Escape mode "default" bindsym $mod+r mode "default" }
Top comments (0)