about summary refs log tree commit diff stats
path: root/bin/fcard
diff options
context:
space:
mode:
authorensa <@>2023-02-04 20:03:47 -0800
committerensa <@>2023-02-04 20:52:52 -0800
commit75ee668954833ab6ba9287ed5eb16a9957edcac2 (patch)
tree07d9f88939ab0fd93d93c6f4ddbbc7b548a812f0 /bin/fcard
parentebae3707b36e9a83014ef08271d75bd9826bb999 (diff)
downloadcfg-75ee668954833ab6ba9287ed5eb16a9957edcac2.tar.gz
restructure, cleanups, greener pastures, new additions
config and data are now etc and share, to better match my homedir

bin:
generally, shellcheck errors (where there's actually a problem) have been fixed
bother now includes alternate support for libnotify as well as my notif
comm-sel now loops, so spawning programs doesn't require multiple runs
fcard: my flashcard script
	accepts a tsv's path on $1, expecting:
		the word on column 1
		the defintion on column 2
		(optional) the section on column 3
	if $2 is specified, only runs through lines with that string as its section
fl:
	added aesgcm to the url detector string, because of profanity
	cleaned up urlparse
	now outputs the urls, one per line, making it more unixy
flc: a quick script. uses fl's output to do what fl once did on its own.
kbsetup now lacks escape xcape magic, qmk does that for me now.
lh: general cleanup. added and removed a site for the video extract section
metamv: gives arguments self-describing names based off metadata.
	mainly just for sorting FLACs off bandcamp
	this might not be entirely safe. use your own discretion.
notif:
	xnotify wasn't happy with the previous design.
	it was sending notifications in pieces.
	this new one's an absolute mess but it works well, is smaller, and faster
op: changed the pdf bit to allow variants
smv: file is self-explanatory
	applies the pipeline specified in "$1" to every file name specified after it
xbg: contains a fallback if xwallpaper isn't downloaded or its path is empty.
yw: just a quick and dirty line for watching things in mpv using yt-dlp.

etc:
X11/:
	xprofile now includes the latest xnotify initialization.
	xresources prevents a variable collision
		also updates new xnotify resource names
		and changes which program to pipe the screen to.
mpd/mpd.conf
	just updates to path structure.
yt-dlp/*
	too many changes to describe. should be fairly self-explanatory.
ksh/:
	prompt.ksh:	the $ is green now. hooray!
lf/lfrc: removed ttmsh function. i use my server for that now.
newsboat/config: external-url-viewer is now non-python.
zathura/zathurarc: font is now hermit.
aliasrc:
	exa is no more.
	vis is also no more.
	youtube-dl is dead. long live yt-dlp.
shrc: locale vars changed to ones than glibc is ok with
Diffstat (limited to 'bin/fcard')
-rwxr-xr-xbin/fcard45
1 files changed, 45 insertions, 0 deletions
diff --git a/bin/fcard b/bin/fcard
new file mode 100755
index 0000000..e4a851d
--- /dev/null
+++ b/bin/fcard
@@ -0,0 +1,45 @@
+#!/bin/sh
+# flash card substitute
+# usage: fcard dict.tsv section
+# the -z code is extremely wip, don't use it
+
+while getopts z: opt
+do
+	case $opt in
+	z)	RAND="|grabbag" ;;
+	?)	printf '%s\n' "idiot" 1>&2 && exit 2 ;;
+	esac
+done
+shift $((OPTIND - 1))
+
+rand() {
+	tr -cd '[:digit:]'</dev/urandom|fold -w 4|head -1
+}
+grabbag() {
+#	digit urandom % number applicable lines
+	size="$(wc -l)"
+	oldlist="$(cat)"
+	newlist=""
+	a=0
+	while a="$size"; do
+	z="$(($(rand)%a))"
+	newlist="$(cut -d ' ' -f "$z"<<EOF
+$oldlist
+EOF
+) "
+	oldlist="$(cut -d ' ' -f "-$((z-1)),$((z+1))-" <<EOF
+$oldlist
+EOF
+)"
+#	add z to space-delim'd list
+#	remove from input list
+	a=$((a-1))
+	done
+	printf '%s\n' "$newlist"
+}
+for num in $(eval 'grep -n "${2:-.}"\$ "$1"|cut -d : -f 1'"$RAND"); do
+	sed -n "$num"P "$1" | cut -f 1 | tr '\n' '\t'
+	read -r _
+	sed -n "$num"P "$1" | cut -f 2 | sed '/^$/D'
+	printf '\n'
+done