+48
-34
Diff
round #3
+4
CHANGELOG.md
+4
CHANGELOG.md
···
10
10
Tessen has been first archived by the original developer and maintainer, and then forked. This marks
11
11
the first new release under new maintenance.
12
12
13
+
### Added
14
+
15
+
- support for `prs` as a third password backend besides `pass` and `gopass`
16
+
13
17
## [2.2.3] - 2024-03-05
14
18
15
19
### Fixed
+9
-8
README.md
+9
-8
README.md
···
2
2
3
3
[](https://tangled.org/@jcg.re/tessen)
4
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
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
8
9
9
- [fuzzel][4]
10
10
- [tofi][15]
···
24
24
25
25
### Why use `tessen`?
26
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
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
29
30
30
From what the original author observed, most scripts out there do not autotype and copy all of
31
31
your key-value pair data. They also do not offer choices about autotyping or copying data with the
···
51
51
52
52
- [bash][16]
53
53
54
-
- at least one pass backend is needed - either [password-store][1] or [gopass][2]
54
+
- at least one pass backend is needed - either [password-store][1], [gopass][2] or [prs][36]
55
55
56
56
- at least one Wayland native dmenu backend, preferably [fuzzel][4], or [tofi][15], [bemenu][5],
57
57
[yofi][32], [wofi][6], [rofi][3]
···
130
130
131
131
## Features
132
132
133
-
- autotype or copy (or both at the same time!) data, including all valid key-value pairs, in pass
134
-
and gopass
133
+
- autotype or copy (or both at the same time!) data, including all valid key-value pairs, in pass,
134
+
gopass and prs
135
135
- generate TOTP/HOTP
136
136
- open URLs
137
137
- use custom values for `user`, `password`, `url`, `autotype` keys
···
228
228
[33]: https://social.treehouse.systems/@psykose/109967460650885493
229
229
[34]: https://pkgs.alpinelinux.org/packages?name=tessen
230
230
[35]: https://search.nixos.org/packages?query=tessen
231
+
[36]: https://timvisee.com/projects/prs/
+1
-1
config
+1
-1
config
···
4
4
# configuration file for tessen
5
5
# place this file in $XDG_CONFIG_HOME/tessen/config
6
6
7
-
# the default pass program to use - pass or gopass
7
+
# the default pass program to use - pass, gopass or prs
8
8
# pass_backend="pass"
9
9
10
10
# the default dmenu backend program to use - rofi, fuzzel, bemenu, rofi, or dmenu
+15
-15
man/tessen.1.scd
+15
-15
man/tessen.1.scd
···
2
2
3
3
# NAME
4
4
5
-
tessen - autotype and copy *pass*(1) and *gopass*(1) data on wayland
5
+
tessen - autotype and copy *pass*(1), *gopass*(1) and *prs*(1) data on wayland
6
6
7
7
# SYNOPSIS
8
8
···
11
11
# DESCRIPTION
12
12
13
13
tessen is a *bash*(1) script that helps to autotype and copy data encrypted
14
-
using *pass*(1) and *gopass*(1). It can also open URLs, generate HOTP and TOTP,
15
-
and execute custom autotype operations.
14
+
using *pass*(1), *gopass*(1) and *prs*(1). It can also open URLs, generate HOTP
15
+
and TOTP, and execute custom autotype operations.
16
16
17
17
tessen has been written for wlroots based wayland compositors like *sway*(1)
18
18
that support the virtual-keyboard-unstable-v1 protocol. It will NOT work on
···
21
21
The options understood by tessen are:
22
22
23
23
*-p*, *--pass*, *--pass=*[pass backend]
24
-
specify either *pass* or *gopass*
24
+
specify either *pass*, *gopass* or *prs*
25
25
26
26
*-d*, *--dmenu*, *--dmenu=*[dmenu backend]
27
27
specify a dmenu backend - the list of recognized backends are *fuzzel*,
···
41
41
42
42
## DEFAULT BEHAVIOR
43
43
44
-
If a pass backend is not specified, tessen tries to find either one of *pass*(1)
45
-
or *gopass*(1) in the order mentioned here.
44
+
If a pass backend is not specified, tessen tries to find either one of
45
+
*pass*(1), *gopass*(1) or *prs*(1) in the order mentioned here.
46
46
47
47
tessen assumes that the data organization format is the same as mentioned on
48
-
the home page of password store, when using *pass*(1) and *gopass*(1)
48
+
the home page of password store, when using *pass*(1), *gopass*(1) and *prs*(1)
49
49
50
50
https://www.passwordstore.org/#organization
51
51
···
67
67
If an action is not specified, tessen shows an additional menu with the option
68
68
to either autotype or copy data.
69
69
70
-
If data is copied, it will be removed from the clipboard after
71
-
*PASSWORD_STORE_CLIP_TIME* when using *pass*(1) and after *cliptimeout* when
72
-
using *gopass*(1). If *PASSWORD_STORE_CLIP_TIME* is not set, a default value of
73
-
15 seconds is assumed.
70
+
If data is copied, it will be removed from the clipboard after a timeout. The
71
+
timeout is read from *PASSWORD_STORE_CLIP_TIME* when using *pass*(1) and from
72
+
*cliptimeout* when using *gopass*(1). If no timeout is found, it falls back to a
73
+
default of 15 seconds.
74
74
75
75
A delay of 100 milliseconds will be used between successive autotype operations.
76
76
This can be changed using the 'delay' option in the *tessen*(5) configuration
···
95
95
- *bash*(1)
96
96
- at least one wayland native dmenu backend - *fuzzel*(1), *tofi*(1),
97
97
*bemenu*(1), *wofi*(1), *rofi*(1), *dmenu*
98
-
- at least one pass backend - either *pass*(1) or *gopass*(1)
98
+
- at least one pass backend - either *pass*(1), *gopass*(1) or *prs*(1)
99
99
- *wtype*(1) (if you want to autotype data)
100
100
- *wl-clipboard*(1) (if you want to copy and paste data)
101
101
- *scdoc*(1) (optional, to build this man page)
···
117
117
*tessen*(5) config file.
118
118
119
119
The *otpauth://* format is supported and used if *pass-otp*(1) is installed when
120
-
using *pass*(1). *gopass*(1) supports this feature natively.
120
+
using *pass*(1). *gopass*(1) and *prs*(1) support this feature natively.
121
121
122
122
A value for the 'autotype' key can be specified in password files for custom
123
123
autotype behavior which overrides the default behavior of autotyping the
···
191
191
192
192
# SEE ALSO
193
193
194
-
*tessen*(5), *pass*(1), *gopass*(1) *pass-otp*(1), *fuzzel*(1), *tofi*(1),
195
-
*bemenu*(1), *wofi*(1), *rofi*(1), *wl-clipboard*(1), *wtype*(1),
194
+
*tessen*(5), *pass*(1), *gopass*(1), *prs*(1), *pass-otp*(1), *fuzzel*(1),
195
+
**tofi*(1), bemenu*(1), *wofi*(1), *rofi*(1), *wl-clipboard*(1), *wtype*(1),
196
196
*notify-send*(1)
197
197
198
198
# AUTHORS
+4
-4
man/tessen.5.scd
+4
-4
man/tessen.5.scd
···
35
35
36
36
*pass_backend*
37
37
38
-
The default pass backend to use - either *pass*(1) or *gopass*(1)
38
+
The default pass backend to use - either *pass*(1), *gopass*(1) or *prs*(1)
39
39
40
40
*dmenu_backend*
41
41
···
134
134
135
135
# SEE ALSO
136
136
137
-
*tessen*(5), *pass*(1), *gopass*(1) *pass-otp*(1), *fuzzel*(1), *tofi*(1),
138
-
*bemenu*(1), *wofi*(1), *rofi*(1), *wl-clipboard*(1), *wtype*(1),
139
-
*notify-send*(1)
137
+
*tessen*(5), *pass*(1), *gopass*(1), *prs*(1), *pass-otp*(1), *fuzzel*(1),
138
+
***tofi*(1), bemenu*(1), wofi*(1), *rofi*(1), *wl-clipboard*(1), *wtype*(1),
139
+
**notify-send*(1)
140
140
141
141
# AUTHORS
142
142
+15
-6
tessen
+15
-6
tessen
···
100
100
if [[ ${#passdata[@]} -eq 0 ]]; then
101
101
_die "the selected file is empty"
102
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
103
108
elif [[ $_PASS_BACKEND == "gopass" ]]; then
104
109
# the output from gopass show -n -f that prints the first line and the
105
110
# newline before EOF doesn't use file descriptors but is printed only when
···
314
319
315
320
if [[ $_PASS_BACKEND == "pass" ]]; then
316
321
tmp_otp="$(pass otp "$_TSN_PASSFILE")"
322
+
elif [[ $_PASS_BACKEND == "prs" ]]; then
323
+
tmp_otp="$(prs otp show --quiet "$_TSN_PASSFILE")"
317
324
elif [[ $_PASS_BACKEND == "gopass" ]]; then
318
325
tmp_otp="$(gopass otp -o "$_TSN_PASSFILE")"
319
326
fi
···
394
401
printf "%s\n" "invalid clipboard timeout value in PASSWORD_STORE_CLIP_TIME" >&2
395
402
return 1
396
403
fi
404
+
elif [[ $_PASS_BACKEND == "prs" ]]; then
405
+
tsn_cliptime="15"
397
406
elif [[ $_PASS_BACKEND == "gopass" ]]; then
398
407
tsn_cliptime="$(gopass config core.cliptimeout)"
399
408
tsn_cliptime="${tsn_cliptime##*: }"
···
430
439
431
440
validate_pass_backend() {
432
441
if ! is_installed "$1"; then
433
-
_die "please install a valid password store backend: pass | gopass"
442
+
_die "please install a valid password store backend: pass | gopass | prs"
434
443
fi
435
-
if [[ $1 == "pass" ]] || [[ $1 == "gopass" ]]; then
444
+
if [[ $1 == "pass" ]] || [[ $1 == "gopass" ]] || [[ $1 == "prs" ]]; then
436
445
_PASS_BACKEND="$1"
437
446
else
438
-
_die "please specify a valid password store backend: pass | gopass"
447
+
_die "please specify a valid password store backend: pass | gopass | prs"
439
448
fi
440
449
}
441
450
···
526
535
}
527
536
528
537
find_pass_backend() {
529
-
local -a tmp_pass_arr=('pass' 'gopass')
538
+
local -a tmp_pass_arr=('pass' 'gopass' 'prs')
530
539
local idx
531
540
532
541
for idx in "${tmp_pass_arr[@]}"; do
···
536
545
fi
537
546
done
538
547
if [[ -z $_PASS_BACKEND ]]; then
539
-
_die "please install a valid password store backend: pass | gopass"
548
+
_die "please install a valid password store backend: pass | gopass | prs"
540
549
fi
541
550
542
551
unset -v idx tmp_pass_arr
···
811
820
fi
812
821
813
822
trap '_clear' EXIT TERM INT
814
-
if [[ $_PASS_BACKEND == "pass" ]]; then
823
+
if [[ $_PASS_BACKEND == "pass" ]] || [[ $_PASS_BACKEND == "prs" ]]; then
815
824
get_pass_files
816
825
elif [[ $_PASS_BACKEND == "gopass" ]]; then
817
826
get_gopass_files
History
9 rounds
0 comments
expand 0 comments
pull request successfully merged