git: 9b70f583e8ac - main - deskutils/thokr: New port: Sleek typing tui with visualized results and historical logging

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Thu, 05 Jan 2023 05:59:25 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=9b70f583e8ac38d53b62511445f05861ace9e521

commit 9b70f583e8ac38d53b62511445f05861ace9e521
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2023-01-05 05:09:46 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2023-01-05 05:59:16 +0000

    deskutils/thokr: New port: Sleek typing tui with visualized results and historical logging
---
 deskutils/Makefile        |   1 +
 deskutils/thokr/Makefile  | 150 +++++++++++++++++++++++++++
 deskutils/thokr/distinfo  | 255 ++++++++++++++++++++++++++++++++++++++++++++++
 deskutils/thokr/pkg-descr |   1 +
 4 files changed, 407 insertions(+)

diff --git a/deskutils/Makefile b/deskutils/Makefile
index 89660029be20..0e6e6cf781b2 100644
--- a/deskutils/Makefile
+++ b/deskutils/Makefile
@@ -254,6 +254,7 @@
     SUBDIR += teapot
     SUBDIR += terminal-image-viewer
     SUBDIR += thinkingrock
+    SUBDIR += thokr
     SUBDIR += timewarrior
     SUBDIR += todo
     SUBDIR += todour
diff --git a/deskutils/thokr/Makefile b/deskutils/thokr/Makefile
new file mode 100644
index 000000000000..741c41c47eca
--- /dev/null
+++ b/deskutils/thokr/Makefile
@@ -0,0 +1,150 @@
+PORTNAME=	thokr
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.4.1
+CATEGORIES=	deskutils
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Sleek typing tui with visualized results and historical logging
+WWW=		https://github.com/jrnxf/thokr
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE.md
+
+USES=		cargo
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	jrnxf
+
+CARGO_CRATES=	atty-0.2.14 \
+		autocfg-1.1.0 \
+		bitflags-1.3.2 \
+		bumpalo-3.9.1 \
+		bytes-1.1.0 \
+		cassowary-0.3.0 \
+		cesu8-1.1.0 \
+		cfg-if-1.0.0 \
+		cgisf_lib-0.1.3 \
+		chrono-0.4.19 \
+		clap-3.1.8 \
+		clap_derive-3.1.7 \
+		combine-4.6.3 \
+		crossterm-0.22.1 \
+		crossterm-0.23.2 \
+		crossterm_winapi-0.9.0 \
+		darling-0.13.2 \
+		darling_core-0.13.2 \
+		darling_macro-0.13.2 \
+		directories-4.0.1 \
+		dirs-sys-0.3.7 \
+		either-1.6.1 \
+		fnv-1.0.7 \
+		form_urlencoded-1.0.1 \
+		getrandom-0.2.6 \
+		hashbrown-0.11.2 \
+		heck-0.4.0 \
+		hermit-abi-0.1.19 \
+		ident_case-1.0.1 \
+		idna-0.2.3 \
+		include_dir-0.7.2 \
+		include_dir_macros-0.7.2 \
+		indexmap-1.8.1 \
+		instant-0.1.12 \
+		itertools-0.10.3 \
+		itoa-1.0.1 \
+		jni-0.19.0 \
+		jni-sys-0.3.0 \
+		js-sys-0.3.56 \
+		lazy_static-1.4.0 \
+		libc-0.2.121 \
+		lock_api-0.4.7 \
+		log-0.4.16 \
+		matches-0.1.9 \
+		memchr-2.4.1 \
+		mio-0.7.14 \
+		mio-0.8.2 \
+		miow-0.3.7 \
+		ndk-0.6.0 \
+		ndk-context-0.1.0 \
+		ndk-glue-0.6.1 \
+		ndk-macro-0.3.0 \
+		ndk-sys-0.3.0 \
+		ntapi-0.3.7 \
+		num-integer-0.1.44 \
+		num-traits-0.2.14 \
+		num_enum-0.5.7 \
+		num_enum_derive-0.5.7 \
+		os_str_bytes-6.0.0 \
+		parking_lot-0.11.2 \
+		parking_lot-0.12.0 \
+		parking_lot_core-0.8.5 \
+		parking_lot_core-0.9.2 \
+		percent-encoding-2.1.0 \
+		ppv-lite86-0.2.16 \
+		proc-macro-crate-1.1.3 \
+		proc-macro-error-1.0.4 \
+		proc-macro-error-attr-1.0.4 \
+		proc-macro2-1.0.36 \
+		quote-1.0.17 \
+		rand-0.8.5 \
+		rand_chacha-0.3.1 \
+		rand_core-0.6.3 \
+		redox_syscall-0.2.13 \
+		redox_users-0.4.3 \
+		rustversion-1.0.6 \
+		ryu-1.0.9 \
+		same-file-1.0.6 \
+		scopeguard-1.1.0 \
+		serde-1.0.136 \
+		serde_derive-1.0.136 \
+		serde_json-1.0.79 \
+		signal-hook-0.3.13 \
+		signal-hook-mio-0.2.3 \
+		signal-hook-registry-1.4.0 \
+		smallvec-1.8.0 \
+		strsim-0.10.0 \
+		strum_macros-0.24.0 \
+		syn-1.0.90 \
+		termcolor-1.1.3 \
+		textwrap-0.15.0 \
+		thiserror-1.0.30 \
+		thiserror-impl-1.0.30 \
+		time-0.1.43 \
+		tinyvec-1.5.1 \
+		tinyvec_macros-0.1.0 \
+		toml-0.5.8 \
+		tui-0.17.0 \
+		unicode-bidi-0.3.7 \
+		unicode-normalization-0.1.19 \
+		unicode-segmentation-1.9.0 \
+		unicode-width-0.1.9 \
+		unicode-xid-0.2.2 \
+		url-2.2.2 \
+		version_check-0.9.4 \
+		walkdir-2.3.2 \
+		wasi-0.10.2+wasi-snapshot-preview1 \
+		wasi-0.11.0+wasi-snapshot-preview1 \
+		wasm-bindgen-0.2.79 \
+		wasm-bindgen-backend-0.2.79 \
+		wasm-bindgen-macro-0.2.79 \
+		wasm-bindgen-macro-support-0.2.79 \
+		wasm-bindgen-shared-0.2.79 \
+		web-sys-0.3.56 \
+		webbrowser-0.7.1 \
+		widestring-0.5.1 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-util-0.1.5 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-sys-0.34.0 \
+		windows_aarch64_msvc-0.34.0 \
+		windows_i686_gnu-0.34.0 \
+		windows_i686_msvc-0.34.0 \
+		windows_x86_64_gnu-0.34.0 \
+		windows_x86_64_msvc-0.34.0
+
+PLIST_FILES=	bin/${PORTNAME}
+
+post-install:
+	@${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/deskutils/thokr/distinfo b/deskutils/thokr/distinfo
new file mode 100644
index 000000000000..79a6e00dd770
--- /dev/null
+++ b/deskutils/thokr/distinfo
@@ -0,0 +1,255 @@
+TIMESTAMP = 1672895068
+SHA256 (rust/crates/atty-0.2.14.crate) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8
+SIZE (rust/crates/atty-0.2.14.crate) = 5470
+SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa
+SIZE (rust/crates/autocfg-1.1.0.crate) = 13272
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bumpalo-3.9.1.crate) = a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899
+SIZE (rust/crates/bumpalo-3.9.1.crate) = 77507
+SHA256 (rust/crates/bytes-1.1.0.crate) = c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8
+SIZE (rust/crates/bytes-1.1.0.crate) = 49640
+SHA256 (rust/crates/cassowary-0.3.0.crate) = df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53
+SIZE (rust/crates/cassowary-0.3.0.crate) = 22876
+SHA256 (rust/crates/cesu8-1.1.0.crate) = 6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c
+SIZE (rust/crates/cesu8-1.1.0.crate) = 10555
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/cgisf_lib-0.1.3.crate) = 5f96f8a49c20f941bfefec24453bf6242e9bb5ce063211fe4e401126a94e7e85
+SIZE (rust/crates/cgisf_lib-0.1.3.crate) = 20023
+SHA256 (rust/crates/chrono-0.4.19.crate) = 670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73
+SIZE (rust/crates/chrono-0.4.19.crate) = 155663
+SHA256 (rust/crates/clap-3.1.8.crate) = 71c47df61d9e16dc010b55dba1952a57d8c215dbb533fd13cdd13369aac73b1c
+SIZE (rust/crates/clap-3.1.8.crate) = 206494
+SHA256 (rust/crates/clap_derive-3.1.7.crate) = a3aab4734e083b809aaf5794e14e756d1c798d2c69c7f7de7a09a2f5214993c1
+SIZE (rust/crates/clap_derive-3.1.7.crate) = 25363
+SHA256 (rust/crates/combine-4.6.3.crate) = 50b727aacc797f9fc28e355d21f34709ac4fc9adecfe470ad07b8f4464f53062
+SIZE (rust/crates/combine-4.6.3.crate) = 132015
+SHA256 (rust/crates/crossterm-0.22.1.crate) = c85525306c4291d1b73ce93c8acf9c339f9b213aef6c1d85c3830cbf1c16325c
+SIZE (rust/crates/crossterm-0.22.1.crate) = 105450
+SHA256 (rust/crates/crossterm-0.23.2.crate) = a2102ea4f781910f8a5b98dd061f4c2023f479ce7bb1236330099ceb5a93cf17
+SIZE (rust/crates/crossterm-0.23.2.crate) = 106712
+SHA256 (rust/crates/crossterm_winapi-0.9.0.crate) = 2ae1b35a484aa10e07fe0638d02301c5ad24de82d310ccbd2f3693da5f09bf1c
+SIZE (rust/crates/crossterm_winapi-0.9.0.crate) = 15561
+SHA256 (rust/crates/darling-0.13.2.crate) = 4e92cb285610dd935f60ee8b4d62dd1988bd12b7ea50579bd6a138201525318e
+SIZE (rust/crates/darling-0.13.2.crate) = 20817
+SHA256 (rust/crates/darling_core-0.13.2.crate) = 5c29e95ab498b18131ea460b2c0baa18cbf041231d122b0b7bfebef8c8e88989
+SIZE (rust/crates/darling_core-0.13.2.crate) = 51056
+SHA256 (rust/crates/darling_macro-0.13.2.crate) = b21dd6b221dd547528bd6fb15f1a3b7ab03b9a06f76bff288a8c629bcfbe7f0e
+SIZE (rust/crates/darling_macro-0.13.2.crate) = 1910
+SHA256 (rust/crates/directories-4.0.1.crate) = f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210
+SIZE (rust/crates/directories-4.0.1.crate) = 16040
+SHA256 (rust/crates/dirs-sys-0.3.7.crate) = 1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6
+SIZE (rust/crates/dirs-sys-0.3.7.crate) = 10597
+SHA256 (rust/crates/either-1.6.1.crate) = e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457
+SIZE (rust/crates/either-1.6.1.crate) = 13641
+SHA256 (rust/crates/fnv-1.0.7.crate) = 3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1
+SIZE (rust/crates/fnv-1.0.7.crate) = 11266
+SHA256 (rust/crates/form_urlencoded-1.0.1.crate) = 5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191
+SIZE (rust/crates/form_urlencoded-1.0.1.crate) = 8773
+SHA256 (rust/crates/getrandom-0.2.6.crate) = 9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad
+SIZE (rust/crates/getrandom-0.2.6.crate) = 28043
+SHA256 (rust/crates/hashbrown-0.11.2.crate) = ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e
+SIZE (rust/crates/hashbrown-0.11.2.crate) = 85713
+SHA256 (rust/crates/heck-0.4.0.crate) = 2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9
+SIZE (rust/crates/heck-0.4.0.crate) = 11161
+SHA256 (rust/crates/hermit-abi-0.1.19.crate) = 62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33
+SIZE (rust/crates/hermit-abi-0.1.19.crate) = 9979
+SHA256 (rust/crates/ident_case-1.0.1.crate) = b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39
+SIZE (rust/crates/ident_case-1.0.1.crate) = 3492
+SHA256 (rust/crates/idna-0.2.3.crate) = 418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8
+SIZE (rust/crates/idna-0.2.3.crate) = 271023
+SHA256 (rust/crates/include_dir-0.7.2.crate) = 482a2e29200b7eed25d7fdbd14423326760b7f6658d21a4cf12d55a50713c69f
+SIZE (rust/crates/include_dir-0.7.2.crate) = 6073
+SHA256 (rust/crates/include_dir_macros-0.7.2.crate) = 5e074c19deab2501407c91ba1860fa3d6820bfde307db6d8cb851b55a10be89b
+SIZE (rust/crates/include_dir_macros-0.7.2.crate) = 3628
+SHA256 (rust/crates/indexmap-1.8.1.crate) = 0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee
+SIZE (rust/crates/indexmap-1.8.1.crate) = 53220
+SHA256 (rust/crates/instant-0.1.12.crate) = 7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c
+SIZE (rust/crates/instant-0.1.12.crate) = 6128
+SHA256 (rust/crates/itertools-0.10.3.crate) = a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3
+SIZE (rust/crates/itertools-0.10.3.crate) = 118661
+SHA256 (rust/crates/itoa-1.0.1.crate) = 1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35
+SIZE (rust/crates/itoa-1.0.1.crate) = 11059
+SHA256 (rust/crates/jni-0.19.0.crate) = c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec
+SIZE (rust/crates/jni-0.19.0.crate) = 65890
+SHA256 (rust/crates/jni-sys-0.3.0.crate) = 8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130
+SIZE (rust/crates/jni-sys-0.3.0.crate) = 10232
+SHA256 (rust/crates/js-sys-0.3.56.crate) = a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04
+SIZE (rust/crates/js-sys-0.3.56.crate) = 70520
+SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (rust/crates/libc-0.2.121.crate) = efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f
+SIZE (rust/crates/libc-0.2.121.crate) = 574702
+SHA256 (rust/crates/lock_api-0.4.7.crate) = 327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53
+SIZE (rust/crates/lock_api-0.4.7.crate) = 25371
+SHA256 (rust/crates/log-0.4.16.crate) = 6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8
+SIZE (rust/crates/log-0.4.16.crate) = 37758
+SHA256 (rust/crates/matches-0.1.9.crate) = a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f
+SIZE (rust/crates/matches-0.1.9.crate) = 2246
+SHA256 (rust/crates/memchr-2.4.1.crate) = 308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a
+SIZE (rust/crates/memchr-2.4.1.crate) = 64977
+SHA256 (rust/crates/mio-0.7.14.crate) = 8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc
+SIZE (rust/crates/mio-0.7.14.crate) = 87429
+SHA256 (rust/crates/mio-0.8.2.crate) = 52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9
+SIZE (rust/crates/mio-0.8.2.crate) = 88272
+SHA256 (rust/crates/miow-0.3.7.crate) = b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21
+SIZE (rust/crates/miow-0.3.7.crate) = 24563
+SHA256 (rust/crates/ndk-0.6.0.crate) = 2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4
+SIZE (rust/crates/ndk-0.6.0.crate) = 39828
+SHA256 (rust/crates/ndk-context-0.1.0.crate) = 4e3c5cc68637e21fe8f077f6a1c9e0b9ca495bb74895226b476310f613325884
+SIZE (rust/crates/ndk-context-0.1.0.crate) = 2029
+SHA256 (rust/crates/ndk-glue-0.6.1.crate) = d9ffb7443daba48349d545028777ca98853b018b4c16624aa01223bc29e078da
+SIZE (rust/crates/ndk-glue-0.6.1.crate) = 5112
+SHA256 (rust/crates/ndk-macro-0.3.0.crate) = 0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c
+SIZE (rust/crates/ndk-macro-0.3.0.crate) = 4884
+SHA256 (rust/crates/ndk-sys-0.3.0.crate) = 6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97
+SIZE (rust/crates/ndk-sys-0.3.0.crate) = 282815
+SHA256 (rust/crates/ntapi-0.3.7.crate) = c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f
+SIZE (rust/crates/ntapi-0.3.7.crate) = 126994
+SHA256 (rust/crates/num-integer-0.1.44.crate) = d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db
+SIZE (rust/crates/num-integer-0.1.44.crate) = 22216
+SHA256 (rust/crates/num-traits-0.2.14.crate) = 9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290
+SIZE (rust/crates/num-traits-0.2.14.crate) = 45476
+SHA256 (rust/crates/num_enum-0.5.7.crate) = cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9
+SIZE (rust/crates/num_enum-0.5.7.crate) = 15199
+SHA256 (rust/crates/num_enum_derive-0.5.7.crate) = 3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce
+SIZE (rust/crates/num_enum_derive-0.5.7.crate) = 12225
+SHA256 (rust/crates/os_str_bytes-6.0.0.crate) = 8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64
+SIZE (rust/crates/os_str_bytes-6.0.0.crate) = 21046
+SHA256 (rust/crates/parking_lot-0.11.2.crate) = 7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99
+SIZE (rust/crates/parking_lot-0.11.2.crate) = 39869
+SHA256 (rust/crates/parking_lot-0.12.0.crate) = 87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58
+SIZE (rust/crates/parking_lot-0.12.0.crate) = 39761
+SHA256 (rust/crates/parking_lot_core-0.8.5.crate) = d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216
+SIZE (rust/crates/parking_lot_core-0.8.5.crate) = 32466
+SHA256 (rust/crates/parking_lot_core-0.9.2.crate) = 995f667a6c822200b0433ac218e05582f0e2efa1b922a3fd2fbaadc5f87bab37
+SIZE (rust/crates/parking_lot_core-0.9.2.crate) = 32254
+SHA256 (rust/crates/percent-encoding-2.1.0.crate) = d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e
+SIZE (rust/crates/percent-encoding-2.1.0.crate) = 9748
+SHA256 (rust/crates/ppv-lite86-0.2.16.crate) = eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872
+SIZE (rust/crates/ppv-lite86-0.2.16.crate) = 22245
+SHA256 (rust/crates/proc-macro-crate-1.1.3.crate) = e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a
+SIZE (rust/crates/proc-macro-crate-1.1.3.crate) = 8758
+SHA256 (rust/crates/proc-macro-error-1.0.4.crate) = da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c
+SIZE (rust/crates/proc-macro-error-1.0.4.crate) = 25293
+SHA256 (rust/crates/proc-macro-error-attr-1.0.4.crate) = a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869
+SIZE (rust/crates/proc-macro-error-attr-1.0.4.crate) = 7971
+SHA256 (rust/crates/proc-macro2-1.0.36.crate) = c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029
+SIZE (rust/crates/proc-macro2-1.0.36.crate) = 41411
+SHA256 (rust/crates/quote-1.0.17.crate) = 632d02bff7f874a36f33ea8bb416cd484b90cc66c1194b1a1110d067a7013f58
+SIZE (rust/crates/quote-1.0.17.crate) = 28629
+SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404
+SIZE (rust/crates/rand-0.8.5.crate) = 87113
+SHA256 (rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88
+SIZE (rust/crates/rand_chacha-0.3.1.crate) = 15251
+SHA256 (rust/crates/rand_core-0.6.3.crate) = d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7
+SIZE (rust/crates/rand_core-0.6.3.crate) = 21938
+SHA256 (rust/crates/redox_syscall-0.2.13.crate) = 62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42
+SIZE (rust/crates/redox_syscall-0.2.13.crate) = 23759
+SHA256 (rust/crates/redox_users-0.4.3.crate) = b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b
+SIZE (rust/crates/redox_users-0.4.3.crate) = 15353
+SHA256 (rust/crates/rustversion-1.0.6.crate) = f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f
+SIZE (rust/crates/rustversion-1.0.6.crate) = 18380
+SHA256 (rust/crates/ryu-1.0.9.crate) = 73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f
+SIZE (rust/crates/ryu-1.0.9.crate) = 48391
+SHA256 (rust/crates/same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502
+SIZE (rust/crates/same-file-1.0.6.crate) = 10183
+SHA256 (rust/crates/scopeguard-1.1.0.crate) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
+SIZE (rust/crates/scopeguard-1.1.0.crate) = 11470
+SHA256 (rust/crates/serde-1.0.136.crate) = ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789
+SIZE (rust/crates/serde-1.0.136.crate) = 76158
+SHA256 (rust/crates/serde_derive-1.0.136.crate) = 08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9
+SIZE (rust/crates/serde_derive-1.0.136.crate) = 54776
+SHA256 (rust/crates/serde_json-1.0.79.crate) = 8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95
+SIZE (rust/crates/serde_json-1.0.79.crate) = 144451
+SHA256 (rust/crates/signal-hook-0.3.13.crate) = 647c97df271007dcea485bb74ffdb57f2e683f1306c854f468a0c244badabf2d
+SIZE (rust/crates/signal-hook-0.3.13.crate) = 49252
+SHA256 (rust/crates/signal-hook-mio-0.2.3.crate) = 29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af
+SIZE (rust/crates/signal-hook-mio-0.2.3.crate) = 9064
+SHA256 (rust/crates/signal-hook-registry-1.4.0.crate) = e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0
+SIZE (rust/crates/signal-hook-registry-1.4.0.crate) = 17912
+SHA256 (rust/crates/smallvec-1.8.0.crate) = f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83
+SIZE (rust/crates/smallvec-1.8.0.crate) = 27992
+SHA256 (rust/crates/strsim-0.10.0.crate) = 73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623
+SIZE (rust/crates/strsim-0.10.0.crate) = 11355
+SHA256 (rust/crates/strum_macros-0.24.0.crate) = 6878079b17446e4d3eba6192bb0a2950d5b14f0ed8424b852310e5a94345d0ef
+SIZE (rust/crates/strum_macros-0.24.0.crate) = 18785
+SHA256 (rust/crates/syn-1.0.90.crate) = 704df27628939572cd88d33f171cd6f896f4eaca85252c6e0a72d8d8287ee86f
+SIZE (rust/crates/syn-1.0.90.crate) = 235956
+SHA256 (rust/crates/termcolor-1.1.3.crate) = bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755
+SIZE (rust/crates/termcolor-1.1.3.crate) = 17242
+SHA256 (rust/crates/textwrap-0.15.0.crate) = b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb
+SIZE (rust/crates/textwrap-0.15.0.crate) = 52998
+SHA256 (rust/crates/thiserror-1.0.30.crate) = 854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417
+SIZE (rust/crates/thiserror-1.0.30.crate) = 17748
+SHA256 (rust/crates/thiserror-impl-1.0.30.crate) = aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b
+SIZE (rust/crates/thiserror-impl-1.0.30.crate) = 15230
+SHA256 (rust/crates/time-0.1.43.crate) = ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438
+SIZE (rust/crates/time-0.1.43.crate) = 28653
+SHA256 (rust/crates/tinyvec-1.5.1.crate) = 2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2
+SIZE (rust/crates/tinyvec-1.5.1.crate) = 44942
+SHA256 (rust/crates/tinyvec_macros-0.1.0.crate) = cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c
+SIZE (rust/crates/tinyvec_macros-0.1.0.crate) = 1817
+SHA256 (rust/crates/toml-0.5.8.crate) = a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa
+SIZE (rust/crates/toml-0.5.8.crate) = 54219
+SHA256 (rust/crates/tui-0.17.0.crate) = 23ed0a32c88b039b73f1b6c5acbd0554bfa5b6be94467375fd947c4de3a02271
+SIZE (rust/crates/tui-0.17.0.crate) = 139547
+SHA256 (rust/crates/unicode-bidi-0.3.7.crate) = 1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f
+SIZE (rust/crates/unicode-bidi-0.3.7.crate) = 33759
+SHA256 (rust/crates/unicode-normalization-0.1.19.crate) = d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9
+SIZE (rust/crates/unicode-normalization-0.1.19.crate) = 107353
+SHA256 (rust/crates/unicode-segmentation-1.9.0.crate) = 7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99
+SIZE (rust/crates/unicode-segmentation-1.9.0.crate) = 93241
+SHA256 (rust/crates/unicode-width-0.1.9.crate) = 3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973
+SIZE (rust/crates/unicode-width-0.1.9.crate) = 16745
+SHA256 (rust/crates/unicode-xid-0.2.2.crate) = 8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3
+SIZE (rust/crates/unicode-xid-0.2.2.crate) = 14955
+SHA256 (rust/crates/url-2.2.2.crate) = a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c
+SIZE (rust/crates/url-2.2.2.crate) = 68555
+SHA256 (rust/crates/version_check-0.9.4.crate) = 49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f
+SIZE (rust/crates/version_check-0.9.4.crate) = 14895
+SHA256 (rust/crates/walkdir-2.3.2.crate) = 808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56
+SIZE (rust/crates/walkdir-2.3.2.crate) = 23516
+SHA256 (rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6
+SIZE (rust/crates/wasi-0.10.2+wasi-snapshot-preview1.crate) = 27505
+SHA256 (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423
+SIZE (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 28131
+SHA256 (rust/crates/wasm-bindgen-0.2.79.crate) = 25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06
+SIZE (rust/crates/wasm-bindgen-0.2.79.crate) = 164276
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.79.crate) = 8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca
+SIZE (rust/crates/wasm-bindgen-backend-0.2.79.crate) = 25776
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.79.crate) = 2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01
+SIZE (rust/crates/wasm-bindgen-macro-0.2.79.crate) = 11806
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.79.crate) = bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.79.crate) = 17861
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.79.crate) = 3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2
+SIZE (rust/crates/wasm-bindgen-shared-0.2.79.crate) = 7204
+SHA256 (rust/crates/web-sys-0.3.56.crate) = c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb
+SIZE (rust/crates/web-sys-0.3.56.crate) = 666465
+SHA256 (rust/crates/webbrowser-0.7.1.crate) = fc6a3cffdb686fbb24d9fb8f03a213803277ed2300f11026a3afe1f108dc021b
+SIZE (rust/crates/webbrowser-0.7.1.crate) = 20119
+SHA256 (rust/crates/widestring-0.5.1.crate) = 17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983
+SIZE (rust/crates/widestring-0.5.1.crate) = 41338
+SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (rust/crates/winapi-util-0.1.5.crate) = 70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178
+SIZE (rust/crates/winapi-util-0.1.5.crate) = 10164
+SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (rust/crates/windows-sys-0.34.0.crate) = 5acdd78cb4ba54c0045ac14f62d8f94a03d10047904ae2a40afa1e99d8f70825
+SIZE (rust/crates/windows-sys-0.34.0.crate) = 3369228
+SHA256 (rust/crates/windows_aarch64_msvc-0.34.0.crate) = 17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d
+SIZE (rust/crates/windows_aarch64_msvc-0.34.0.crate) = 674445
+SHA256 (rust/crates/windows_i686_gnu-0.34.0.crate) = 2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed
+SIZE (rust/crates/windows_i686_gnu-0.34.0.crate) = 772343
+SHA256 (rust/crates/windows_i686_msvc-0.34.0.crate) = 9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956
+SIZE (rust/crates/windows_i686_msvc-0.34.0.crate) = 733497
+SHA256 (rust/crates/windows_x86_64_gnu-0.34.0.crate) = cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4
+SIZE (rust/crates/windows_x86_64_gnu-0.34.0.crate) = 744301
+SHA256 (rust/crates/windows_x86_64_msvc-0.34.0.crate) = d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9
+SIZE (rust/crates/windows_x86_64_msvc-0.34.0.crate) = 669900
+SHA256 (jrnxf-thokr-v0.4.1_GH0.tar.gz) = 8ab9ebe95e2087eb8bf843c775e9d468daa14da031a72c90f799ade5cde9faa6
+SIZE (jrnxf-thokr-v0.4.1_GH0.tar.gz) = 62301
diff --git a/deskutils/thokr/pkg-descr b/deskutils/thokr/pkg-descr
new file mode 100644
index 000000000000..f00207e6262a
--- /dev/null
+++ b/deskutils/thokr/pkg-descr
@@ -0,0 +1 @@
+thokr is sleek typing TUI with visualized results and historical logging.