From f8a06922c21b32bbf54a4b5a5552b62163feb2a3 Mon Sep 17 00:00:00 2001 From: davidovski Date: Thu, 11 Apr 2024 11:03:02 +0100 Subject: add typr entry --- site/entries/typr.html | 27 +++++++++++++++++++++++++++ site/images/typr.gif | Bin 0 -> 1319817 bytes site/index.html | 4 ++-- 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100755 site/entries/typr.html create mode 100644 site/images/typr.gif diff --git a/site/entries/typr.html b/site/entries/typr.html new file mode 100755 index 0000000..79b7d20 --- /dev/null +++ b/site/entries/typr.html @@ -0,0 +1,27 @@ +#!./entries.sh + +# typr.sh + +`typr.sh` is a typing test for your terminal + +Try it out by downloading [typr](https://davidovski.xyz/typr.sh) or running it directly (at ur own risk): + +``` +sh -c "$(curl https://davidovski.xyz/typr.sh)" +``` + +I decided to try and write an interactive program purely in POSIX shell, so I decided to try and create a game like [monkeytype](monkeytype.com) but for the terminal. It currently has two test modes, words and time: testing how long it takes for you to type a given amount of words and testing how many words you can type in a given amount of time respectively. You can see the options by doing `typr.sh -h` + + +When i say pure POSIX shell, I mean as pure as it can get: no bashisms or gnu flags (asterix here) while avoiding forking to other programs like the plague. Some features I took as shell "builtins", being ones that are builtin to `dash`, so printf was used quite heavily. + +The only exceptions to the no forking rule are using `stty` to configure the terminal (though there could be other ways to do this) and `date` to get accurate time. While I did use the GNU "%N" feature of date to get the time in nanoseconds, this is entirely optional and the program should work without this, though will suffer from slightly less precision. + +Instead of using ncurses (tput) I decided to just embed all of the escape sequences directly in the strings printed. This might make it a bit difficult to open the script in some editors, but it means that there is one less dependency, so hopefully it will run on most places easier. + +I've not tested it on many machines, but I'm curious to see how well it works on different configurations, so please try it out and tell me how it works. (contact info on [index.html](/#contact)). + +![](/images/typr.gif) + +ignore me typing really slowly here this is just a test. I can type much faster than that, promise + diff --git a/site/images/typr.gif b/site/images/typr.gif new file mode 100644 index 0000000..355055a Binary files /dev/null and b/site/images/typr.gif differ diff --git a/site/index.html b/site/index.html index bcbd10f..926ddb7 100755 --- a/site/index.html +++ b/site/index.html @@ -44,14 +44,14 @@ EOF cat << EOF
-

donate

+

if you like what i do and you want to support me, consider donating Monero

49ECi71yshT6kvzFJKyvVDXLarVp9EGR54ZUw9ebqPetKn2kbaRavFG4FCG4MALkGXVZ16KM5c92MJ7vDWL7iwFs66Q1UQ2
-

contact

+

contact

if you want to contact me, you can message me on matrix @ix:davidovski.xyz, XMPP ix@davidovski.xyz, or via the email linked at the top of the page.

-- cgit v1.2.1