blob: 0cd60d25f8ba9bf630192a0c17894183e8097c8b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
{
perSystem =
{ pkgs, ... }:
{
packages.rofi-passmenu = pkgs.callPackage (
{
pkgs,
}:
pkgs.writeShellApplication {
name = "rofi-passmenu";
runtimeInputs = with pkgs; [
pass
rofi
xclip
xdotool
gnugrep
gawk
coreutils
libnotify
];
text = ''
#!/usr/bin/env bash
store_dir="''${PASSWORD_STORE_DIR:-$HOME/.password-store}"
get_passwords() {
echo "[+] Add New Password"
if [ -d "$store_dir" ]; then
find "$store_dir" -name "*.gpg" | sort | while IFS= read -r file; do
pass="''${file#"$store_dir"/}"
echo "''${pass%.gpg}"
done
fi
}
selected=$(get_passwords | rofi -dmenu -i -p "pass")
[[ -z "$selected" ]] && exit 0
if [[ "$selected" == "[+] Add New Password" ]]; then
new_path=$(rofi -dmenu -p "Enter path/name for new password:")
[[ -z "$new_path" ]] && exit 0
choice=$(echo -e "Generate\nManual" | rofi -dmenu -p "Password method:")
if [[ "$choice" == "Generate" ]]; then
pass generate "$new_path" 20
notify-send "Pass" "Generated password for $new_path"
elif [[ "$choice" == "Manual" ]]; then
new_pass=$(rofi -dmenu -p "Enter password:" -password)
[[ -n "$new_pass" ]] && echo "$new_pass" | pass insert -m "$new_path"
fi
exit 0
fi
action=$(echo -e "1. Type Password\n2. Type Username\n3. Copy Password\n4. Copy Username\n5. Show Password" | rofi -dmenu -i -p "$selected")
case "$action" in
"1. Type Password")
pass show "$selected" | head -n 1 | tr -d '\n' | xdotool type --clearmodifiers -fi -
;;
"2. Type Username")
pass show "$selected" | grep -i "^username:" | sed 's/^[^:]*:[[:space:]]*//' | tr -d '\n' | xdotool type --clearmodifiers -fi -
;;
"3. Copy Password")
pass show -c "$selected"
;;
"4. Copy Username")
pass show "$selected" | grep -i "^username:" | sed 's/^[^:]*:[[:space:]]*//' | xclip -selection clipboard
;;
"5. Show Password")
pass show "$selected" | head -n 1 | rofi -dmenu -p "Password for $selected"
;;
esac
'';
}
) { };
};
}
|