about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--DEPENDENCIES.md40
-rwxr-xr-xbin/fl32
-rwxr-xr-xbin/lh56
-rwxr-xr-xbin/op (renamed from bin/opener)4
-rwxr-xr-xbin/prompt6
-rwxr-xr-xbin/pw3
-rwxr-xr-xbin/rsschk21
-rwxr-xr-xbin/shenv4
-rwxr-xr-xbin/xbg3
-rw-r--r--config/aliasrc4
-rw-r--r--config/cwmrc18
-rw-r--r--config/dunst/dunstrc4
-rw-r--r--config/ksh/functions/l.8
-rw-r--r--config/lf/lfrc10
-rw-r--r--config/shrc8
-rw-r--r--data/applications/doc.desktop4
-rw-r--r--data/applications/img.desktop4
-rw-r--r--data/applications/rss.desktop4
-rw-r--r--data/applications/text.desktop4
-rw-r--r--data/applications/weblight.desktop4
-rw-r--r--data/mailcap4
21 files changed, 127 insertions, 118 deletions
diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md
index 478b4eb..4eff548 100644
--- a/DEPENDENCIES.md
+++ b/DEPENDENCIES.md
@@ -28,12 +28,14 @@ each and every file in this repository can be altered by anyone with any goal, i
   * `$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
-  * [epic5](https://epicsol.org)
+  * [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)
-  * opt: st-altscreen (build of st that doesn't have scrollback or extra bindings, doesnt interfere with programs and is generally smaller)
   * `$TERMINAL`
+* fl: finds links either in its arguments or piped to it, and has the user choose one to copy
+  * [dmenu](https://dmenu.suckless.org) (for the link chooser)
+  * xclip
 * lh: a script that takes a URL as input and does different things depending on what the URL links to
   * [mpv](https://mpv.io) (video file streaming, streaming from sites like youtube, viewing livestreams from twitch)
   * [youtube-dl](https://yt-dl.org) (hooked by mpv when streaming from the appropriate sites)
@@ -44,9 +46,9 @@ each and every file in this repository can be altered by anyone with any goal, i
   * [bombadillo](https://tildegit.org/sloum/bombadillo) (gemini, gopher)
   * `$TERMINAL`
   * `$READER`
-  * `$EDITOR`
+  * bin/op
   * `$BROWSER`
-* opener: a script that uses file(1) to determine what a file is, then opens it with an appropriate program
+* 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)
   * `$READER`
@@ -70,22 +72,20 @@ each and every file in this repository can be altered by anyone with any goal, i
 # config/
 * cwmrc: config for [cwm](https://man.openbsd.org/cwm)
   * [Cozette](https://github.com/slavfox/cozette) font
-  * xterm
-  * slock
+  * `$LOCK`
   * `$TERMINAL`
   * `$ALTSCR`
   * `$EDITOR`
   * `$BROWSER`
   * `$HOMEPAGE`
   * `$COMM`
-  * `kpcli`
+  * kpcli
   * bin/lh
   * xclip
   * `$MUSIC`
   * `$MAILER`
   * `$RSS`
   * `$FILE`
-  * `$READER`
   * `$SCR`
   * xdg-user-dir
   * mpc
@@ -96,13 +96,13 @@ each and every file in this repository can be altered by anyone with any goal, i
   * bin/bar.sh
   * xdotool
 * lf/lfrc: configuration file for [lf](https://github.com/gokcehan/lf)
-  * opt: bin/opener (for opening files)
+  * opt: `$OPENER` (for opening files)
   * opt: curl (for uploading temporary content to the [ttm.sh](https://ttm.sh) site)
 * shrc: shell environment, particularly for bin/shenv
   * vis (`$EDITOR`)
   * lf (`$FILE`)
   * xterm (`$TERMINAL`)
-  * st-altscreen (`$ALTSCR`)
+  * bin/op (`$OPENER`)
   * firefox (`$BROWSER`)
   * bin/comm-sel (`$COMM`)
   * zathura (`$READER`)
@@ -115,6 +115,8 @@ each and every file in this repository can be altered by anyone with any goal, i
   * slock (`$LOCK`)
   * opt: [todo](https://git.tilde.institute/ensa/todo)
   * opt: go (`$GOPATH`)
+  * opt: go (`$GOCACHE`)
+  * opt: go (`$GOBIN`)
   * opt: cargo (`$CARGO_HOME`)
   * opt: python (`$PYTHONUSERBASE`)
   * opt: mednafen (`$MEDNAFEN_HOME`)
@@ -129,24 +131,12 @@ configuration files for ksh
   * opt: pfetch (`$PF_INFO`)
 * functions.ksh
   * mpv (for mpvpin() to work)
+  * [pass](https://rgz.ee/pass.html) (for pcl and pct)
+  * xclip (for pcl and pct)
 * completions.ksh
   * `$XDG_CACHE_HOME`
   * [pass](https://rgz.ee/pass.html)
 # data/
 * mailcap: helps neomutt figure out what to do with particular MIME types
-  * `$EDITOR`
   * lynx
-  * [mpv](https://mpv.io)
-  * `$READER`
-## applications/
-* doc.desktop
-  * [zathura](https://pwmt.org/projects/zathura)
-* img.desktop
-  * [sxiv](https://github.com/muennich/sxiv)
-* rss.desktop
-  * bin/rsschk
-* text.desktop
-  * [xterm](https://invisible-island.net/xterm)
-  * [vis](https://github.com/martanne/vis)
-* weblight.desktop
-  * [surf](https://surf.suckless.org)
+  * bin/op
diff --git a/bin/fl b/bin/fl
new file mode 100755
index 0000000..8c058d7
--- /dev/null
+++ b/bin/fl
@@ -0,0 +1,32 @@
+#!/bin/sh
+# fl: Find Links
+# uses regular expressions to find links in the stream it's given,
+# or its args if it is given args
+
+# from pure-sh-bible, strips from the start of a string
+lstrip() {
+	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:]./@$&%?$#=_-]*)'
+
+# finds links, puts them in a list
+# sort -u prevents duplicates, but also sorts the links
+urlparse() {
+	lstrip "$(cat)" "*\│" |\
+	grep -Eo "$re_urls" |\
+	sort -u | sed 's|^www.|http://www\.|g'
+}
+if [ -n "$1" ]; then
+	urls=$(echo "$@"|urlparse)
+else
+	urls=$(urlparse)
+fi
+
+# 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
diff --git a/bin/lh b/bin/lh
index e662589..4332487 100755
--- a/bin/lh
+++ b/bin/lh
@@ -1,10 +1,12 @@
 #!/bin/sh
 # lh: the Link Handler
-# takes one path or URL as its argument, launches the appropriate program for this.
+# takes one path or URL as its argument, launches the appropriate program for it
 
 # if $1 isn't provided, spawn $BROWSER and exit. this allows lh to be used as a pseudo-browser.
 [ -z "$1" ] && exec "$BROWSER"
 #from pure-sh-bible
+
+#splits a string by $2
 split() {
 	set -f
 	old_ifs=$IFS
@@ -14,32 +16,58 @@ split() {
 	IFS=$old_ifs
 	set +f
 }
+#strips from the right end of a string
+lstrip() {
+	printf '%s\n' "${1##$2}"
+}
+
+# redir unwinding
+# prints all redirect locations
+findredir() {
+	#note: for loop turns all whitespace into newlines
+	for line in $(curl -sIL "$1")
+	do
+		# catch is used to find the line after location:
+		if [ -n "$catch" ]
+		then
+			# return caught line
+			echo "$line"
+			# reset catch variable
+			unset -- catch
+		fi
+		# set catch if the current line is location
+		if echo "$line"|grep -Fq 'ocation:'
+		then
+			catch=1
+		fi
+	done
+}
 
 # handle redirects. tr removes control characters, so the case statement below works as expected.
-URL=$(curl -IL "$1"|grep '^location: '|tail -1|sed 's/location: //'|tr -d '[:cntrl:]')
+URL=$(findredir|tail -1|tr -d '[:cntrl:]')
+
 # if there were no redirects, just set URL to the first argument
 [ -z "$URL" ] && URL="$1"
 
-echo $URL
 case "$URL" in
 	gemini://*|gopher://*)
 		$TERMINAL -e bombadillo "$URL" ;;
-	*mkv|*webm|*mp4)
-		mpv "$URL" >/dev/null 2>&1 & ;;
+	*.mkv*|*.webm*|*.mp4*)
+		mpv --no-terminal "$URL" & ;;
 	*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*hooktube.com*|*bitchute.com*|*twitch.tv/videos/*|*twitch.tv/*/v/*)
-		mpv --ytdl "$URL" >/dev/null 2>&1 & ;;
+		mpv --no-terminal --ytdl "$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)
-		IMGPATH="/tmp/$(echo "$URL"|sed "s/.*\\///")"
-		curl -sL "$URL" >"$IMGPATH"&&sxiv -a "$IMGPATH">/dev/null 2>&1 & ;;
-	*mp3|*m4a|*flac|*aiff|*opus|*ogg|*mp3?source*)
-		mpv "$URL" >/dev/null 2>&1 & ;;
-	*epub|*pdf|*djvu)
-		BOOKPATH="/tmp/$(echo "$URL"|sed 's/.*\///')"
+	*.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"& ;;
+	*.epub*|*.pdf*|*.djvu*)
+		BOOKPATH="/tmp/$(lstrip "$URL" "*/")"
 		if [ -n "$READER" ]; then
 			curl -sL "$URL" >"$BOOKPATH"&&$READER "$BOOKPATH">/dev/null 2>&1 &
 		else
@@ -47,7 +75,7 @@ case "$URL" in
 		fi ;;
 	*)
 		if [ -f "$URL" ]; then
-			$TERMINAL -e "${EDITOR:-vi} $URL"
+			op "$URL"
 		else
 			$BROWSER "$URL" >/dev/null 2>&1 &
 		fi ;;
diff --git a/bin/opener b/bin/op
index 4ae3446..688912b 100755
--- a/bin/opener
+++ b/bin/op
@@ -1,5 +1,5 @@
 #!/bin/sh
-# opener: opens files according to its contents
+# op: file OPener
 # takes one path as its argument, launches the appropriate program for it
 if ! [ -f "$1" ]; then
 	printf 'file %s does not exist!\n' "$1" >/dev/stderr
@@ -28,6 +28,6 @@ case "$FILEMIME" in
 		${EDITOR:-vi} "$FILEPATH">/dev/null 2>&1 & ;;
 	#catchall
 	*)
-		echo "file $(basename "$FILEPATH") could not be opened. its type is $FILEMIME, go tell ensa that opener didn't work" >/dev/stderr
+		echo "file $(basename "$FILEPATH") could not be opened. its type is $FILEMIME, go tell ensa that $(basename $0) didn't work" >/dev/stderr
 		return 1 ;;
 esac
diff --git a/bin/prompt b/bin/prompt
index ac1a319..fc0a07b 100755
--- a/bin/prompt
+++ b/bin/prompt
@@ -1,10 +1,4 @@
 #!/bin/sh
 # calls dmenu with $1 as the prompt and "no" and "yes" as the options.
 # if "yes" is chosen, call $2.
-if [ $# -eq 1 ]; then
-	case "$1" in
-		[!-]*|-*[!h]*) return 1 ;;
-		*h*) printf 'usage: %s [-h]|prompt cmd\n' "$(basename $0)">/dev/stderr&&return 1 ;;
-	esac
-fi
 [ "$(printf "no\\nyes"|dmenu -p "$1")" = "yes" ] && $2
diff --git a/bin/pw b/bin/pw
index fa33761..f7fd00a 100755
--- a/bin/pw
+++ b/bin/pw
@@ -1,4 +1,3 @@
 #!/bin/sh
 # generates a password of length $1.
-PW=$(tr -cd "[:alnum:][:punct:]"</dev/urandom|fold -w "$1"|head -1)
-printf '%s\n' "$PW"
+tr -cd "[:alnum:][:punct:]"</dev/urandom|fold -w "$1"|head -1
diff --git a/bin/rsschk b/bin/rsschk
index 5a8de6e..ab74169 100755
--- a/bin/rsschk
+++ b/bin/rsschk
@@ -1,16 +1,15 @@
 #!/bin/sh
-# checks if $1 is a valid URL, and if so, checks to see if it's in newsboat's urls file, and if not, adds it to the file.
+# checks if $1 is a valid URL
+# if so, checks to see if it's in newsboat's urls file
+# if not, adds it to the file.
 if [ "$1" = "-h" ]; then
 	printf 'usage: rsschk [-h]|URL [\"category\"]\n'>/dev/stderr&&return 1
 fi
-XDG_CONFIG_HOME=${XDG_CONFIG_HOME:=~/.config}
-! echo "$1" | grep "http*://\S\+\.[A-Za-z]\+\S*" >/dev/null &&
+# regex for finding urls
+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
-RSSFILE="$XDG_CONFIG_HOME/newsboat/urls"
-if grep -E "^$1" "$RSSFILE"; then
-	if [ -z "$2" ]; then
-		echo "$1">>"$RSSFILE"&&notify-send "RSS feed added." "You may want to edit $RSSFILE now."
-	else
-		echo "$1 $2">>"$RSSFILE"&&notify-send "RSS feed added with one category."
-	fi
-fi
+RSSFILE="${XDG_CONFIG_HOME:=~/.config}/newsboat/urls"
+grep -q "^$1" "$RSSFILE" &&
+	{ echo "$1">>"$RSSFILE"&&notify-send "RSS feed added.";}
diff --git a/bin/shenv b/bin/shenv
index d37733f..b242955 100755
--- a/bin/shenv
+++ b/bin/shenv
@@ -1,5 +1,5 @@
 #!/bin/sh
 # simply sources the shrc and runs a shell with that as its environment.
 # passes through all arguments that sh takes. to be used instead of sh.
-. ~/etc/shrc
-exec sh "$@"
+. ${XDG_CONFIG_HOME:=$HOME/.config}/shrc
+exec /bin/sh "$@"
diff --git a/bin/xbg b/bin/xbg
index bde015d..339ed69 100755
--- a/bin/xbg
+++ b/bin/xbg
@@ -1,10 +1,7 @@
 #!/bin/sh
-# checks to see if .fehbg exists. if so, sources it and exits.
 # if there is an argument, forcibly symlink it to $PICPATH and set $PICPATH to the background using xwallpaper.
 # if there is not an argument, set the wallpaper through the aforementioned method without setting the symlink.
 # $PICPATH is by default $XDG_PICTURES_DIR/bg.png, determined by xdg-user-dir if available or assumed to be ~/Pictures/bg.png if unavailable. $PICPATH can be set by the user in shrc if they wish to use a different background location.
-[ -e "$HOME/.fehbg" ]&&. "$HOME/.fehbg"&&exit
-
 if command -v xdg-user-dir >/dev/null; then
 	PICPATH=${PICPATH:="$(xdg-user-dir PICTURES)/bg.png"}
 else
diff --git a/config/aliasrc b/config/aliasrc
index 88d0ba7..5106070 100644
--- a/config/aliasrc
+++ b/config/aliasrc
@@ -38,8 +38,8 @@ alias \
 	pi='pkg_info -D snap'\
 	pl='pkglocate'\
 	f="\$FILE"\
-	e="\$EDITOR"\
-	v="\$EDITOR"\
+	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" \
 	unwww='bombadillo'\
diff --git a/config/cwmrc b/config/cwmrc
index 0a34d84..cc3b5e4 100644
--- a/config/cwmrc
+++ b/config/cwmrc
@@ -13,10 +13,11 @@ autogroup 9 pass
 #aesthetics
 fontname "Cozette:style=Medium:pixelsize=11"
 borderwidth 1
+color urgencyborder	"#cc3214"
 color activeborder	"#6b996b"
 color inactiveborder	"#4c4635"
 color groupborder	"#3c7b7f"
-color ungroupborder	"#cc3214"
+color ungroupborder	"#7a4955"
 color menubg		"#14130e"
 color menufg		"#b7a980"
 color font		"#3d6266"
@@ -25,15 +26,11 @@ color selfont		"#72694f"
 #don't want any default keys
 unbind-key all
 unbind-mouse all
-#program list
-command term xterm
-command lock slock
 #program spawning
 #bind-key 4-d dmenu_run
 bind-key 4-d menu-exec
-bind-key 4S-d menu-cmd
 bind-key 4C-d menu-window-hidden
-bind-key 4-Return terminal
+bind-key 4-Return "sh -c \"$TERMINAL\""
 #bind-key 4S-Return "sh -c \"$TERMINAL -class popup"
 bind-key 4-e "sh -c \"$TERMINAL -e env TERM=xterm-256color $EDITOR\""
 #bind-key 4S-e "sh -c \"$TERMINAL -class popup -e env TERM=xterm-256color $EDITOR\""
@@ -46,7 +43,6 @@ bind-key 4-m "sh -c \"$TERMINAL -class musictui -e $MUSIC\""
 bind-key 4-c "sh -c \"$TERMINAL -class mail -e $MAILER\""
 bind-key 4-n "sh -c \"$TERMINAL -e $RSS\""
 bind-key 4-r "sh -c \"$TERMINAL -e $FILE\""
-bind-key 4S-r "sh -c \"$READER\""
 bind-key 4-p "sh -c \"$SCR -u $(xdg-user-dir PICTURES)/screenshot-$(date +%Y-%m-%d_%T).png\""
 bind-key 4S-p "sh -c \"$SCR -us $(xdg-user-dir PICTURES)/screenshot-$(date +%Y-%m-%d_%T).png\""
 bind-key 4S-comma "mpc -q prev"
@@ -67,9 +63,9 @@ bind-key 4C-equal "xbacklight -inc 5"
 bind-key 4C-minus "xbacklight -dec 5"
 bind-key 4CS-equal "xbacklight -inc 15"
 bind-key 4CS-minus "xbacklight -dec 15"
-bind-key 4-x lock
-bind-key 4S-x "sh -c \"prompt 'shutdown computer?' 'doas shutdown -p now'\""
-bind-key 4S-BackSpace "sh -c \"prompt 'reboot computer?' 'doas shutdown -r now'\""
+bind-key 4-x "sh -c \"$LOCK\""
+bind-key 4S-x "prompt 'shutdown computer?' 'doas halt -p'"
+bind-key 4S-BackSpace "prompt 'reboot computer?' 'doas reboot'"
 bind-key 4-b "sh -c \"pkill dzen2||bar.sh\""
 #window nav
 bind-key 4-j window-cycle
@@ -115,7 +111,7 @@ bind-key 4-0 group-toggle-all
 bind-key 4S-0 window-stick
 bind-key 4C-0 window-hide
 #exits
-bind-key 4-F2 restart
+bind-key 4S-r restart
 bind-key 4S-Escape quit
 #group designation/nav
 bind-key 4-g window-group
diff --git a/config/dunst/dunstrc b/config/dunst/dunstrc
index 6687369..247809b 100644
--- a/config/dunst/dunstrc
+++ b/config/dunst/dunstrc
@@ -50,9 +50,7 @@
     show_indicators = yes
 
     ### Icons ###
-    icon_position = left
-    max_icon_size = 64
-    icon_path = /usr/local/share/icons/Adwaita/16x16/status/:/usr/local/share/icons/Adwaita/16x16/devices/
+    icon_position = off
 
     ### History ###
     sticky_history = yes
diff --git a/config/ksh/functions/l. b/config/ksh/functions/l.
index 8beac4e..e4a759e 100644
--- a/config/ksh/functions/l.
+++ b/config/ksh/functions/l.
@@ -1,8 +1,10 @@
 #!/bin/ksh
-l.() {
+function l. {
 	if [[ -n "$1" ]]; then
-		exa -Fbd "$1"/.*
+		( cd "$1" 2>/dev/null ||\
+			{ echo "$0: $1 - No such directory" >&2 ; exit; }
+		ls -d .* )
 	else
-		exa -Fbd .*
+		ls -d .*
 	fi
 }
diff --git a/config/lf/lfrc b/config/lf/lfrc
index 138c470..880ea97 100644
--- a/config/lf/lfrc
+++ b/config/lf/lfrc
@@ -5,16 +5,12 @@ set ifs "\n"
 
 set promptfmt "\033[1;31m%u\033[0;32m@\033[1;34m%h\033[0m:\033[1;36m%w/\033[0m\033[1m%f\033[0m"
 # cmds
-cmd open ${{
-	opener $f
-}}
-
 cmd ttmsh ${{
-	TTMURL="curl -F 'file=@-' https://ttm.sh < $f"
+	TTMURL="$(curl -F 'file=@'$f https://ttm.sh)"
 	if [ -n "$TTMURL" ]; then
 		echo "$TTMURL"|tee "$HOME/ttmsh"|xclip -r
-	done
-	notify-send  'successfully uploaded to ttm!' 'link copied to selection, backup is in $HOME/ttmsh'
+		notify-send  'successfully uploaded to ttm!' 'link copied to selection, backup is in $HOME/ttmsh'
+	fi
 }}
 
 cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1
diff --git a/config/shrc b/config/shrc
index 533386f..10f5287 100644
--- a/config/shrc
+++ b/config/shrc
@@ -19,7 +19,7 @@ export EDITOR="vise"
 export FILE="lf"
 export PAGER="less"
 export TERMINAL="xterm"
-export ALTSCR="st-altscreen"
+export OPENER="op"
 export BROWSER="firefox"
 export COMM="comm-sel"
 export READER="zathura"
@@ -30,8 +30,6 @@ export SCR="maim"
 export LOCK="slock"
 #less args
 export LESS='-iFMRX~ -x2'
-#ircii (and derivatives) ircservers location
-export IRC_SERVERS_FILE="$HOME_DATA/ircservers"
 #locale info
 export LANGUAGE="en"
 export LANG="POSIX.UTF-8"
@@ -39,7 +37,7 @@ export LC_ALL="POSIX.UTF-8"
 #lscolor
 export CLICOLOR=1
 #todo(1)
-export TODO="$HOME/doc/todo"
+export TODO="$HOME_DATA/xdg/doc/todo"
 #ksh
 export ENV="$HOME_ETC/ksh/kshrc"
 
@@ -47,6 +45,8 @@ export ENV="$HOME_ETC/ksh/kshrc"
 export GTK2_RC_FILES="$HOME_ETC/gtk-2.0/gtkrc-2.0"
 export LESSHISTFILE="-"
 export GOPATH="$HOME_EXT/go"
+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"
diff --git a/data/applications/doc.desktop b/data/applications/doc.desktop
deleted file mode 100644
index 49a399b..0000000
--- a/data/applications/doc.desktop
+++ /dev/null
@@ -1,4 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=Non-raw document reader
-Exec=/usr/bin/env zathura %u
diff --git a/data/applications/img.desktop b/data/applications/img.desktop
deleted file mode 100644
index d754e1a..0000000
--- a/data/applications/img.desktop
+++ /dev/null
@@ -1,4 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=Image viewer
-Exec=/usr/bin/env sxiv -a %u
diff --git a/data/applications/rss.desktop b/data/applications/rss.desktop
deleted file mode 100644
index 20ed292..0000000
--- a/data/applications/rss.desktop
+++ /dev/null
@@ -1,4 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=RSS feed addition
-Exec=/usr/bin/env rsschk %U
diff --git a/data/applications/text.desktop b/data/applications/text.desktop
deleted file mode 100644
index 39b1e3e..0000000
--- a/data/applications/text.desktop
+++ /dev/null
@@ -1,4 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=Text editor
-Exec=/usr/bin/env xterm -e vis %u
diff --git a/data/applications/weblight.desktop b/data/applications/weblight.desktop
deleted file mode 100644
index 651d75a..0000000
--- a/data/applications/weblight.desktop
+++ /dev/null
@@ -1,4 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=Light Web Browser
-Exec=/usr/bin/env surf %u
diff --git a/data/mailcap b/data/mailcap
index d57b783..c8e0061 100644
--- a/data/mailcap
+++ b/data/mailcap
@@ -1,4 +1,2 @@
-text/plain; $EDITOR %s ;
 text/html; lynx -assume_charset=%{charset} -display_charset=utf-8 -dump %s; nametemplate=%s.html; copiousoutput;
-video/*; mpv --quiet %s &; copiousoutput
-application/pdf; $READER %s ;
+*/*; op %s