commit 75bd665fde9d0d940f45d644afae6308d01a33c3
parent 54bf7b219cfa52817508df8dc7039413d59b2791
Author: Ayush Agarwal <ayush@fastmail.in>
Date: Wed, 16 Feb 2022 21:07:30 +0530
feat!: add support for configuration file
I've dropped support for environment variables in favor of a config
file. This was motivated by
https://github.com/Cloudef/bemenu/issues/15
From what I think of environment variables, they're meant to be used
when they won't change often, especially not during a live session while
you're working. I don't think that performing a relogin to change colors
in a dmenu program is a sensible thing. Sure, you can create wrapper
scripts and place them in your `$PATH` but that feels like an inferior
solution compared to config file kept in `$XDG_CONFIG_HOME`.
Diffstat:
| M | tessen | | | 33 | ++++++++++++++------------------- |
1 file changed, 14 insertions(+), 19 deletions(-)
diff --git a/tessen b/tessen
@@ -11,28 +11,23 @@
set +x
# GLOBAL VARIABLES
-# variables which won't be changed and can be made readonly
-readonly tsn_version="1.3.1"
-readonly tsn_prefix="${PASSWORD_STORE_DIR:-$HOME/.password-store}"
-readonly tsn_cliptime="${PASSWORD_STORE_CLIP_TIME:-15}"
-readonly tsn_delay="${TESSEN_DELAY:-200}"
-# a list of dmenu backends for which tessen provides default options
-readonly -a tsn_known_backends=('bemenu' 'fuzzel' 'rofi' 'wofi')
-# variables which hold data for possible actions and choices
-tsn_backend="${TESSEN_BACKEND-}"
-tsn_backend_opts=()
-tsn_action="${TESSEN_ACTION-}"
-tsn_userkey_regex="${TESSEN_USERKEY:-user}"
-tsn_userkey="user"
-tsn_urlkey="${TESSEN_URLKEY:-url}"
-tsn_autokey="${TESSEN_AUTOKEY:-autotype}"
-tsn_autotype=""
+readonly tsn_version="2.0.0"
+declare pass_backend dmenu_backend tsn_action tsn_config
+declare -a dmenu_backend_opts tmp_opts
+declare tsn_userkey tsn_urlkey tsn_autokey tsn_delay tsn_web_browser
+# show both actions, 'autotype' and 'copy', to choose from by default
+tsn_action="default"
tsn_otp=false
+# initialize default values for keys
+tsn_userkey="user"
+tsn_urlkey="url"
+tsn_autokey="autotype"
+tsn_delay=100
+# initialize the default location of the config file
+tsn_config="${XDG_CONFIG_HOME:-$HOME/.config}"/tessen/config
# variables with sensitive data which will be manually unset using _clear
-tsn_passfile=""
+declare tsn_passfile tsn_username tsn_password tsn_url tsn_autotype chosen_key
declare -A tsn_passdata
-tsn_username=""
-tsn_password=""
# FIRST MENU: generate a list of password store files, let the user select one
get_pass_file() {