about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rwxr-xr-xbin/bother23
-rwxr-xr-xbin/comm-sel13
-rwxr-xr-xbin/fcard45
-rwxr-xr-xbin/fl30
-rw-r--r--bin/flc4
-rwxr-xr-xbin/kbsetup2
-rwxr-xr-xbin/lh19
-rwxr-xr-xbin/metamv8
-rwxr-xr-xbin/notif17
-rwxr-xr-xbin/op2
-rwxr-xr-xbin/smv10
-rwxr-xr-xbin/xbg2
-rwxr-xr-xbin/yw4
-rw-r--r--config/betteresc2
-rw-r--r--config/mpd/mpd.conf9
-rw-r--r--config/vis/themes/causalagency.lua63
-rw-r--r--config/vis/visrc.lua16
-rw-r--r--config/youtube-dl/config9
-rw-r--r--config/youtube-dl/config-music6
-rw-r--r--etc/X11/xprofile (renamed from config/X11/xprofile)18
-rw-r--r--etc/X11/xresources (renamed from config/X11/xresources)19
-rw-r--r--etc/aliasrc (renamed from config/aliasrc)19
-rwxr-xr-xetc/color/colors.sh (renamed from config/color/colors.sh)0
-rw-r--r--etc/ksh/completions.ksh (renamed from config/ksh/completions.ksh)14
-rw-r--r--etc/ksh/diraliases (renamed from config/ksh/diraliases)6
-rw-r--r--etc/ksh/functions/l. (renamed from config/ksh/functions/l.)0
-rw-r--r--etc/ksh/functions/man_complete (renamed from config/ksh/functions/man_complete)0
-rw-r--r--etc/ksh/functions/mc (renamed from config/ksh/functions/mc)0
-rw-r--r--etc/ksh/functions/mpvpin (renamed from config/ksh/functions/mpvpin)0
-rw-r--r--etc/ksh/functions/pcl (renamed from config/ksh/functions/pcl)0
-rw-r--r--etc/ksh/functions/pct (renamed from config/ksh/functions/pct)0
-rw-r--r--etc/ksh/functions/pkg_complete (renamed from config/ksh/functions/pkg_complete)0
-rw-r--r--etc/ksh/functions/update_completion_manpages (renamed from config/ksh/functions/update_completion_manpages)0
-rw-r--r--etc/ksh/functions/update_completion_packages_obsd (renamed from config/ksh/functions/update_completion_packages_obsd)0
-rw-r--r--etc/ksh/functions/update_completion_pkg_inst_obsd (renamed from config/ksh/functions/update_completion_pkg_inst_obsd)0
-rw-r--r--etc/ksh/functions/update_completions (renamed from config/ksh/functions/update_completions)0
-rw-r--r--etc/ksh/kshrc (renamed from config/ksh/kshrc)24
-rw-r--r--etc/ksh/prompt.ksh (renamed from config/ksh/prompt.ksh)2
-rw-r--r--etc/lf/lfrc (renamed from config/lf/lfrc)8
-rw-r--r--etc/mpd/mpd.conf18
-rw-r--r--etc/ncmpcpp/bindings (renamed from config/ncmpcpp/bindings)0
-rw-r--r--etc/ncmpcpp/config (renamed from config/ncmpcpp/config)4
-rw-r--r--etc/newsboat/config (renamed from config/newsboat/config)8
-rw-r--r--etc/shrc (renamed from config/shrc)18
-rw-r--r--etc/user-dirs.dirs (renamed from config/user-dirs.dirs)0
-rw-r--r--etc/yt-dlp/config16
-rw-r--r--etc/yt-dlp/config-music7
-rw-r--r--etc/zathura/zathurarc (renamed from config/zathura/zathurarc)2
-rw-r--r--share/mailcap (renamed from data/mailcap)0
-rw-r--r--share/man/man7/user-hier.7 (renamed from data/man/man7/user-hier.7)0
50 files changed, 232 insertions, 235 deletions
diff --git a/bin/bother b/bin/bother
index d3f5be9..be6de1c 100755
--- a/bin/bother
+++ b/bin/bother
@@ -1,24 +1,27 @@
 #!/bin/sh
 # puts up a critical notification if $HOME/today exists, containing the contents of that file.
 if [ -z "$XFILE" ]; then
-if [ -f $HOME/.xsession ]; then
-	XFILE=$HOME/.xsession
-elif [ -f $HOME/.xinitrc ]; then
-	XFILE=$HOME/.xinitrc
+if [ -f "$HOME"/.xsession ]; then
+	XFILE="$HOME"/.xsession
+elif [ -f "$HOME"/.xinitrc ]; then
+	XFILE="$HOME"/.xinitrc
 fi
 fi
-if grep -q "dwm" $XFILE; then
+if grep -q "dwm" "$XFILE"; then
 	WM=dwm
-elif grep -q 'exec' $XFILE; then
-	WM=$(grep 'exec' $XFILE|cut -f 2 -d ' ' -)
+elif grep -q 'exec' "$XFILE"; then
+	WM=$(grep 'exec' "$XFILE"|cut -f 2 -d ' ')
+elif grep -q wm "$XFILE"; then
+	WM=$(grep wm "$XFILE"|cut -f 2 -d ' ')
 else
-	WM=$(tail -1 $XFILE)
+	WM=$(tail -1 "$XFILE")
 fi
 if [ -f "$HOME"/today ]; then
-	until pgrep $WM>/dev/null
+	until pgrep "$WM">/dev/null
 	do
 		:
 	done
 	sleep 0.5
-	notif "DO TODAY:" "$(tr '\n' '\t'<"$HOME"/today)"
+	notif -s 0 "DO TODAY:" "$(tr '\n' '\t'<"$HOME"/today)"
+#	notify-send -t 0 "DO TODAY:" "$(cat<"$HOME"/today)"
 fi
diff --git a/bin/comm-sel b/bin/comm-sel
index 3dc1527..70c2e77 100755
--- a/bin/comm-sel
+++ b/bin/comm-sel
@@ -6,8 +6,11 @@ case "$TERMINAL" in
 	urxvt) CLASS='-name';;
 	alacritty|kitty) CLASS='--class';;
 esac
-case "$(dmenu_path|grep -E "catgirl$|scli$"|dmenu -p "choose chat app:")" in
-	catgirl) catgirl-open.sh &;;
-	scli) $TERMINAL $CLASS comm -e scli&;;
-	*) return;;
-esac
+while
+	case "$(dmenu_path|(grep -E 'catgirl$|profanity$';printf 'exit\n')|dmenu -p 'choose chat app:')" in
+		catgirl) catgirl-open.sh &;;
+		profanity) "$TERMINAL" "$CLASS" comm -e profanity&;;
+		*) return 1;;
+	esac
+do :
+done
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
diff --git a/bin/fl b/bin/fl
index bd98a63..cc8924a 100755
--- a/bin/fl
+++ b/bin/fl
@@ -5,28 +5,34 @@
 
 # from pure-sh-bible, strips from the start of a string
 lstrip() {
-	printf '%s\n' "${1##$2}"
+	printf '%s\n' "${1##"$2"}"
 }
 
-# put url-finding regex in a variable so no lines go over 80 chars
-re_urls='((https?://|www\.)[[:alnum:].]*:?[[:alnum:]./@$&%?$#=_-]*)'
+# url-finding regex
+re_urls='(((https?|aesgcm)://|www\.)[[:alnum:].]*:?[[:alnum:]./@$&%?$#=_-]*)'
 
 # finds links, puts them in a list
 # sort -u prevents duplicates, but also sorts the links
 urlparse() {
-	lstrip "$(cat)" "*\│" |
+	input="$(if [ -n "$1" ]; then printf '%s\n' "$*"; else cat; fi)"
+	lstrip "$input" "*\│" |
 	grep -Eo "$re_urls" |
 	sort -u | sed 's|^www.|http://www\.|g'
 }
-if [ -n "$1" ]; then
-	urls=$(echo "$@"|urlparse)
-else
-	urls=$(urlparse)
-fi
+
+set -- $(urlparse "$@")
 
 # wipe IFS so dmenu handles being sent the links properly
 IFS=
 
-# send any found links to dmenu so one can be chosen to be sent to the clipboard
-[ -n "$urls" ] &&
-	echo $urls | dmenu -i -p 'copy which url?' -l 10 | xclip -r -sel c
\ No newline at end of file
+# send any found links to select so one can be chosen to be sent to the clipboard
+#select url;
+#do
+#	printf '%s' "$url"
+#done
+for url; do
+	printf '%s\n' "$url"
+done
+	
+#[ -n "$urls" ] &&
+#	echo $urls | dmenu -i -p 'copy which url?' -l 10 | xclip -r -sel c
diff --git a/bin/flc b/bin/flc
new file mode 100644
index 0000000..718d3ef
--- /dev/null
+++ b/bin/flc
@@ -0,0 +1,4 @@
+#!/bin/sh
+fl "$@"|
+dmenu -i -p 'copy which url?' -l 10|
+xsel -ib
diff --git a/bin/kbsetup b/bin/kbsetup
index df100ff..5dcbfdb 100755
--- a/bin/kbsetup
+++ b/bin/kbsetup
@@ -1,6 +1,4 @@
 #!/bin/sh
 setxkbmap -option caps:shift -layout us -variant dvp
-xmodmap $HOME_ETC/betteresc
-xcape -e 'Hyper_L=Escape'
 xcape -e 'Control_L=Control_L|b'
 xset r rate 300 50
diff --git a/bin/lh b/bin/lh
index 71bc747..07be403 100755
--- a/bin/lh
+++ b/bin/lh
@@ -53,27 +53,28 @@ findredir() {
 while [ $# -ne 0 ]
 do
 # handle redirects. tr removes control characters, so the case statement below works as expected.
-URL=$(echo "$1"|findredir|tail -1|tr -d '[:cntrl:]')
+URL="$(echo "$1"|findredir|tail -1|tr -d '[:cntrl:]')"
 
 # if there were no redirects, just set URL to the first argument
 [ -z "$URL" ] && URL="$1"
 
 case "$URL" in
 	gemini://*|gopher://*)
-		$TERMINAL -e bombadillo "$URL" ;;
+		"$TERMINAL" -e bombadillo "$URL" ;;
 	*.mov*|*.mkv*|*.webm*|*.mp4*)
 		mpv --no-terminal "$URL" & ;;
-	*invidio.us/watch*|*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*hooktube.com*|*bitchute.com*|*twitch.tv/videos/*|*twitch.tv/*/v/*)
-		mpv --no-terminal --ytdl "$URL" & ;;
+	*invidio.us/watch*|*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*bitchute.com*|*twitch.tv/videos/*|*twitch.tv/*/v/*|*clips.twitch.tv*|*streamable.com*)
+		yw "$URL" & ;;
 	*twitch.tv/*)
 		STREAMQUAL="$(split "$(streamlink "$URL"|grep 'Available streams')" ", "|\
 			grep -E "[0-9]"|\
 			dmenu -p "choose stream quality for $URL")"
-		streamlink -p mpv $URL $STREAMQUAL >/dev/null 2>&1 & ;;
-	*.png*|*.jpg*|*.jpe*|*.jpeg*|*.gif*)
+		streamlink -p mpv "$URL" "$STREAMQUAL" >/dev/null 2>&1 & ;;
+	*.png*|*.jp[eg]*|*.gif*)
 		IMGPATH="/tmp/$(lstrip "$URL" "*/")"
-		curl -sL "$URL" >"$IMGPATH"&&sxiv -pqa "$IMGPATH" & ;;
-	*.mp3*|*.m4a*|*.flac*|*.aiff*|*.opus*|*.ogg*|*.mp3?source*|*.wav*)
+		curl -sL "$URL" > "$IMGPATH" &&
+		sxiv -pqa "$IMGPATH" & ;;
+	*.mp3*|*.m4a*|*.flac*|*.aiff*|*.opus*|*.ogg*|*.wav*)
 		$TERMINAL -e mpv "$URL"& ;;
 	*.epub*|*.pdf*|*.djvu*)
 		BOOKPATH="/tmp/$(lstrip "$URL" "*/")"
@@ -86,7 +87,7 @@ case "$URL" in
 		if [ -f "$URL" ]; then
 			op "$URL"
 		else
-			$BROWSER "$URL" >/dev/null 2>&1 &
+			"$BROWSER" "$URL" >/dev/null 2>&1 &
 		fi ;;
 esac
 shift
diff --git a/bin/metamv b/bin/metamv
new file mode 100755
index 0000000..3a2d8ba
--- /dev/null
+++ b/bin/metamv
@@ -0,0 +1,8 @@
+#!/bin/sh
+# usage: metamv FILE ...
+# e.g: metamv *.flac
+for file; do 
+	num="$(exiftool -m -p '$tracknumber$track' -- "$file")"
+	[ "$num" -lt 10 ] && num=0"$num"
+	mv -- "$file" "$num-$(exiftool -p '$artist-$title.$filetypeextension' -- "$file")"
+done
diff --git a/bin/notif b/bin/notif
index 5e75fd8..ad1b625 100755
--- a/bin/notif
+++ b/bin/notif
@@ -1,7 +1,7 @@
 #!/bin/sh
 # sends xnotify a notification
 unset TAG SEC
-exec > ${XNOTIFY_FIFO:=$HOME_CACHE/xnotify$DISPLAY.fifo}
+exec > "${XNOTIFY_FIFO:=$HOME_CACHE/xnotify.fifo}"
 ug_err()
 {
 	echo "${1}" 1>&2 && return "${2:-1}"
@@ -20,16 +20,5 @@ while getopts s:t: arg; do
 	*)	usage;;
 	esac
 done
-if [ -n "$SEC" ]; then
-	printf 'SEC:%s\t' "$SEC"
-	shift 2
-fi
-if [ -n "$TAG" ]; then
-	printf 'TAG:%s\t' "$TAG"
-	shift 2
-fi
-case "$#" in
-	1) printf '%s\n' "$1";;
-	2) printf '%s\t%s\n' "$1" "$2";;
-	*) exit;;
-esac
+shift $((OPTIND - 1))
+printf ${SEC+SEC:%s"\t"}${TAG+TAG:%s"\t"}${2+%s"\t"}'%s\n' $SEC $TAG "$1" "$2"
diff --git a/bin/op b/bin/op
index 688912b..7d426fc 100755
--- a/bin/op
+++ b/bin/op
@@ -12,7 +12,7 @@ echo() {
 }
 case "$FILEMIME" in
 	#ebooks
-	application/epub*|application/pdf|application/postscript|image/vnd.djvu)
+	application/epub*|application/pdf*|application/postscript|image/vnd.djvu)
 		${READER:-zathura} "$FILEPATH">/dev/null 2>&1 & ;;
 	#videos
 	video/*)
diff --git a/bin/smv b/bin/smv
new file mode 100755
index 0000000..742d1d3
--- /dev/null
+++ b/bin/smv
@@ -0,0 +1,10 @@
+#!/bin/sh
+# smv: special move
+# smv pipeline file1 file2 file3 ...
+# $1 is the pipeline to apply to the filenames of the files listed
+CMD="$1"
+shift
+for file
+do
+	mv "$file" "$(printf "$file"|sh -c "$CMD")"
+done
diff --git a/bin/xbg b/bin/xbg
index 339ed69..a94ae67 100755
--- a/bin/xbg
+++ b/bin/xbg
@@ -8,4 +8,4 @@ else
 	PICPATH=${PICPATH:="$HOME/Pictures/bg.png"}
 fi
 [ -n "$1" ]&&ln -sf "$1" "$PICPATH"
-xwallpaper --zoom "$PICPATH"
+xwallpaper --zoom "$PICPATH"||xsetroot -solid '#14130e'
diff --git a/bin/yw b/bin/yw
new file mode 100755
index 0000000..4e0337f
--- /dev/null
+++ b/bin/yw
@@ -0,0 +1,4 @@
+#!/bin/sh
+# for streaming things from yt-dlp to mpv. $1 is the url
+yt-dlp -f b/bv*+ba --external-downloader curl -o - "$1" 2> $HOME_LOG/ytdl.log | mpv - > /dev/null
+rm -f -- -.*.vtt
diff --git a/config/betteresc b/config/betteresc
deleted file mode 100644
index 3c84ed1..0000000
--- a/config/betteresc
+++ /dev/null
@@ -1,2 +0,0 @@
-keycode 9 = Hyper_L
-keycode any = Escape
diff --git a/config/mpd/mpd.conf b/config/mpd/mpd.conf
deleted file mode 100644
index 59a1215..0000000
--- a/config/mpd/mpd.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-playlist_directory	"~/.local/share/mpd/playlists" # playlist data
-db_file			"~/.local/share/mpd/database" # database file
-pid_file		"~/.local/share/mpd/pid" # tracks MPD's pid
-state_file		"~/.local/share/mpd/state" # tracks MPD's state while it's down
-sticker_file		"~/.local/share/mpd/sticker.sql" # auxillary stats
-
-bind_to_address		"localhost" # local daemon
-restore_paused		"yes" # starts paused if MPD is paused when it closes
-auto_update		"yes" # updates the database when the directory changes
diff --git a/config/vis/themes/causalagency.lua b/config/vis/themes/causalagency.lua
deleted file mode 100644
index 723328a..0000000
--- a/config/vis/themes/causalagency.lua
+++ /dev/null
@@ -1,63 +0,0 @@
--- uses 24-bit color values, based off causalagency's scheme
-local lexers = vis.lexers
-
-local colors = {
-	['black'] = '#16150e',
-	['red'] = '#a32810',
-	['green'] = '#727a18',
-	['brown'] = '#a37720',
-	['blue'] = '#3d6266',
-	['purp'] = '#7a4955',
-	['cyan'] = '#557a55',
-	['ligrey'] = '#8e8463',
-	['dagrey'] = '#4c4635',
-	['lired'] = '#cc3214',
-	['ligreen'] = '#8e991e',
-	['yellow'] = '#cc9528',
-	['liblue'] = '#4c7b7f',
-	['lipurp'] = '#995b6b',
-	['licyan'] = '#6b996b',
-	['white'] = '#ccbc8e',
-	['back'] = '#14130e',
-	['fore'] = '#b7a980',
-	['sel'] = '#a34110',
-	['curs'] = '#72694f',
-}
-
-local fg = ',fore:'..colors.fore..','
-local bg = ',back:'..colors.back..','
-
-lexers.STYLE_DEFAULT = bg..fg
-lexers.STYLE_NOTHING = bg
-lexers.STYLE_CLASS = 'fore:'..colors.yellow
-lexers.STYLE_COMMENT = 'fore:'..colors.ligrey..',italics'
-lexers.STYLE_CONSTANT = 'fore:'..colors.cyan
-lexers.STYLE_DEFINITION = 'fore:'..colors.blue
-lexers.STYLE_ERROR = 'back:'..colors.lired..fg..',italics'
-lexers.STYLE_FUNCTION = 'fore:'..colors.cyan
-lexers.STYLE_KEYWORD = 'fore:'..colors.liblue
-lexers.STYLE_LABEL = 'fore:'..colors.yellow
-lexers.STYLE_NUMBER = 'fore:'..colors.cyan
-lexers.STYLE_OPERATOR = 'fore:'..colors.ligrey
-lexers.STYLE_REGEX = 'fore:'..colors.ligreen
-lexers.STYLE_STRING = 'fore:'..colors.cyan
-lexers.STYLE_PREPROCESSOR = 'fore:'..colors.green
-lexers.STYLE_TAG = 'fore:'..colors.green
-lexers.STYLE_TYPE = 'fore:'..colors.licyan
-lexers.STYLE_VARIABLE = 'fore:'..colors.licyan
-lexers.STYLE_WHITESPACE = 'fore:'..colors.dagrey
-lexers.STYLE_EMBEDDED = 'back:'..colors.lipurp
-lexers.STYLE_IDENTIFIER = 'fore:'..colors.green
-
-lexers.STYLE_LINENUMBER = 'fore:'..colors.dagrey
-lexers.STYLE_LINENUMBER_CURSOR = 'back:'..colors.back..',fore:'..colors.ligrey
-lexers.STYLE_CURSOR = 'fore:'..colors.curs..',reverse'
-lexers.STYLE_CURSOR_PRIMARY = lexers.STYLE_CURSOR..',bold'
-lexers.STYLE_CURSOR_LINE = 'fore:'..colors.dagrey
-lexers.STYLE_COLOR_COLUMN = 'back:'..colors.dagrey
-lexers.STYLE_SELECTION = 'back:'..colors.sel
-lexers.STYLE_STATUS = 'fore:'..colors.ligrey..',back:'..colors.black
-lexers.STYLE_STATUS_FOCUSED = 'fore:'..colors.dagrey..',back:'..colors.white
-lexers.STYLE_SEPARATOR = lexers.STYLE_DEFAULT
-lexers.STYLE_INFO = lexers.STYLE_DEFAULT..',bold'
-lexers.STYLE_EOF = ''
diff --git a/config/vis/visrc.lua b/config/vis/visrc.lua
deleted file mode 100644
index 569e482..0000000
--- a/config/vis/visrc.lua
+++ /dev/null
@@ -1,16 +0,0 @@
--- load standard vis module, providing parts of the Lua API
-require('vis')
-require('ctags')
-
-vis.events.subscribe(vis.events.INIT, function()
-	-- Your global configuration options
-	vis:command('set theme causalagency')
-	vis:command('map insert <M-Escape> <Escape>')
-end)
-
-vis.events.subscribe(vis.events.WIN_OPEN, function(win)
-	-- Your per window configuration options e.g.
-	vis:command('set cul')
-	vis:command('set nu')
-	vis:command('set ai')
-end)
diff --git a/config/youtube-dl/config b/config/youtube-dl/config
deleted file mode 100644
index b9ec27f..0000000
--- a/config/youtube-dl/config
+++ /dev/null
@@ -1,9 +0,0 @@
---prefer-free-formats
-# always use axel
---external-downloader axel
-# coherent output format
---output ~/share/xdg/vid/%(uploader)s/%(title)s.%(ext)s
-# always merge into mkv
---merge-output-format mkv
-# embed subtitles if they are to be written
---embed-subs
diff --git a/config/youtube-dl/config-music b/config/youtube-dl/config-music
deleted file mode 100644
index 1396246..0000000
--- a/config/youtube-dl/config-music
+++ /dev/null
@@ -1,6 +0,0 @@
-# only download audio stream
---format bestaudio
-# always use axel
-#--external-downloader axel
-# coherent output format
---output ~/share/xdg/mus/%(uploader)s/%(album)s/S%(track_number)02d-%(track)s.%(ext)s
diff --git a/config/X11/xprofile b/etc/X11/xprofile
index 058f55b..9c9dc74 100644
--- a/config/X11/xprofile
+++ b/etc/X11/xprofile
@@ -1,25 +1,25 @@
 #!/bin/sh
 . $HOME/etc/shrc
-# set caps to escape when pressed and super when held
-# also sets dvorak programmer layout
+# sets dvorak programmer layout
+# also increases autorepeat rate
 kbsetup
 ## detect if laptop has other display connected, kills builtin if so
 #[ $(xrandr -q|grep -cE '^(DP|VGA|HDMI)-[[:digit:]] connected') -gt 0 ] && monitor
 # disables the beeper
 xset b off
 # enables x colorscheme
-xrdb -load $HOME_ETC/X11/xresources
+xrdb -load "$HOME_ETC"/X11/xresources
 
 # set background
 xbg &
 # notification daemon
 # setup xnotify
-export XNOTIFY_FIFO="$HOME_CACHE/xnotify$DISPLAY.fifo"
-rm -f $XNOTIFY_FIFO
-mkfifo $XNOTIFY_FIFO
-xnotify 0<>$XNOTIFY_FIFO &
+export XNOTIFY_FIFO="$HOME_CACHE/xnotify.fifo"
+rm -f "$XNOTIFY_FIFO"
+mkfifo "$XNOTIFY_FIFO"
+xnotify 0<>"$XNOTIFY_FIFO" &
 # start tiramisu
-tiramisu -j | jq --raw-output --unbuffered '.summary + "\t" + .body' > $XNOTIFY_FIFO &
+tiramisu -o "$(printf '#summary\t#body\n')" > "$XNOTIFY_FIFO" &
 # status bar
 bar.sh &
 # mouse vanishes when typing
@@ -27,6 +27,6 @@ xbanish &
 # activate mpd scrobbler
 mpdas -c $HOME_ETC/mpdasrc &
 # remind user of important tasks
-bother &
+XFILE="$HOME_ETC/X11/xsession" bother &
 # cleanup tabbed
 rm $HOME_CACHE/catgirl/tabbed-catgirl.xid
diff --git a/config/X11/xresources b/etc/X11/xresources
index e7a69b2..2a3d39c 100644
--- a/config/X11/xresources
+++ b/etc/X11/xresources
@@ -3,7 +3,7 @@
 #define fg	#b7a980
 #define sel	#a34110
 #define curs	#72694f
-#define bold	#CCBC8E
+#define boldc	#CCBC8E
 
 #define black	#161510
 #define red	#a32810
@@ -51,10 +51,10 @@
 xterm*termName: xterm-16color
 xterm*metaSendsEscape: true
 xterm*font: -xos4-terminus-medium-r-normal--12-120-72-72-c-60-iso10646-1
-xterm*faceName: Hermit:style=regular:size=10
+xterm*faceName: Hermit:style=regular:size=11
 xterm*cursorColor: curs
 xterm*boldMode: false
-xterm*colorBD: bold
+xterm*colorBD: boldc
 xterm*colorBDMode: true
 xterm*highlightColorMode: true
 xterm*highlightReverse: false
@@ -62,7 +62,7 @@ xterm*highlightColor: sel
 xterm*scrollBar: false
 xterm*dynamicColors: false
 xterm*vt100.Translations: #override \
-    Alt Shift <Key>L:   exec-selectable("fl %r",page) \n\
+    Alt Shift <Key>L:   exec-selectable("flc %t",page) \n\
     Alt Shift <Key>Y:   insert-selection(PRIMARY) \n\
     Alt Shift <Key>V:   insert-selection(CLIPBOARD) \n\
     Alt Shift <Key>C:   copy-selection(CLIPBOARD) \n\
@@ -70,7 +70,7 @@ xterm*vt100.Translations: #override \
     Alt <Key> J:   scroll-forw(1,line) \n\
     Alt <Key> U:   scroll-back(1,halfpage) \n\
     Alt <Key> D:   scroll-forw(1,halfpage) \n
-xterm*allowMouseOps: false
+xterm*allowMouseOps:	false
 
 ! Xclock colors.
 XClock*majorColor:  rgba:cc/bc/8e/ff
@@ -85,13 +85,14 @@ Sxiv*background: bg
 Sxiv*foreground: fg
 
 ! xlock settings
-XLock.mode: random
+XLock.mode: blank
 XLock.font: -*-terminus-medium-r-*--12-*-*-*-*-*-iso10646-1
 
 ! xnotify settings
-xnotify.title.font: Hermit:style=bold:size=10
-xnotify.body.font: Hermit:style=regular:size=10
+xnotify.title.faceName: Hermit:style=bold:size=11
+xnotify.body.faceName: Hermit:style=regular:size=11
 xnotify.border: ligreen
 xnotify.geometry: -10+23
-xnotify.gravity: NE
 xnotify.alignment: right
+xnotify.wrap: true
+!xnotify.shrink: true ! shrink + wrap is broken
diff --git a/config/aliasrc b/etc/aliasrc
index 0250b8a..43eb733 100644
--- a/config/aliasrc
+++ b/etc/aliasrc
@@ -1,11 +1,9 @@
 #!/bin/sh
 # a file containing POSIX shell-compliant aliases so aliases can be consistent between shells.
 alias \
-	l="/bin/ls"\
-	ls="exa -Fb"\
-	ll='exa -Fbl'\
-	lg='exa -Fbl --git'\
-	la='exa -Fba'\
+	ls='ls -Fh'\
+	ll='ls -Fhl'\
+	la='ls -Fha'\
 	lynx='lynx -cookies- -vikeys'\
 	df='df -h'\
 	du='du -h'\
@@ -37,11 +35,10 @@ alias \
 	pd='doas pkg_delete'\
 	pi='pkg_info -D snap'\
 	pl='pkglocate'\
-	f="\$FILE"\
-	e="TERM=xterm-256color \$EDITOR"\
-	v="TERM=xterm-256color \$EDITOR"\
-	yt='youtube-dl'\
-	ya="youtube-dl --config-location \$XDG_CONFIG_HOME/youtube-dl/config-music" \
+	e="\$EDITOR"\
+	yt='yt-dlp'\
+	ya="yt-dlp --config-location \$HOME_ETC/yt-dlp/config-music"\
+	dl="ftp"\
 	unwww='bombadillo'\
-	masto="tootstream -c $XDG_CONFIG_HOME/tootstream/tootstream.conf"\
+	loveread="ssh mic 'tail ~char/love.txt'"\
 	logout='clear&&exit'
diff --git a/config/color/colors.sh b/etc/color/colors.sh
index dd8c49a..dd8c49a 100755
--- a/config/color/colors.sh
+++ b/etc/color/colors.sh
diff --git a/config/ksh/completions.ksh b/etc/ksh/completions.ksh
index d186615..11e0b10 100644
--- a/config/ksh/completions.ksh
+++ b/etc/ksh/completions.ksh
@@ -1,10 +1,10 @@
 #!/bin/ksh
 
-COMPLETIONFILES="$XDG_CACHE_HOME/ksh/precompletions"
+COMPLETIONFILES="$HOME_CACHE/ksh/precompletions"
 if ! [[ -d $COMPLETIONFILES ]]; then
 	mkdir -p $COMPLETIONFILES;
 fi
-#pkg_* completions {{{1
+#pkg_* completions
 if ! [[ -e $COMPLETIONFILES/packages ]]; then
 	update_completion_packages
 fi
@@ -13,9 +13,7 @@ fi
 set -A complete_pd -- $(ls -1 /var/db/pkg)
 #set -A complete_pi -- $complete_pa
 
-# }}}
-
-#man completions {{{2
+#man completions
 if ! [[ -e $COMPLETIONFILES/manpages ]]; then
 	update_completion_manpages
 fi
@@ -23,9 +21,7 @@ fi
 #set -A complete_man -- $(<$COMPLETIONFILES/manpages)
 
 
-# }}}
-
-# pip completions {{{3
+# pip completions
 
 set -A complete_pip_1 -- install download uninstall freeze list show check config search wheel hash help
 set -A complete_pip_2 -- --user
@@ -42,5 +38,3 @@ update_complete_pass() {
 update_complete_pass
 pass_export() { pass export "$1" && update_complete_pass; }
 pass_show() { pass show "$1" && update_complete_pass; }
-
-# }}}
diff --git a/config/ksh/diraliases b/etc/ksh/diraliases
index 4b469d6..f926827 100644
--- a/config/ksh/diraliases
+++ b/etc/ksh/diraliases
@@ -2,9 +2,9 @@
 alias -d src=~/src
 alias -d git=~src/vcs
 alias -d vcs=~/local/src
-alias -d conf=$XDG_CONFIG_HOME
-alias -d data=$XDG_DATA_HOME
-alias -d cache=$XDG_CACHE_HOME
+alias -d conf="$HOME_ETC"
+alias -d data="$HOME_DATA"
+alias -d cache="$HOME_CACHE"
 alias -d vis=~conf/vis
 alias -d ksh=~conf/ksh
 alias -d xdg=~/share/xdg
diff --git a/config/ksh/functions/l. b/etc/ksh/functions/l.
index e4a759e..e4a759e 100644
--- a/config/ksh/functions/l.
+++ b/etc/ksh/functions/l.
diff --git a/config/ksh/functions/man_complete b/etc/ksh/functions/man_complete
index bab26dd..bab26dd 100644
--- a/config/ksh/functions/man_complete
+++ b/etc/ksh/functions/man_complete
diff --git a/config/ksh/functions/mc b/etc/ksh/functions/mc
index db8a46f..db8a46f 100644
--- a/config/ksh/functions/mc
+++ b/etc/ksh/functions/mc
diff --git a/config/ksh/functions/mpvpin b/etc/ksh/functions/mpvpin
index 7fabc6c..7fabc6c 100644
--- a/config/ksh/functions/mpvpin
+++ b/etc/ksh/functions/mpvpin
diff --git a/config/ksh/functions/pcl b/etc/ksh/functions/pcl
index 42ad224..42ad224 100644
--- a/config/ksh/functions/pcl
+++ b/etc/ksh/functions/pcl
diff --git a/config/ksh/functions/pct b/etc/ksh/functions/pct
index b80abff..b80abff 100644
--- a/config/ksh/functions/pct
+++ b/etc/ksh/functions/pct
diff --git a/config/ksh/functions/pkg_complete b/etc/ksh/functions/pkg_complete
index 2664527..2664527 100644
--- a/config/ksh/functions/pkg_complete
+++ b/etc/ksh/functions/pkg_complete
diff --git a/config/ksh/functions/update_completion_manpages b/etc/ksh/functions/update_completion_manpages
index dc4e77a..dc4e77a 100644
--- a/config/ksh/functions/update_completion_manpages
+++ b/etc/ksh/functions/update_completion_manpages
diff --git a/config/ksh/functions/update_completion_packages_obsd b/etc/ksh/functions/update_completion_packages_obsd
index 2de477f..2de477f 100644
--- a/config/ksh/functions/update_completion_packages_obsd
+++ b/etc/ksh/functions/update_completion_packages_obsd
diff --git a/config/ksh/functions/update_completion_pkg_inst_obsd b/etc/ksh/functions/update_completion_pkg_inst_obsd
index 0442a77..0442a77 100644
--- a/config/ksh/functions/update_completion_pkg_inst_obsd
+++ b/etc/ksh/functions/update_completion_pkg_inst_obsd
diff --git a/config/ksh/functions/update_completions b/etc/ksh/functions/update_completions
index cc1e82b..cc1e82b 100644
--- a/config/ksh/functions/update_completions
+++ b/etc/ksh/functions/update_completions
diff --git a/config/ksh/kshrc b/etc/ksh/kshrc
index a5b48e0..28b3c0c 100644
--- a/config/ksh/kshrc
+++ b/etc/ksh/kshrc
@@ -1,19 +1,19 @@
 #!/bin/ksh
 . $HOME/etc/shrc
-KSHCONFIG="$XDG_CONFIG_HOME/ksh"
-FPATH=$XDG_CONFIG_HOME/ksh/functions
+KSHCONFIG="$HOME_ETC/ksh"
+FPATH="$HOME_ETC/ksh/functions"
 alias functions="cat \$FPATH/*|grep -vF '#!/bin/ksh'"
 
-HISTFILE=$XDG_DATA_HOME/ksh/histfile
-if ! [[ -d $(dirname $HISTFILE) ]]; then
-	mkdir -p $(dirname $HISTFILE);
+HISTFILE="$HOME_DATA/ksh/histfile"
+if ! [[ -d $(dirname "$HISTFILE") ]]; then
+	mkdir -p $(dirname "$HISTFILE");
 fi
 HISTSIZE=5000
 HISTCONTROL="ignoredups"
 FCEDIT="$EDITOR"
-TMPDIR=$XDG_CACHE_HOME/ksh
-if ! [[ -d $TMPDIR ]]; then
-	mkdir -p $TMPDIR;
+TMPDIR="$HOME_CACHE/ksh"
+if ! [[ -d "$TMPDIR" ]]; then
+	mkdir -p "$TMPDIR";
 fi
 # shortcut for cloning
 GITHUB="https://github.com"
@@ -22,15 +22,15 @@ export PF_INFO="ascii title os host shell editor wm pkgs palette"
 # fix manpath so local man pages work
 # crude *bsd detection
 if [[ -d /usr/X11R6 ]]; then
-export MANPATH="/usr/share/man:/usr/X11R6/man:/usr/local/man:$XDG_DATA_HOME/man"
+export MANPATH="/usr/share/man:/usr/X11R6/man:/usr/local/man:$HOME_DATA/man"
 else
-export MANPATH="/usr/share/man:/usr/local/share/man:$XDG_DATA_HOME/man"
+export MANPATH="/usr/share/man:/usr/local/share/man:$HOME_DATA/man"
 fi
 set -o vi
 
 #load ksh external configs
-[[ -f "$XDG_CONFIG_HOME/lf/lfcd.sh" ]] && . "$XDG_CONFIG_HOME/lf/lfcd.sh"
+[[ -f "$HOME_ETC/lf/lfcd.sh" ]] && . "$HOME_ETC/lf/lfcd.sh"
 [[ -f "$KSHCONFIG/diraliases" ]] && . "$KSHCONFIG/diraliases"
-[[ -f "$XDG_CONFIG_HOME/aliasrc" ]] && . "$XDG_CONFIG_HOME/aliasrc"
+[[ -f "$HOME_ETC/aliasrc" ]] && . "$HOME_ETC/aliasrc"
 [[ -f "$KSHCONFIG/completions.ksh" ]] && . "$KSHCONFIG/completions.ksh"
 [[ -f "$KSHCONFIG/prompt.ksh" ]] && . "$KSHCONFIG/prompt.ksh"
diff --git a/config/ksh/prompt.ksh b/etc/ksh/prompt.ksh
index 80de942..070d394 100644
--- a/config/ksh/prompt.ksh
+++ b/etc/ksh/prompt.ksh
@@ -17,4 +17,4 @@ vcs() {
 		printf ' %s' "$_GIT_BRANCH"
 	fi
 }
-PS1='\[\033[0;7;32m\]$?\[\033[0;32;45m\]$SEP\[\033[0;7;35m\]\A\[\033[0;35m\]$SEP\[\033[0;1;31m\]\u\[\033[0;32m\]@\[\033[1;34m\]\h\[\033[0;36m\]$RSEP\[\033[7m\]\w\[\033[0;36m\]$SEP\[\033[0;32m\]$(vcs)\n\$\[\033[0m\] '
+PS1='\[\033[0;7;32m\]$?\[\033[0;32;45m\]$SEP\[\033[0;7;35m\]\A\[\033[0;35m\]$SEP\[\033[0;1;31m\]\u\[\033[0;32m\]@\[\033[1;34m\]\h\[\033[0;36m\]$RSEP\[\033[7m\]\w\[\033[0;36m\]$SEP\[\033[0;32m\]$(vcs)\n\[\033[0;32m\]\$\[\033[0m\] '
diff --git a/config/lf/lfrc b/etc/lf/lfrc
index 2b2ff1f..aa3ec00 100644
--- a/config/lf/lfrc
+++ b/etc/lf/lfrc
@@ -5,14 +5,6 @@ set ifs "\n"
 
 set promptfmt "\033[1;31m%u\033[0;32m@\033[1;34m%h\033[0m\033[0;36m▐\033[7m%w/%f\033[0;36m▍\033[0m"
 # cmds
-cmd ttmsh ${{
-	TTMURL="$(curl -F 'file=@'$f https://ttm.sh)"
-	if [ -n "$TTMURL" ]; then
-		echo "$TTMURL"|tee "$HOME/ttmsh"|xclip -r
-		notif  'successfully uploaded to ttm!' 'link copied to selection, backup is in $HOME/ttmsh'
-	fi
-}}
-
 cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1
 
 # binds
diff --git a/etc/mpd/mpd.conf b/etc/mpd/mpd.conf
new file mode 100644
index 0000000..2117584
--- /dev/null
+++ b/etc/mpd/mpd.conf
@@ -0,0 +1,18 @@
+music_directory		"~/share/xdg/mus"
+playlist_directory	"~/share/mpd/playlists"
+db_file				"~/share/mpd/database"
+log_file			"~/var/log/mpd.log"	
+pid_file			"~/share/mpd/pid"
+state_file			"~/share/mpd/state"
+sticker_file		"~/share/mpd/sticker.sql"	# auxillary stats
+
+bind_to_address		"~/share/mpd/socket"		# socket
+restore_paused		"yes"						# starts paused if MPD is paused when it closes
+auto_update			"yes"						# updates the database when the directory changes
+
+audio_output {
+	type "alsa"
+	name "mpd-mic"
+#	device "hw:2" #monopolizes the sound device :(
+	mixer_type "software"
+}
diff --git a/config/ncmpcpp/bindings b/etc/ncmpcpp/bindings
index 76f6796..76f6796 100644
--- a/config/ncmpcpp/bindings
+++ b/etc/ncmpcpp/bindings
diff --git a/config/ncmpcpp/config b/etc/ncmpcpp/config
index de62252..cb689a8 100644
--- a/config/ncmpcpp/config
+++ b/etc/ncmpcpp/config
@@ -9,7 +9,7 @@ lyrics_directory = ~/share/lyrics
 #
 ##### connection settings #####
 #
-mpd_host = 127.0.0.1
+#mpd_host = 127.0.0.1
 #
 #mpd_port = 6600
 #
@@ -460,7 +460,7 @@ mouse_support = no
 #
 #search_engine_default_search_mode = 1
 #
-external_editor = nvim
+external_editor = vi
 #
 ## Note: set to yes if external editor is a console application.
 ##
diff --git a/config/newsboat/config b/etc/newsboat/config
index 05513ae..a6b49a9 100644
--- a/config/newsboat/config
+++ b/etc/newsboat/config
@@ -1,7 +1,7 @@
 #show-read-feeds no
 auto-reload yes
 
-external-url-viewer "urlscan -dc -r 'lh {}'"
+external-url-viewer "flc"
 
 bind-key j down
 bind-key k up
@@ -32,7 +32,7 @@ color article cyan default
 
 browser lh
 macro , open-in-browser
-macro t set browser "youtube-dl --add-metadata -ic"; open-in-browser ; set browser lh
-macro a set browser "youtube-dl --add-metadata -ic --config-location ~/etc/youtube-dl/config-music"; open-in-browser ; set browser lh
+macro t set browser "yt-dlp --add-metadata -i"; open-in-browser ; set browser lh
+macro a set browser "yt-dlp --add-metadata -i --config-location ~/etc/yt-dlp/config-music"; open-in-browser ; set browser lh
 macro v set browser "mpv"; open-in-browser ; set browser lh
-macro w set browser "w3m"; open-in-browser ; set browser lh
+macro w set browser "lynx -cookies- -vikeys"; open-in-browser ; set browser lh
diff --git a/config/shrc b/etc/shrc
index d3b05fb..9da8cef 100644
--- a/config/shrc
+++ b/etc/shrc
@@ -6,17 +6,18 @@ export HOME_LOG="$HOME/var/log"
 export HOME_CACHE="$HOME/var/cache"
 export HOME_BIN="$HOME/bin"
 export HOME_EXT="$HOME/local"
+export HOME_EXT_DATA="$HOME_EXT/share"
 export HOME_EXT_BIN="$HOME_EXT/bin"
 export HOME_EXT_SRC="$HOME_EXT/src"
 
-export XDG_CACHE_HOME="${HOME_CACHE:=$HOME/.cache}"
-export XDG_CONFIG_HOME="${HOME_ETC:=$HOME/.config}"
-export XDG_DATA_HOME="${HOME_DATA:=$HOME/.local/share}"
+export XDG_CACHE_HOME="$HOME_CACHE"
+export XDG_CONFIG_HOME="$HOME_ETC"
+export XDG_DATA_HOME="$HOME_DATA"
 
 export PATH="$HOME_BIN:$HOME_EXT_BIN:$PATH"
 
 export LAUNCHER="dmenu_run"
-export EDITOR="vise"
+export EDITOR="vi"
 export FILE="lf"
 export PAGER="less"
 export TERMINAL="xterm"
@@ -33,14 +34,19 @@ export LOCK="xlock"
 export LESS='-iFMRX~ -x2'
 #locale info
 export LANGUAGE="en"
-export LANG="POSIX.UTF-8"
-export LC_ALL="POSIX.UTF-8"
+export LANG="C.UTF-8"
+export LC_ALL="C.UTF-8"
 #lscolor
 export CLICOLOR=1
 #todo(1)
 export TODO="$HOME_DATA/xdg/doc/todo"
 #ksh
 export ENV="$HOME_ETC/ksh/kshrc"
+#vi
+export EXINIT="set ai extended iclower sm sw=4 ts=4 smd
+map gg 1G
+map gx !'mxsel -b -i
+map gp :r!xsel -b -o"
 
 #cleanup paths
 export GTK2_RC_FILES="$HOME_ETC/gtk-2.0/gtkrc-2.0"
diff --git a/config/user-dirs.dirs b/etc/user-dirs.dirs
index b2cefc6..b2cefc6 100644
--- a/config/user-dirs.dirs
+++ b/etc/user-dirs.dirs
diff --git a/etc/yt-dlp/config b/etc/yt-dlp/config
new file mode 100644
index 0000000..23171b9
--- /dev/null
+++ b/etc/yt-dlp/config
@@ -0,0 +1,16 @@
+--prefer-free-formats
+# always use aria2
+--external-downloader aria2c
+# format
+--format bestvideo+bestaudio/best
+# format definition
+--format-sort "res:1080,fps:60,vcodec:av01"
+# dl to ~vid
+--paths ~/share/xdg/vid/
+--output %(uploader)s/%(title)s.%(ext)s
+# english subs, no chat
+--sub-langs "en.*,-live_chat"
+# always merge into mkv
+--merge-output-format mkv
+# embed subtitles if they are to be written
+--embed-subs
diff --git a/etc/yt-dlp/config-music b/etc/yt-dlp/config-music
new file mode 100644
index 0000000..b8109f8
--- /dev/null
+++ b/etc/yt-dlp/config-music
@@ -0,0 +1,7 @@
+# free formats
+--prefer-free-formats
+# only download audio stream
+--format bestaudio
+# dl to ~mus
+--paths ~/share/xdg/mus
+--output %(uploader_id,uploader,album_artist)s/%(release_year,release_date>%Y,upload_date>%Y|)s-%(album|singles)s/%(track_number,playlist_index|)02d%(track_number,playlist_index&-|)s%(track,title|title)s.%(ext)s
diff --git a/config/zathura/zathurarc b/etc/zathura/zathurarc
index 1b370d2..e72220f 100644
--- a/config/zathura/zathurarc
+++ b/etc/zathura/zathurarc
@@ -32,4 +32,4 @@ set render-loading-fg "#ccbc8e"
 set window-title-home-tilde true
 set statusbar-basename true
 set selection-clipboard clipboard
-set font "Cozette Medium 11"
+set font "Hermit Regular 13"
diff --git a/data/mailcap b/share/mailcap
index c8e0061..c8e0061 100644
--- a/data/mailcap
+++ b/share/mailcap
diff --git a/data/man/man7/user-hier.7 b/share/man/man7/user-hier.7
index 0c6e092..0c6e092 100644
--- a/data/man/man7/user-hier.7
+++ b/share/man/man7/user-hier.7