about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorensa <psii@riseup.net>2021-09-16 17:37:41 -0700
committerensa <psii@riseup.net>2021-09-16 17:37:41 -0700
commitebae3707b36e9a83014ef08271d75bd9826bb999 (patch)
tree9a9a0b3d9a7c6a4475a5394f2bd25848ebadb552
parent3f4e930385675a4613db5f12b19557b126c29559 (diff)
downloadcfg-ebae3707b36e9a83014ef08271d75bd9826bb999.tar.gz
organization and replacements, fixes
bin/
	bother, mbsync-cron, rsschk: notify-send switched to notif
	catgirl-open.sh: simplified
	comm-sel: removed cordless
	kbsetup: sets up keyboard stuff
	lh: cleanup
		added mov and wav support
		audio files now create a terminal mpv
	notif: sends notification to xnotify
config/
	X11/
		xprofile: replaced keyboard lines with kbsetup
			replaced dunst with xnotify/tiramisu
			added a line for cleaning up catgirl-open.sh
		xresources: xnotify resources
	betteresc: xmodmap file for easy-to-access hyper key
	color/colors.sh: cleaned up
	dunst/dunstrc: removed
	lf/lfrc: fixed prompt
		replaced notify-send with notif
	shrc: moved MEDNAFEN_HOME to $HOME_EXT
	vis/visrc.lua: add ctags, fix hyper|esc issue
-rw-r--r--DEPENDENCIES.md66
-rwxr-xr-xbin/bother2
-rwxr-xr-xbin/catgirl-open.sh8
-rwxr-xr-xbin/comm-sel3
-rwxr-xr-xbin/kbsetup6
-rwxr-xr-xbin/lh8
-rwxr-xr-xbin/mbsync-cron4
-rwxr-xr-xbin/notif35
-rwxr-xr-xbin/rsschk4
-rw-r--r--config/X11/xprofile18
-rw-r--r--config/X11/xresources9
-rw-r--r--config/betteresc2
-rwxr-xr-xconfig/color/colors.sh36
-rw-r--r--config/dunst/dunstrc91
-rw-r--r--config/lf/lfrc4
-rw-r--r--config/ncmpcpp/config2
-rw-r--r--config/shrc2
-rw-r--r--config/vis/visrc.lua2
18 files changed, 122 insertions, 180 deletions
diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md
index 1932291..868faef 100644
--- a/DEPENDENCIES.md
+++ b/DEPENDENCIES.md
@@ -16,20 +16,18 @@ each and every file in this repository can be altered by anyone with any goal, i
 * `opt: any of the previous bullets`: same meaning as before but optional
 * `(description)`: explains why it's necessary/what optional feature it enables if present
 # bin/
-* mbsync-cron: populate local maildirs and notify the user if there is new mail
-  * [isync](https://isync.sourceforge.net)
-  * properly configured `$XDG_CONFIG_HOME/mbsync/mbsync` (One Group per email account)
-  * libnotify (notifies the user for new mail and the subject line of said mail)
-  * `$XDG_DATA_HOME`
-* bother: urgently notifies you with the contents of $HOME/today
+* bar.sh: spawns a dzen status bar
+  * config/color/colors.sh
+  * [spoon](https://git.2f30.org/spoon)
+  * [dzen2](https://github.com/robm/dzen)
+* bother: notifies you with the contents of $HOME/today
   * opt: `$XFILE`: the location of the file that starts your X session
     * please define this if you don't use .xsession or .xinitrc
-  * notify-send (the entire point of the script)
+  * bin/notif (the entire point of the script)
   * `$HOME`/today (bother reads this file and sends it as a notification)
   * pgrep (checks to see if your window manager is up yet)
 * comm-sel: a handy menu for spawning communication clients
   * [catgirl](https://git.causal.agency/catgirl)
-  * [cordless](https://github.com/bios-marcel/cordless)
   * [scli](https://github.com/isamert/scli)
   * [dmenu](https://dmenu.suckless.org) (provides a menu for selecting which client to start)
   * `$TERMINAL`
@@ -48,6 +46,11 @@ each and every file in this repository can be altered by anyone with any goal, i
   * `$READER`
   * bin/op
   * `$BROWSER`
+* mbsync-cron: populate local maildirs and notify the user if there is new mail
+  * [isync](https://isync.sourceforge.net)
+  * properly configured `$XDG_CONFIG_HOME/mbsync/mbsync` (One Group per email account)
+  * bin/notif (notifies the user for new mail and the subject line of said mail)
+  * `$XDG_DATA_HOME`
 * op: a script that uses file(1) to determine what a file is, then opens it with an appropriate program
   * [mpv](https://mpv.io) (opens video and audio files)
   * [sxiv](https://github.com/muennich/sxiv) (used to view images)
@@ -57,7 +60,7 @@ each and every file in this repository can be altered by anyone with any goal, i
   * [dmenu](https://dmenu.suckless.org)
 * pw: generates a password of variable length
 * rsschk: takes a URL as an argument and adds it to newsboat's url file, with an optional second argument specifying a category
-  * libnotify (notifies the user of improper usage, and whether or not they should probably edit the url file manually to add a category.)
+  * bin/notif (notifies the user of improper usage, and whether or not they should probably edit the url file manually to add a category.)
   * [newsboat](https://newsboat.org)
   * opt: `$XDG_CONFIG_HOME`
 * shenv: runs the shell with a specific environment file
@@ -65,36 +68,9 @@ each and every file in this repository can be altered by anyone with any goal, i
 * xbg: sets the background or changes the picture used for the background
   * opt: xdg-user-dir (lets you change the directory bg.png has to be in)
   * xwallpaper (sets the wallpaper)
-* bar.sh: spawns a dzen status bar
-  * config/color/colors.sh
-  * [spoon](https://git.2f30.org/spoon)
-  * [dzen2](https://github.com/robm/dzen)
 # config/
-* cwmrc: config for [cwm](https://man.openbsd.org/cwm)
-  * [Cozette](https://github.com/slavfox/cozette) font
-  * `$LOCK`
-  * `$TERMINAL`
-  * `$ALTSCR`
-  * `$EDITOR`
-  * `$BROWSER`
-  * `$HOMEPAGE`
-  * `$COMM`
-  * kpcli
-  * bin/lh
-  * xclip
-  * `$MUSIC`
-  * `$MAILER`
-  * `$RSS`
-  * `$FILE`
-  * `$SCR`
-  * xdg-user-dir
-  * mpc
-  * [sndioctl](https://man.openbsd.org/sndioctl)
-  * xbacklight
-  * bin/prompt
-  * [doas](https://man.openbsd.org/doas)
-  * bin/bar.sh
-  * xdotool
+* betteresc: xmodmap file setting up the groundwork for Hyper|Esc
+  * xmodmap
 * lf/lfrc: configuration file for [lf](https://github.com/gokcehan/lf)
   * opt: `$OPENER` (for opening files)
   * opt: curl (for uploading temporary content to the [ttm.sh](https://ttm.sh) site)
@@ -120,12 +96,9 @@ each and every file in this repository can be altered by anyone with any goal, i
   * opt: cargo (`$CARGO_HOME`)
   * opt: python (`$PYTHONUSERBASE`)
   * opt: mednafen (`$MEDNAFEN_HOME`)
-* dunst/dunstrc
-  * [dunst](https://dunst-project.org)
-  * [Cozette](https://github.com/slavfox/cozette) font
 * zathura/zathurarc
   * [zathura](https://pwmt.org/projects/zathura)
-  * [Cozette](https://github.com/slavfox/cozette) font
+  * [hermit](https://pcaro.es/p/hermit/) font
 ## ksh/
 configuration files for ksh
 * kshrc
@@ -141,18 +114,19 @@ configuration files for ksh
 ## X11/
 configuration files for x11
 * xprofile: non-machine-specific x11 setup
-  * setxkbmap
-  * [xcape](https://github.com/alols/xcape)
+  * bin/kbsetup
   * xset
   * xrdb
   * config/X11/xresources
   * bin/xbg
-  * [dunst](https://dunst-project.org)
-  * unclutter
+  * [xnotify](https://github.com/phillbush/xnotify)
+  * [tiramisu](https://github.com/Sweets/tiramisu)
+  * [xbanish](https://github.com/jcs/xbanish)
   * [mpdas](https://www.50hz.ws/mpdas)
   * bin/bar.sh
   * bin/bother
 * xresources: X Resources Database file
+  * [hermit](https://pcaro.es/p/hermit/)
   * [terminus](https://terminus-font.sourceforge.net)
   * bin/fl (exec-selectable)
 # data/
diff --git a/bin/bother b/bin/bother
index a9d55ca..d3f5be9 100755
--- a/bin/bother
+++ b/bin/bother
@@ -20,5 +20,5 @@ if [ -f "$HOME"/today ]; then
 		:
 	done
 	sleep 0.5
-	notify-send -u critical "DO TODAY:" "$(cat "$HOME"/today)"
+	notif "DO TODAY:" "$(tr '\n' '\t'<"$HOME"/today)"
 fi
diff --git a/bin/catgirl-open.sh b/bin/catgirl-open.sh
index 3783422..fd1a939 100755
--- a/bin/catgirl-open.sh
+++ b/bin/catgirl-open.sh
@@ -5,14 +5,14 @@
 xidfile="$XDG_CACHE_HOME/catgirl/tabbed-catgirl.xid"
 
 choosenet() {
-	for network in $(ls $HOME_ETC/catgirl/*.conf|sed 's/.*\///');
+	for network in $HOME_ETC/catgirl/*.conf
 	do
-	printf '%s\n' $network;
+	printf '%s\n' $(basename ${network%.*});
 	done | dmenu -p "choose network:"
 }
 
 runtabbed() {
-	network=$(choosenet)
+	network=$(choosenet).conf
 	tabbed -cdn comm -r 2 $TERMINAL -into '' -e catgirl $network >"$xidfile" &
 }
 
@@ -23,7 +23,7 @@ else
 	xid=$(cat "$xidfile")
 	if xprop -id "$xid" >/dev/null 2>&1
 	then
-		$TERMINAL -into "$xid" -e catgirl $(choosenet) >/dev/null 2>&1 &
+		$TERMINAL -into "$xid" -e catgirl $(choosenet).conf >/dev/null 2>&1 &
 	else
 		runtabbed
 	fi
diff --git a/bin/comm-sel b/bin/comm-sel
index c5508cf..3dc1527 100755
--- a/bin/comm-sel
+++ b/bin/comm-sel
@@ -6,9 +6,8 @@ case "$TERMINAL" in
 	urxvt) CLASS='-name';;
 	alacritty|kitty) CLASS='--class';;
 esac
-case "$(dmenu_path|grep -E "catgirl$|cordless|scli$"|dmenu -p "choose chat app:")" in
+case "$(dmenu_path|grep -E "catgirl$|scli$"|dmenu -p "choose chat app:")" in
 	catgirl) catgirl-open.sh &;;
-	cordless) $TERMINAL $CLASS comm -e env TERM=xterm-256color cordless &;;
 	scli) $TERMINAL $CLASS comm -e scli&;;
 	*) return;;
 esac
diff --git a/bin/kbsetup b/bin/kbsetup
new file mode 100755
index 0000000..df100ff
--- /dev/null
+++ b/bin/kbsetup
@@ -0,0 +1,6 @@
+#!/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 331b358..71bc747 100755
--- a/bin/lh
+++ b/bin/lh
@@ -39,7 +39,7 @@ findredir() {
 			# return caught line
 			echo "$line"
 			# reset catch variable
-			unset -- catch
+			unset catch
 		fi
 		# set catch if the current line is location
 		if echo "$line"|grep -Fq 'ocation:'
@@ -61,7 +61,7 @@ URL=$(echo "$1"|findredir|tail -1|tr -d '[:cntrl:]')
 case "$URL" in
 	gemini://*|gopher://*)
 		$TERMINAL -e bombadillo "$URL" ;;
-	*.mkv*|*.webm*|*.mp4*)
+	*.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" & ;;
@@ -73,8 +73,8 @@ case "$URL" in
 	*.png*|*.jpg*|*.jpe*|*.jpeg*|*.gif*)
 		IMGPATH="/tmp/$(lstrip "$URL" "*/")"
 		curl -sL "$URL" >"$IMGPATH"&&sxiv -pqa "$IMGPATH" & ;;
-	*.mp3*|*.m4a*|*.flac*|*.aiff*|*.opus*|*.ogg*|*.mp3?source*)
-		mpv --no-terminal "$URL"& ;;
+	*.mp3*|*.m4a*|*.flac*|*.aiff*|*.opus*|*.ogg*|*.mp3?source*|*.wav*)
+		$TERMINAL -e mpv "$URL"& ;;
 	*.epub*|*.pdf*|*.djvu*)
 		BOOKPATH="/tmp/$(lstrip "$URL" "*/")"
 		if [ -n "$READER" ]; then
diff --git a/bin/mbsync-cron b/bin/mbsync-cron
index fc611c2..711b60f 100755
--- a/bin/mbsync-cron
+++ b/bin/mbsync-cron
@@ -32,7 +32,7 @@ syncandnotify() {
     printf ' %s' "$newcount" > "$XDG_DATA_HOME/mail/$account/note"
     # don't notify if there isn't new mail
     if [ "$newcount" -gt "0" ]; then
-        notify-send --app-name="mbsync-cron" "mail fetcher" "new mail for profile $account! [$newcount]" &
+        notif "mail fetcher" "new mail for profile $account! [$newcount]" &
 	# reduce output if you have a lot of new mail
 	if [ "$newcount" -lt "16" ]; then
         for file in $new; do
@@ -41,7 +41,7 @@ syncandnotify() {
 	    from=$(awk '/^From: / && ++n ==1,/^\<.*\>:/' "$file" | awk '{ $1=""; if (NF>=3)$NF=""; print $0 }' | sed '1!d'| sed '1,/From/s/From: //')
 	    # modified version of broken $subject variable, only prints the first subject line (so forwards are slightly unclear)
             subject=$(awk '/^Subject: / && ++n == 1,/^\<.*\>: / && ++i == 2' "$file" | sed '$D' | grep -m 1 '^Subject: ' | sed 's/Subject: //')
-            notify-send --app-name="mbsync-cron" "$from:" "$subject" &
+            notif "$from:" "$subject" &
 	    # sleep for half a second to avoid notification clog
 	    sleep .5
         done
diff --git a/bin/notif b/bin/notif
new file mode 100755
index 0000000..5e75fd8
--- /dev/null
+++ b/bin/notif
@@ -0,0 +1,35 @@
+#!/bin/sh
+# sends xnotify a notification
+unset TAG SEC
+exec > ${XNOTIFY_FIFO:=$HOME_CACHE/xnotify$DISPLAY.fifo}
+ug_err()
+{
+	echo "${1}" 1>&2 && return "${2:-1}"
+}
+usage()
+{
+	ug_err "usage: ${0##*/} [ -s seconds ] [ -t tag ] <TITLE> [BODY]
+	-s seconds	seconds for notification to live
+	-t tag		category of notification"
+	exit
+}
+while getopts s:t: arg; do
+	case ${arg} in
+	s)	SEC=${OPTARG};;
+	t)	TAG=${OPTARG};;
+	*)	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
diff --git a/bin/rsschk b/bin/rsschk
index ab74169..92b8557 100755
--- a/bin/rsschk
+++ b/bin/rsschk
@@ -9,7 +9,7 @@ fi
 re_urls='https?://[[:alnum:].]*:?[[:alnum:]./@$&%?$#=_-]*\.(rss|xml)'
 
 ! echo "$1" | grep -Eq "$re_urls" &&
-	notify-send "Invalid input. rsschk takes http(s) URLs as input." && exit
+	notif "Invalid input. rsschk takes http(s) URLs as input." && exit
 RSSFILE="${XDG_CONFIG_HOME:=~/.config}/newsboat/urls"
 grep -q "^$1" "$RSSFILE" &&
-	{ echo "$1">>"$RSSFILE"&&notify-send "RSS feed added.";}
+	{ echo "$1">>"$RSSFILE"&&notif "RSS feed added.";}
diff --git a/config/X11/xprofile b/config/X11/xprofile
index eb89ed0..058f55b 100644
--- a/config/X11/xprofile
+++ b/config/X11/xprofile
@@ -2,25 +2,31 @@
 . $HOME/etc/shrc
 # set caps to escape when pressed and super when held
 # also sets dvorak programmer layout
-setxkbmap -option caps:super -layout us -variant dvp && xcape -e 'Super_L=Escape'
+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
-# increases kbd repeat on hold
-xset r rate 300 50
 # enables x colorscheme
 xrdb -load $HOME_ETC/X11/xresources
 
 # set background
 xbg &
 # notification daemon
-dunst &
+# setup xnotify
+export XNOTIFY_FIFO="$HOME_CACHE/xnotify$DISPLAY.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 &
+# status bar
+bar.sh &
 # mouse vanishes when typing
 xbanish &
 # activate mpd scrobbler
 mpdas -c $HOME_ETC/mpdasrc &
-# status bar
-bar.sh &
 # remind user of important tasks
 bother &
+# cleanup tabbed
+rm $HOME_CACHE/catgirl/tabbed-catgirl.xid
diff --git a/config/X11/xresources b/config/X11/xresources
index a56f91c..e7a69b2 100644
--- a/config/X11/xresources
+++ b/config/X11/xresources
@@ -50,6 +50,7 @@
 ! XTerm config.
 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*cursorColor: curs
 xterm*boldMode: false
@@ -86,3 +87,11 @@ Sxiv*foreground: fg
 ! xlock settings
 XLock.mode: random
 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.border: ligreen
+xnotify.geometry: -10+23
+xnotify.gravity: NE
+xnotify.alignment: right
diff --git a/config/betteresc b/config/betteresc
new file mode 100644
index 0000000..3c84ed1
--- /dev/null
+++ b/config/betteresc
@@ -0,0 +1,2 @@
+keycode 9 = Hyper_L
+keycode any = Escape
diff --git a/config/color/colors.sh b/config/color/colors.sh
index 7fbb314..dd8c49a 100755
--- a/config/color/colors.sh
+++ b/config/color/colors.sh
@@ -1,22 +1,22 @@
 #!/bin/sh
 TMP=$(mktemp)
 xrdb -query>$TMP
-foreground=$(grep -F '*foreground:' < $TMP | cut -f 2 | head -1)
-background=$(grep -F '*background:' < $TMP | cut -f 2 | head -1)
-color0=$(grep -F '*color0:' < $TMP | cut -f 2 | head -1)
-color1=$(grep -F '*color1:' < $TMP | cut -f 2 | head -1)
-color2=$(grep -F '*color2:' < $TMP | cut -f 2 | head -1)
-color3=$(grep -F '*color3:' < $TMP | cut -f 2 | head -1)
-color4=$(grep -F '*color4:' < $TMP | cut -f 2 | head -1)
-color5=$(grep -F '*color5:' < $TMP | cut -f 2 | head -1)
-color6=$(grep -F '*color6:' < $TMP | cut -f 2 | head -1)
-color7=$(grep -F '*color7:' < $TMP | cut -f 2 | head -1)
-color8=$(grep -F '*color8:' < $TMP | cut -f 2 | head -1)
-color9=$(grep -F '*color9:' < $TMP | cut -f 2 | head -1)
-color10=$(grep -F '*color10:' < $TMP | cut -f 2 | head -1)
-color11=$(grep -F '*color11:' < $TMP | cut -f 2 | head -1)
-color12=$(grep -F '*color12:' < $TMP | cut -f 2 | head -1)
-color13=$(grep -F '*color13:' < $TMP | cut -f 2 | head -1)
-color14=$(grep -F '*color14:' < $TMP | cut -f 2 | head -1)
-color15=$(grep -F '*color15:' < $TMP | cut -f 2 | head -1)
+foreground=$(grep -F -m 1 '*foreground:' < $TMP | cut -f 2)
+background=$(grep -F -m 1 '*background:' < $TMP | cut -f 2)
+color0=$(grep -F -m 1 '*color0:' < $TMP | cut -f 2)
+color1=$(grep -F -m 1 '*color1:' < $TMP | cut -f 2)
+color2=$(grep -F -m 1 '*color2:' < $TMP | cut -f 2)
+color3=$(grep -F -m 1 '*color3:' < $TMP | cut -f 2)
+color4=$(grep -F -m 1 '*color4:' < $TMP | cut -f 2)
+color5=$(grep -F -m 1 '*color5:' < $TMP | cut -f 2)
+color6=$(grep -F -m 1 '*color6:' < $TMP | cut -f 2)
+color7=$(grep -F -m 1 '*color7:' < $TMP | cut -f 2)
+color8=$(grep -F -m 1 '*color8:' < $TMP | cut -f 2)
+color9=$(grep -F -m 1 '*color9:' < $TMP | cut -f 2)
+color10=$(grep -F -m 1 '*color10:' < $TMP | cut -f 2)
+color11=$(grep -F -m 1 '*color11:' < $TMP | cut -f 2)
+color12=$(grep -F -m 1 '*color12:' < $TMP | cut -f 2)
+color13=$(grep -F -m 1 '*color13:' < $TMP | cut -f 2)
+color14=$(grep -F -m 1 '*color14:' < $TMP | cut -f 2)
+color15=$(grep -F -m 1 '*color15:' < $TMP | cut -f 2)
 rm $TMP
diff --git a/config/dunst/dunstrc b/config/dunst/dunstrc
deleted file mode 100644
index 3dd8610..0000000
--- a/config/dunst/dunstrc
+++ /dev/null
@@ -1,91 +0,0 @@
-[colors]
-	background = "#4c4635"
-	foreground = "#ccbc8e"
-
-[global]
-    ### Display ###
-
-    monitor = 0
-    follow = mouse
-
-    geometry = "540x5-10+32"
-    indicate_hidden = yes
-    shrink = yes
-    transparency = 0
-    notification_height = 0
-    separator_height = 3
-    padding = 12
-    horizontal_padding = 12
-    frame_width = 3
-
-    frame_color = "#8e991e"
-    separator_color = auto
-    sort = yes
-    idle_threshold = 120
-
-    ### Text ###
-    font = Hermit Regular 10
-    line_height = 0
-
-    markup = full
-
-    # The format of the message.  Possible variables are:
-    #   %a  appname
-    #   %s  summary
-    #   %b  body
-    #   %i  iconname (including its path)
-    #   %I  iconname (without its path)
-    #   %p  progress value if set ([  0%] to [100%]) or nothing
-    #   %n  progress value if set without any extra characters
-    #   %%  Literal %
-    # Markup is allowed
-    format = "<b>%s </b>\n%b"
-    alignment = left
-    show_age_threshold = 60
-    word_wrap = yes
-    ellipsize = middle
-    ignore_newline = no
-    stack_duplicates = true
-    hide_duplicate_count = false
-    show_indicators = yes
-
-    ### Icons ###
-    icon_position = off
-
-    ### History ###
-    sticky_history = yes
-    history_length = 20
-
-    ### Misc/Advanced ###
-    dmenu = /usr/local/bin/dmenu -p dunst:
-    browser = /usr/local/bin/firefox -new-tab
-    always_run_script = true
-    title = Dunst
-    class = Dunst
-    startup_notification = false
-    force_xinerama = false
-
-[experimental]
-    per_monitor_dpi = false
-
-[shortcuts]
-    close = ctrl+space
-    close_all = ctrl+shift+space
-    context = ctrl+shift+period
-
-[urgency_low]
-    background = colors.background
-    foreground = colors.foreground
-    timeout = 10
-
-[urgency_normal]
-    background = colors.background
-    foreground = colors.foreground
-    timeout = 10
-
-[urgency_critical]
-    background = colors.background
-    foreground = colors.foreground
-    frame_color = "#cc3214"
-    timeout = 0
-# vim: ft=cfg
diff --git a/config/lf/lfrc b/config/lf/lfrc
index edefc84..2b2ff1f 100644
--- a/config/lf/lfrc
+++ b/config/lf/lfrc
@@ -3,13 +3,13 @@ set shell sh
 set shellopts '-eu'
 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"
+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
-		notify-send  'successfully uploaded to ttm!' 'link copied to selection, backup is in $HOME/ttmsh'
+		notif  'successfully uploaded to ttm!' 'link copied to selection, backup is in $HOME/ttmsh'
 	fi
 }}
 
diff --git a/config/ncmpcpp/config b/config/ncmpcpp/config
index c19ea83..de62252 100644
--- a/config/ncmpcpp/config
+++ b/config/ncmpcpp/config
@@ -258,7 +258,7 @@ current_item_inactive_column_suffix = $/r$(end)
 ## Note: Custom command that will be executed each time song changes. Useful for
 ## notifications etc.
 ##
-execute_on_song_change = "notify-send --expire-time=3500 "MPD: Now Playing" "$(mpc current)""
+execute_on_song_change = "notif -t mpd -s 3 "MPD: Now Playing" "$(mpc current)""
 #
 ##
 ## Note: Custom command that will be executed each time player state
diff --git a/config/shrc b/config/shrc
index a85bbb7..d3b05fb 100644
--- a/config/shrc
+++ b/config/shrc
@@ -50,7 +50,7 @@ export GOCACHE="$HOME_CACHE/go"
 export GOBIN="$HOME_EXT_BIN"
 export CARGO_HOME="$HOME_EXT/rust"
 export PYTHONUSERBASE="$HOME_EXT/python"
-export MEDNAFEN_HOME="$HOME_ETC/mednafen"
+export MEDNAFEN_HOME="$HOME_EXT/mednafen"
 export _JAVA_OPTIONS="-Djava.util.prefs.userRoot=$HOME_ETC/java"
 export TERMINFO="$HOME_DATA/terminfo"
 export MAILCAPS="$HOME_ETC/mailcap"
diff --git a/config/vis/visrc.lua b/config/vis/visrc.lua
index d153cab..569e482 100644
--- a/config/vis/visrc.lua
+++ b/config/vis/visrc.lua
@@ -1,9 +1,11 @@
 -- 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)