aboutsummaryrefslogtreecommitdiffhomepage
path: root/X11
diff options
context:
space:
mode:
authorHsieh Chin Fan <pham@topo.tw>2023-05-07 10:27:38 +0800
committerHsieh Chin Fan <pham@topo.tw>2023-05-07 10:27:38 +0800
commitf47670763cd79b2ca34b61930e78b97d6631f88f (patch)
treefc0c7b82cb0a0eb3b36217eeb76bb874bfe9fafd /X11
parentfe8327560ca95571cf6f2ce4762377a112cd815d (diff)
Improve password script
Diffstat (limited to 'X11')
-rwxr-xr-xX11/rofi/pass.edit12
-rwxr-xr-xX11/rofi/pass.get11
-rwxr-xr-xX11/rofi/pass.replace43
-rwxr-xr-xX11/rofi/rofi-pass4
4 files changed, 59 insertions, 11 deletions
diff --git a/X11/rofi/pass.edit b/X11/rofi/pass.edit
index 66fba6b..2c0eeea 100755
--- a/X11/rofi/pass.edit
+++ b/X11/rofi/pass.edit
@@ -4,17 +4,17 @@ ENTRIES="$(find ~/.password-store -name '*gpg' -printf %P\\n | sed 's/.gpg$//')"
4 4
5# Give rofi available passwords and exit 5# Give rofi available passwords and exit
6if [ $# -eq 0 ]; then 6if [ $# -eq 0 ]; then
7 # Specify rofi prompt as 'Edit' 7 # Specify rofi prompt as 'Edit'
8 echo -e "\0prompt\x1fEdit" 8 echo -e "\0prompt\x1fEdit"
9 9
10 echo "$ENTRIES" 10 echo "$ENTRIES"
11 exit 0 11 exit 0
12fi 12fi
13 13
14# If password doesn't exist, just quit 14# If password doesn't exist, just quit
15<<<"$ENTRIES" grep -q $1 || exit 0 15<<<"$ENTRIES" grep -q $1 || exit 0
16 16
17# Use detected terminal emulator to edit password 17# Use detected terminal emulator to edit password
18coproc ( 18coproc (
19 alacritty -e pass edit $1 && $(dirname $0)/pass.get $1 19 $terminal -e pass edit $1 && $(dirname $0)/pass.get $1
20) 20)
diff --git a/X11/rofi/pass.get b/X11/rofi/pass.get
index 425cd62..20ef852 100755
--- a/X11/rofi/pass.get
+++ b/X11/rofi/pass.get
@@ -15,8 +15,9 @@ if [ -n "${ROFI_DATA}" ]; then
15 15
16 # Generate password in a new process 16 # Generate password in a new process
17 # And Use current script to copy the values info X11 selections 17 # And Use current script to copy the values info X11 selections
18 coproc ( 18 coproc (
19 pass generate ${PASSWORD} ${extra_arguments} 19 pass generate ${PASSWORD} ${extra_arguments}
20 $terminal -e pass edit ${PASSWORD}
20 $0 ${PASSWORD} 21 $0 ${PASSWORD}
21 ) 22 )
22 23
@@ -48,15 +49,17 @@ if [ -n "$RESULT" ]; then
48 coproc ( rofi -e "Copied: $1$EXTRA" ) 49 coproc ( rofi -e "Copied: $1$EXTRA" )
49 50
50elif [ -f "$HOME/.password-store/$1.gpg" ]; then 51elif [ -f "$HOME/.password-store/$1.gpg" ]; then
51 coproc ( 52 # Password exist but command fails
53 # Must be something wrong with GPG decryption
54 coproc (
52 rofi -e "GPG passphase is not chached" \ 55 rofi -e "GPG passphase is not chached" \
53 -theme-str '#window { font: "hacker 40"; }' 56 -theme-str '#window { font: "hacker 40"; }'
54 ) 57 )
55else 58else
56 # Password doesn't exist yet 59 # Password doesn't exist yet
57 # Go to next rofi execution 60 # Go to next rofi execution
58 echo -e "\0prompt\x1f$1" 61 echo -e "\0prompt\x1f$1"
59 echo -e "\0message\x1fThis password doesn't exist, generate with custom arguments?" 62 echo -e "\0message\x1f\"NUMBER\" for length, \"-n\" to exclude spcecial chars"
60 echo -e "\0data\x1f$1" 63 echo -e "\0data\x1f$1"
61 echo ${GENERATION_HINT} 64 echo ${GENERATION_HINT}
62fi 65fi
diff --git a/X11/rofi/pass.replace b/X11/rofi/pass.replace
new file mode 100755
index 0000000..fa3d442
--- /dev/null
+++ b/X11/rofi/pass.replace
@@ -0,0 +1,43 @@
1#! /bin/bash
2
3ENTRIES="$(find ~/.password-store -name '*gpg' -printf %P\\n | sed 's/.gpg$//')"
4GENERATION_HINT="Generate with default config"
5
6# Generate a new password if ROFI_DATA is given by last execution
7if [ -n "${ROFI_DATA}" ]; then
8 PASSWORD="${ROFI_DATA}"
9 export ROFI_DATA=
10
11 # If custom arguments for password generation is given
12 # Set environment variable
13 if [ ${ROFI_RETV} -eq 2 ]; then
14 extra_arguments="${1}"
15 fi
16
17 # Generate password in a new process
18 # And Use current script to copy the values info X11 selections
19 coproc (
20 pass generate -i ${PASSWORD} ${extra_arguments}
21 $(dirname $0)/pass.get ${PASSWORD}
22 )
23
24 exit 0
25fi
26
27# Give rofi available passwords and exit
28if [ $# -eq 0 ]; then
29 # Specify rofi prompt as 'Replace'
30 echo -e "\0prompt\x1fReplace"
31
32 echo "$ENTRIES"
33 exit 0
34fi
35
36# If password doesn't exist, just quit
37<<<"$ENTRIES" grep -q $1 || exit 0
38
39# Show message for password options
40echo -e "\0prompt\x1f$1"
41echo -e "\0message\x1f\"NUMBER\" for length, \"-n\" to exclude spcecial chars"
42echo -e "\0data\x1f$1"
43echo ${GENERATION_HINT}
diff --git a/X11/rofi/rofi-pass b/X11/rofi/rofi-pass
index b6a1e01..498fa62 100755
--- a/X11/rofi/rofi-pass
+++ b/X11/rofi/rofi-pass
@@ -1,5 +1,7 @@
1#! /bin/bash 1#! /bin/bash
2 2
3export terminal=${terminal:-alacritty}
4
3cd $(dirname $0) 5cd $(dirname $0)
4 6
5rofi -show get -modes get:./pass.get,edit:./pass.edit,rm:./pass.rm 7rofi -show get -modes get:./pass.get,edit:./pass.edit,replace:./pass.replace,rm:./pass.rm