+9
-8
README.md
+9
-8
README.md
···
2
3
[](https://tangled.org/@jcg.re/tessen)
4
5
-
`tessen` is a bash script that can autotype and copy data from [password-store][1] and [gopass][2]
6
-
files. A wayland native dmenu is required to use tessen and the following dmenu backends are
7
-
recognized
8
9
- [fuzzel][4]
10
- [tofi][15]
···
24
25
### Why use `tessen`?
26
27
-
- `tessen` can autotype or copy (or do both at the same time!) your password store and gopass data
28
-
including all of your key-value pair data
29
30
From what I've observed, most scripts out there do not autotype and copy all of your key-value
31
pair data. They also do not offer choices about autotyping or copying data with the same
···
51
52
- [bash][16]
53
54
-
- at least one pass backend is needed - either [password-store][1] or [gopass][2]
55
56
- at least one Wayland native dmenu backend, preferably [fuzzel][4], or [tofi][15], [bemenu][5],
57
[yofi][32], [wofi][6], [rofi][3]
···
130
131
## Features
132
133
-
- autotype or copy (or both at the same time!) data, including all valid key-value pairs, in pass
134
-
and gopass
135
- generate TOTP/HOTP
136
- open URLs
137
- use custom values for `user`, `password`, `url`, `autotype` keys
···
226
[33]: https://social.treehouse.systems/@psykose/109967460650885493
227
[34]: https://pkgs.alpinelinux.org/packages?name=tessen
228
[35]: https://search.nixos.org/packages?query=tessen
···
2
3
[](https://tangled.org/@jcg.re/tessen)
4
5
+
`tessen` is a bash script that can autotype and copy data from [password-store][1], [gopass][2]
6
+
and [prs][36]. A wayland native dmenu is required to use tessen and the following dmenu backends
7
+
are recognized
8
9
- [fuzzel][4]
10
- [tofi][15]
···
24
25
### Why use `tessen`?
26
27
+
- `tessen` can autotype or copy (or do both at the same time!) your password store, gopass and prs
28
+
data including all of your key-value pair data
29
30
From what I've observed, most scripts out there do not autotype and copy all of your key-value
31
pair data. They also do not offer choices about autotyping or copying data with the same
···
51
52
- [bash][16]
53
54
+
- at least one pass backend is needed - either [password-store][1], [gopass][2] or [prs][36]
55
56
- at least one Wayland native dmenu backend, preferably [fuzzel][4], or [tofi][15], [bemenu][5],
57
[yofi][32], [wofi][6], [rofi][3]
···
130
131
## Features
132
133
+
- autotype or copy (or both at the same time!) data, including all valid key-value pairs, in pass,
134
+
gopass and prs
135
- generate TOTP/HOTP
136
- open URLs
137
- use custom values for `user`, `password`, `url`, `autotype` keys
···
226
[33]: https://social.treehouse.systems/@psykose/109967460650885493
227
[34]: https://pkgs.alpinelinux.org/packages?name=tessen
228
[35]: https://search.nixos.org/packages?query=tessen
229
+
[36]: https://timvisee.com/projects/prs/
+1
-1
config
+1
-1
config
+15
-6
tessen
+15
-6
tessen
···
100
if [[ ${#passdata[@]} -eq 0 ]]; then
101
_die "the selected file is empty"
102
fi
103
elif [[ $_PASS_BACKEND == "gopass" ]]; then
104
# the output from gopass show -n -f that prints the first line and the
105
# newline before EOF doesn't use file descriptors but is printed only when
···
314
315
if [[ $_PASS_BACKEND == "pass" ]]; then
316
tmp_otp="$(pass otp "$_TSN_PASSFILE")"
317
elif [[ $_PASS_BACKEND == "gopass" ]]; then
318
tmp_otp="$(gopass otp -o "$_TSN_PASSFILE")"
319
fi
···
394
printf "%s\n" "invalid clipboard timeout value in PASSWORD_STORE_CLIP_TIME" >&2
395
return 1
396
fi
397
elif [[ $_PASS_BACKEND == "gopass" ]]; then
398
tsn_cliptime="$(gopass config core.cliptimeout)"
399
tsn_cliptime="${tsn_cliptime##*: }"
···
430
431
validate_pass_backend() {
432
if ! is_installed "$1"; then
433
-
_die "please install a valid password store backend: pass | gopass"
434
fi
435
-
if [[ $1 == "pass" ]] || [[ $1 == "gopass" ]]; then
436
_PASS_BACKEND="$1"
437
else
438
-
_die "please specify a valid password store backend: pass | gopass"
439
fi
440
}
441
···
526
}
527
528
find_pass_backend() {
529
-
local -a tmp_pass_arr=('pass' 'gopass')
530
local idx
531
532
for idx in "${tmp_pass_arr[@]}"; do
···
536
fi
537
done
538
if [[ -z $_PASS_BACKEND ]]; then
539
-
_die "please install a valid password store backend: pass | gopass"
540
fi
541
542
unset -v idx tmp_pass_arr
···
811
fi
812
813
trap '_clear' EXIT TERM INT
814
-
if [[ $_PASS_BACKEND == "pass" ]]; then
815
get_pass_files
816
elif [[ $_PASS_BACKEND == "gopass" ]]; then
817
get_gopass_files
···
100
if [[ ${#passdata[@]} -eq 0 ]]; then
101
_die "the selected file is empty"
102
fi
103
+
elif [[ $_PASS_BACKEND == "prs" ]]; then
104
+
mapfile -t passdata < <(prs show --quiet "$_TSN_PASSFILE")
105
+
if [[ ${#passdata[@]} -eq 0 ]]; then
106
+
_die "the selected file is empty"
107
+
fi
108
elif [[ $_PASS_BACKEND == "gopass" ]]; then
109
# the output from gopass show -n -f that prints the first line and the
110
# newline before EOF doesn't use file descriptors but is printed only when
···
319
320
if [[ $_PASS_BACKEND == "pass" ]]; then
321
tmp_otp="$(pass otp "$_TSN_PASSFILE")"
322
+
elif [[ $_PASS_BACKEND == "prs" ]]; then
323
+
tmp_otp="$(prs otp show --quiet "$_TSN_PASSFILE")"
324
elif [[ $_PASS_BACKEND == "gopass" ]]; then
325
tmp_otp="$(gopass otp -o "$_TSN_PASSFILE")"
326
fi
···
401
printf "%s\n" "invalid clipboard timeout value in PASSWORD_STORE_CLIP_TIME" >&2
402
return 1
403
fi
404
+
elif [[ $_PASS_BACKEND == "prs" ]]; then
405
+
tsn_cliptime="20"
406
elif [[ $_PASS_BACKEND == "gopass" ]]; then
407
tsn_cliptime="$(gopass config core.cliptimeout)"
408
tsn_cliptime="${tsn_cliptime##*: }"
···
439
440
validate_pass_backend() {
441
if ! is_installed "$1"; then
442
+
_die "please install a valid password store backend: pass | gopass | prs"
443
fi
444
+
if [[ $1 == "pass" ]] || [[ $1 == "gopass" ]] || [[ $1 == "prs" ]]; then
445
_PASS_BACKEND="$1"
446
else
447
+
_die "please specify a valid password store backend: pass | gopass | prs"
448
fi
449
}
450
···
535
}
536
537
find_pass_backend() {
538
+
local -a tmp_pass_arr=('pass' 'gopass' 'prs')
539
local idx
540
541
for idx in "${tmp_pass_arr[@]}"; do
···
545
fi
546
done
547
if [[ -z $_PASS_BACKEND ]]; then
548
+
_die "please install a valid password store backend: pass | gopass | prs"
549
fi
550
551
unset -v idx tmp_pass_arr
···
820
fi
821
822
trap '_clear' EXIT TERM INT
823
+
if [[ $_PASS_BACKEND == "pass" ]] || [[ $_PASS_BACKEND == "prs" ]]; then
824
get_pass_files
825
elif [[ $_PASS_BACKEND == "gopass" ]]; then
826
get_gopass_files
Submissions
pull request successfully merged