--- /dev/null
+*
+!.gitignore
+!lf/*
+!newsboat/*
+!shell/*
--- /dev/null
+di 📁
+fi 📄
+tw 🤝
+ow 📂
+ln 🔗
+or ❓
+ex ❗
+*.txt 📝
+*.mom ✒️
+*.me ✒️
+*.ms ✒️
+*.ly 🎼
+*.avif 🖼
+*.png 🖼
+*.webp 🖼
+*.ico 🖼
+*.jpg 📸
+*.jpe 📸
+*.jpeg 📸
+*.gif 🖼
+*.svg 🗺
+*.tif 🖼
+*.tiff 🖼
+*.xcf 🖌
+*.html 🌎
+*.xml 📰
+*.gpg 🔒
+*.css 🎨
+*.pdf 📕
+*.djvu 📗
+*.epub 📗
+*.csv 📒
+*.xlsx 📒
+*.tex ✒️
+*.md 📔
+*.r 📊
+*.R 📊
+*.rmd 📊
+*.Rmd 📊
+*.m 📊
+*.mp3 🎵
+*.opus 🎵
+*.ogg 🎵
+*.m4a 🎵
+*.flac 🎶
+*.wav 🎶
+*.midi 🎹
+*.RPP 🎙️
+*.mkv 🎥
+*.mp4 🎥
+*.webm 🎥
+*.mpeg 🎥
+*.avi 🎥
+*.mov 🎥
+*.mpg 🎥
+*.wmv 🎥
+*.m4b 🎥
+*.flv 🎥
+*.zip 📦
+*.rar 📦
+*.7z 📦
+*.tar 📦
+*.z64 🎮
+*.v64 🎮
+*.n64 🎮
+*.gba 🎮
+*.nes 🎮
+*.gdi 🎮
+*.1 ℹ
+*.nfo ℹ
+*.info ℹ
+*.log 📙
+*.iso 📀
+*.img 📀
+*.bib 🎓
+*.ref 🎓
+*.ged 👪
+*.part 💔
+*.torrent 🔽
+*.jar ♨
+*.java ♨
+*.rem 📆
--- /dev/null
+# Luke's lf settings
+
+
+# Note on Image Previews
+# For those wanting image previews, like this system, there are four steps to
+# set it up. These are done automatically for LARBS users, but I will state
+# them here for others doing it manually.
+#
+# 1. ueberzug must be installed.
+# 2. The scope file (~/.config/lf/scope for me), must have a command similar to
+# mine to generate ueberzug images.
+# 3. A `set cleaner` line as below is a cleaner script.
+# 4. lf should be started through a wrapper script (~/.local/bin/lfub for me)
+# that creates the environment for ueberzug. This command can be be aliased
+# in your shellrc (`alias lf="lfub") or if set to a binding, should be
+# called directly instead of normal lf.
+
+# Basic vars
+set shellopts '-eu'
+set ifs "\n"
+set scrolloff 10
+set icons
+set period 1
+set hiddenfiles ".*:*.aux:*.log:*.bbl:*.bcf:*.blg:*.run.xml"
+set cleaner '~/.config/lf/cleaner'
+set previewer '~/.config/lf/scope'
+set autoquit true
+
+# cmds/functions
+cmd open ${{
+ case $(file --mime-type "$(readlink -f $f)" -b) in
+ application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) localc $fx ;;
+ image/vnd.djvu|application/pdf|application/postscript) setsid -f zathura $fx >/dev/null 2>&1 ;;
+ text/*|application/json|inode/x-empty|application/x-subrip) $EDITOR $fx;;
+ image/x-xcf) setsid -f gimp $f >/dev/null 2>&1 ;;
+ image/svg+xml) display -- $f ;;
+ image/*) rotdir $f | grep -i "\.\(png\|jpg\|jpeg\|gif\|webp\|avif\|tif\|ico\)\(_large\)*$" |
+ setsid -f nsxiv -aio 2>/dev/null | while read -r file; do
+ [ -z "$file" ] && continue
+ lf -remote "send select \"$file\""
+ lf -remote "send toggle"
+ done &
+ ;;
+ audio/*|video/x-ms-asf) mpv --audio-display=no $f ;;
+ video/*) setsid -f mpv $f -quiet >/dev/null 2>&1 ;;
+ application/pdf|application/vnd.djvu|application/epub*) setsid -f zathura $fx >/dev/null 2>&1 ;;
+ application/pgp-encrypted) $EDITOR $fx ;;
+ application/vnd.openxmlformats-officedocument.wordprocessingml.document|application/vnd.oasis.opendocument.text|application/vnd.openxmlformats-officedocument.spreadsheetml.sheet|application/vnd.oasis.opendocument.spreadsheet|application/vnd.oasis.opendocument.spreadsheet-template|application/vnd.openxmlformats-officedocument.presentationml.presentation|application/vnd.oasis.opendocument.presentation-template|application/vnd.oasis.opendocument.presentation|application/vnd.ms-powerpoint|application/vnd.oasis.opendocument.graphics|application/vnd.oasis.opendocument.graphics-template|application/vnd.oasis.opendocument.formula|application/vnd.oasis.opendocument.database) setsid -f libreoffice $fx >/dev/null 2>&1 ;;
+ application/octet-stream) case ${f##*.} in
+ doc|docx|xls|xlsx|odt|ppt|pptx) setsid -f libreoffice $fx >/dev/null 2>&1 ;;
+ ghw) setsid -f gtkwave $f >/dev/null 2>&1 ;;
+ ts) setsid -f mpv $f -quiet >/dev/null 2>&1 ;;
+ *) setsid -f zathura $fx >/dev/null 2>&1 ;;
+ esac ;;
+ *) for f in $fx; do setsid -f $OPENER $f >/dev/null 2>&1; done;;
+ esac
+}}
+
+cmd mkdir $mkdir -p "$@"
+
+cmd extract ${{
+ clear; tput cup $(($(tput lines)/3)); tput bold
+ set -f
+ printf "%s\n\t" "$fx"
+ printf "extract?[y/N]"
+ read ans
+ [ $ans = "y" ] && {
+ case $fx in
+ *.tar.bz2) tar xjf $fx ;;
+ *.tar.gz) tar xzf $fx ;;
+ *.bz2) bunzip2 $fx ;;
+ *.rar) unrar e $fx ;;
+ *.gz) gunzip $fx ;;
+ *.tar) tar xf $fx ;;
+ *.tbz2) tar xjf $fx ;;
+ *.tgz) tar xzf $fx ;;
+ *.zip) unzip $fx ;;
+ *.Z) uncompress $fx ;;
+ *.7z) 7z x $fx ;;
+ *.tar.xz) tar xf $fx ;;
+ esac
+ }
+}}
+
+cmd delete ${{
+ clear; tput cup $(($(tput lines)/3)); tput bold
+ set -f
+ printf "%s\n\t" "$fx"
+ printf "delete?[y/N]"
+ read ans
+ [ $ans = "y" ] && rm -rf -- $fx
+}}
+
+cmd moveto ${{
+ set -f
+ dest=$(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' "${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs" | fzf --prompt 'Move to where? ' | sed 's|~|$HOME|')
+ [ -z "$dest" ] && exit
+ destpath=$(eval printf '%s' \"$dest\")
+ clear; tput cup $(($(tput lines)/3)); tput bold
+ echo "From:"
+ echo "$fx" | sed 's/^/ /'
+ printf "To:\n %s\n\n\tmove?[y/N]" "$destpath"
+ read -r ans
+ [ "$ans" != "y" ] && exit
+ for x in $fx; do
+ mv -iv "$x" "$destpath"
+ done &&
+ notify-send "🚚 File(s) moved." "File(s) moved to $destpath."
+}}
+
+cmd copyto ${{
+ set -f
+ dest=$(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' "${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs" | fzf --prompt 'Copy to where? ' | sed 's|~|$HOME|')
+ [ -z "$dest" ] && exit
+ destpath=$(eval printf '%s' \"$dest\")
+ clear; tput cup $(($(tput lines)/3)); tput bold
+ echo "From:"
+ echo "$fx" | sed 's/^/ /'
+ printf "To:\n %s\n\n\tcopy?[y/N]" "$destpath"
+ read -r ans
+ [ "$ans" != "y" ] && exit
+ for x in $fx; do
+ cp -ivr "$x" "$destpath"
+ done &&
+ notify-send "📋 File(s) copied." "File(s) copied to $destpath."
+}}
+
+cmd setbg "$1"
+
+cmd bulkrename ${{
+ tmpfile_old="$(mktemp)"
+ tmpfile_new="$(mktemp)"
+
+ [ -n "$fs" ] && fs=$(basename -a $fs) || fs=$(ls)
+
+ echo "$fs" > "$tmpfile_old"
+ echo "$fs" > "$tmpfile_new"
+ $EDITOR "$tmpfile_new"
+
+ [ "$(wc -l < "$tmpfile_old")" -eq "$(wc -l < "$tmpfile_new")" ] || { rm -f "$tmpfile_old" "$tmpfile_new"; exit 1; }
+
+ paste "$tmpfile_old" "$tmpfile_new" | while IFS="$(printf '\t')" read -r src dst
+ do
+ [ "$src" = "$dst" ] || [ -e "$dst" ] || mv -- "$src" "$dst"
+ done
+
+ rm -f "$tmpfile_old" "$tmpfile_new"
+ lf -remote "send $id unselect"
+}}
+
+# Bindings
+map <c-f> $lf -remote "send $id select \"$(fzf)\""
+map J $lf -remote "send $id cd $(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf)"
+map H cd ~
+map g top
+map D delete
+map E extract
+map C copyto
+map M moveto
+map <c-n> push :mkdir<space>""<left>
+map <c-r> reload
+map <c-s> set hidden!
+map <enter> shell
+map x $$f
+map X !$f
+map o &mimeopen "$f"
+map O $mimeopen --ask "$f"
+
+map A :rename; cmd-end # at the very end
+map c push A<c-u> # new rename
+map I :rename; cmd-home # at the very beginning
+map i :rename # before extension
+map a :rename; cmd-right # after extension
+map B bulkrename
+map b $setbg $f
+
+map <c-e> down
+map <c-y> up
+map V push :!nvim<space>
+
+map W $setsid -f $TERMINAL >/dev/null 2>&1
+
+map U $printf "%s" "$fx" | xclip -selection clipboard
+map u $printf "%s" "$fx" | sed 's/.*\///' | xclip -selection clipboard
+map . $printf "%s" "$fx" | sed -E 's/^.+\[/https:\/\/www.youtube.com\/watch?v=/' | sed -E 's/\]\..+//' | xclip -selection clipboard
+map <gt> $printf "%s" "$fx" | sed -E 's/^.+\[/https:\/\/piped.video\/watch?v=/' | sed -E 's/\]\..+//' | xclip -selection clipboard
+map T $nsxiv -t "$(pwd)" # opens thumbnail mode
+map <c-l> unselect
+
+
+
+# Source Bookmarks
+source "~/.config/lf/shortcutrc"
--- /dev/null
+#!/bin/sh
+
+# File preview handler for lf.
+
+set -C -f
+IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}"
+
+
+# Note that the cache file name is a function of file information, meaning if
+# an image appears in multiple places across the machine, it will not have to
+# be regenerated once seen.
+
+case "$(file --dereference --brief --mime-type -- "$1")" in
+ image/avif) CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
+ [ ! -f "$CACHE" ] && magick "$1" "$CACHE.jpg"
+ image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" ;;
+ image/vnd.djvu)
+ CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
+ [ ! -f "$CACHE" ] && djvused "$1" -e 'select 1; save-page-with /dev/stdout' | magick -density 200 - "$CACHE.jpg" > /dev/null 2>&1
+ image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" ;;
+image/svg+xml)
+ CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
+ [ ! -f "$CACHE" ] && inkscape --convert-dpi-method=none -o "$CACHE.png" --export-overwrite -D --export-png-color-mode=RGBA_16 "$1"
+ image "$CACHE.png" "$2" "$3" "$4" "$5" "$1"
+ ;;
+ image/x-xcf)
+ CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}')"
+ [ ! -f "$CACHE.jpg" ] && magick "$1[0]" "$CACHE.jpg"
+ image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1"
+ ;;
+ image/*) image "$1" "$2" "$3" "$4" "$5" "$1" ;;
+ text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1" ;;
+ text/troff) man ./ "$1" | col -b ;;
+ text/* | */xml | application/json | application/x-ndjson) bat -p --theme ansi --terminal-width "$(($4-2))" -f "$1" ;;
+ video/* | */pdf | audio/* | application/octet-stream) mediainfo "$1" || exit 1 ;;
+ */epub+zip|*/mobi*)
+ CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
+ [ ! -f "$CACHE.jpg" ] && gnome-epub-thumbnailer "$1" "$CACHE.jpg"
+ image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1"
+ ;;
+ application/*zip) atool --list -- "$1" ;;
+ *opendocument*) odt2txt "$1" ;;
+ application/pgp-encrypted) gpg -d -- "$1" ;;
+esac
+exit 1
--- /dev/null
+map Ccac cd "/home/tuckerj/.cache"
+map Ccf cd "/home/tuckerj/.config"
+map CD cd "/home/tuckerj/Downloads"
+map Cd cd "/home/tuckerj/Documents"
+map Cdt cd "/home/tuckerj/.local/share"
+map Crr cd "/home/tuckerj/.local/src"
+map Ch cd "/home/tuckerj"
+map Cm cd "/home/tuckerj/Music"
+map Cmn cd "/mnt"
+map Cpp cd "/home/tuckerj/Pictures"
+map Csc cd "/home/tuckerj/.local/bin"
+map Csrc cd "/home/tuckerj/.local/src"
+map Cvv cd "/home/tuckerj/Videos"
+map Ebf $$EDITOR "/home/tuckerj/.config/shell/bm-files"
+map Ebd $$EDITOR "/home/tuckerj/.config/shell/bm-dirs"
+map Ecfx $$EDITOR "/home/tuckerj/.config/x11/xresources"
+map Ecfb $$EDITOR "~/.local/src/dwmblocks/config.h"
+map Ecfv $$EDITOR "/home/tuckerj/.config/nvim/init.vim"
+map Ecfz $$EDITOR "/home/tuckerj/.config/zsh/.zshrc"
+map Ecfa $$EDITOR "/home/tuckerj/.config/shell/aliasrc"
+map Ecfp $$EDITOR "/home/tuckerj/.config/shell/profile"
+map Ecfm $$EDITOR "/home/tuckerj/.config/mutt/muttrc"
+map Ecfn $$EDITOR "/home/tuckerj/.config/newsboat/config"
+map Ecfu $$EDITOR "/home/tuckerj/.config/newsboat/urls"
+map Ecfmb $$EDITOR "/home/tuckerj/.config/ncmpcpp/bindings"
+map Ecfmc $$EDITOR "/home/tuckerj/.config/ncmpcpp/config"
+map Ecfl $$EDITOR "/home/tuckerj/.config/lf/lfrc"
+map EcfL $$EDITOR "/home/tuckerj/.config/lf/scope"
+map EcfX $$EDITOR "/home/tuckerj/.config/nsxiv/exec/key-handler"
--- /dev/null
+#show-read-feeds no
+auto-reload yes
+
+external-url-viewer "urlscan -dc -r 'linkhandler {}'"
+
+bind-key j down
+bind-key k up
+bind-key j next articlelist
+bind-key k prev articlelist
+bind-key J next-feed articlelist
+bind-key K prev-feed articlelist
+bind-key G end
+bind-key g home
+bind-key d pagedown
+bind-key u pageup
+bind-key l open
+bind-key h quit
+bind-key a toggle-article-read
+bind-key n next-unread
+bind-key N prev-unread
+bind-key D pb-download
+bind-key U show-urls
+bind-key x pb-delete
+
+color listnormal white default
+color listfocus blue black standout bold
+color listnormal_unread red default
+color listfocus_unread magenta red standout bold
+color info red black bold
+color article white default bold
+
+browser linkhandler
+macro , open-in-browser
+macro t set browser "qndl" ; open-in-browser ; set browser linkhandler
+macro a set browser "tsp yt-dlp --embed-metadata -xic -f bestaudio/best" ; open-in-browser ; set browser linkhandler
+macro v set browser "setsid -f mpv" ; open-in-browser ; set browser linkhandler
+macro w set browser "lynx" ; open-in-browser ; set browser linkhandler
+macro d set browser "dmenuhandler" ; open-in-browser ; set browser linkhandler
+macro c set browser "echo %u | xclip -r -sel c" ; open-in-browser ; set browser linkhandler
+macro C set browser "youtube-viewer --comments=%u" ; open-in-browser ; set browser linkhandler
+macro p set browser "mpv --vid=no --" ; one ; set browser linkhandler
+
+highlight all "---.*---" yellow
+highlight feedlist ".*(0/0))" black
+highlight article "(^Feed:.*|^Title:.*|^Author:.*)" cyan default bold
+highlight article "(^Link:.*|^Date:.*)" default default
+highlight article "https?://[^ ]+" green default
+highlight article "^(Title):.*$" blue default
+highlight article "\\[[0-9][0-9]*\\]" magenta default bold
+highlight article "\\[image\\ [0-9]+\\]" green default bold
+highlight article "\\[embedded flash: [0-9][0-9]*\\]" green default bold
+highlight article ":.*\\(link\\)$" cyan default
+highlight article ":.*\\(image\\)$" blue default
+highlight article ":.*\\(embedded flash\\)$" magenta default
--- /dev/null
+https://gahlorddewald.com/rss2023a.xml "social"
+https://restofworld.org/feed/latest "news"
+https://www.democracynow.org/democracynow.rss "news"
+https://therealnews.com/feed?partner-feed=the-real-news-network "news"
+https://jacobin.com/feed/ "news"
+https://newmusicusa.org/feed/ "news"
+https://www.dissentmagazine.org/feed "news"
+https://www.currentaffairs.org/feed "news"
+https://feeds.feedburner.com/Posts-Jamhoor "news"
+https://www.democracynow.org/podcast.xml "podcast"
+https://nowandxen.libsyn.com/rss "podcast"
+https://anchor.fm/s/e90b5574/podcast/rss "podcast
+https://www.spreaker.com/show/5634537/episodes/feed "podcast"
+https://feeds.transistor.fm/nymphet-alumni "podcast"
+https://www.patreon.com/rss/cumtownRSS?auth=Sk3CTXwaTx0Aw_bT2PxSmYnN-st3sdxB "~CTown" "podcast"
+https://feeds.soundcloud.com/users/soundcloud:users:55959949/sounds.rss "podcast"
+https://anchor.fm/s/22c679fc/podcast/rss "podcast"
+https://feeds.libsyn.com/102225/rss "podcast"
+http://speedboatdope.com/rss/ "podcast"
+https://notrelated.xyz/rss "podcast"
+https://videos.lukesmith.xyz/feeds/videos.xml?sort=-publishedAt&isLocal=true
+https://based.cooking/index.xml "websites"
+https://puredata.info/news/RSS "~pure data" "repos"
+https://supercollider.github.io/feed.xml "~supercollider" "repos"
+https://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=rss "~lilypond" "repos"
+https://git.iem.at/audioplugins/IEMPluginSuite.atom "~IEM" "repos"
+https://artixlinux.org/feed.php "~artix linux" "repos"
+https://www.archlinux.org/feeds/news/ "~arch linux" "repos"
--- /dev/null
+#!/bin/sh
+
+# Use neovim for vim if present.
+[ -x "$(command -v nvim)" ] && alias vim="nvim" vimdiff="nvim -d"
+
+# Use $XINITRC variable if file exists.
+[ -f "$XINITRC" ] && alias startx="startx $XINITRC"
+
+[ -f "$MBSYNCRC" ] && alias mbsync="mbsync -c $MBSYNCRC"
+
+# sudo not required for some system commands
+for command in mount umount sv pacman updatedb su shutdown poweroff reboot ; do
+ alias $command="sudo $command"
+done; unset command
+
+se() {
+ choice="$(find ~/.local/bin -mindepth 1 -printf '%P\n' | fzf)"
+ [ -f "$HOME/.local/bin/$choice" ] && $EDITOR "$HOME/.local/bin/$choice"
+ }
+
+# Verbosity and settings that you pretty much just always are going to want.
+alias \
+ cp="cp -iv" \
+ mv="mv -iv" \
+ rm="rm -vI" \
+ bc="bc -ql" \
+ rsync="rsync -vrPlu" \
+ mkd="mkdir -pv" \
+ yt="yt-dlp --embed-metadata -i" \
+ yta="yt -x -f bestaudio/best" \
+ ytt="yt --skip-download --write-thumbnail" \
+ ffmpeg="ffmpeg -hide_banner"
+
+# Colorize commands when possible.
+alias \
+ ls="ls -hN --color=auto --group-directories-first" \
+ grep="grep --color=auto" \
+ diff="diff --color=auto" \
+ ccat="highlight --out-format=ansi" \
+ ip="ip -color=auto"
+
+# These common commands are just too long! Abbreviate them.
+alias \
+ z="zathura"
+
+alias \
+ magit="nvim -c MagitOnly" \
+ ref="shortcuts >/dev/null; source ${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc ; source ${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutenvrc ; source ${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" \
--- /dev/null
+# You can add comments to these files with #
+cac ${XDG_CACHE_HOME:-$HOME/.cache}
+cf ${XDG_CONFIG_HOME:-$HOME/.config}
+D ${XDG_DOWNLOAD_DIR:-$HOME/Downloads}
+d ${XDG_DOCUMENTS_DIR:-$HOME/Documents}
+dt ${XDG_DATA_HOME:-$HOME/.local/share}
+rr $HOME/.local/src
+h $HOME
+m ${XDG_MUSIC_DIR:-$HOME/Music}
+mn /mnt
+pp ${XDG_PICTURES_DIR:-$HOME/Pictures}
+sc $HOME/.local/bin
+src $HOME/.local/src
+vv ${XDG_VIDEOS_DIR:-$HOME/Videos}
--- /dev/null
+# These files automatically update when edited/saved in vim:
+
+# keys filename description
+bf ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-files # This file, a list of bookmarked files
+bd ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs # A list of bookmarked directories similar to this file
+cfx ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources # Colors, themes and variables for X11
+cfb ~/.local/src/dwmblocks/config.h # dwmblocks: the status bar for dwm
+
+
+# These do not update automatically, but on the next new instance of a program:
+
+cfv ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/init.vim # vim/neovim config
+cfz $ZDOTDIR/.zshrc # zsh (shell) config
+cfa ${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc # aliases used by zsh (and potentially other shells)
+cfp ${XDG_CONFIG_HOME:-$HOME/.config}/shell/profile # profile file for login settings for zsh
+cfm ${XDG_CONFIG_HOME:-$HOME/.config}/mutt/muttrc # mutt (email client) config
+cfn ${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/config # newsboat (RSS reader)
+cfu ${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/urls # RSS urls for newsboat
+cfmb ${XDG_CONFIG_HOME:-$HOME/.config}/ncmpcpp/bindings # ncmpcpp (music player) keybinds file
+cfmc ${XDG_CONFIG_HOME:-$HOME/.config}/ncmpcpp/config # ncmpcpp (music player) config
+cfl ${XDG_CONFIG_HOME:-$HOME/.config}/lf/lfrc # lf (file browser) config
+cfL ${XDG_CONFIG_HOME:-$HOME/.config}/lf/scope # lf's scope/preview file
+cfX ${XDG_CONFIG_HOME:-$HOME/.config}/nsxiv/exec/key-handler # nsxiv (image viewer) key/script handler
--- /dev/null
+$include /etc/inputrc
+set editing-mode vi
+$if mode=vi
+
+set show-mode-in-prompt on
+set vi-ins-mode-string \1\e[6 q\2
+set vi-cmd-mode-string \1\e[2 q\2
+
+set keymap vi-command
+# these are for vi-command mode
+Control-l: clear-screen
+Control-a: beginning-of-line
+
+set keymap vi-insert
+# these are for vi-insert mode
+Control-l: clear-screen
+Control-a: beginning-of-line
+
+$endif
--- /dev/null
+#!/bin/sh
+# shellcheck disable=SC2155
+
+# Profile file, runs on login. Environmental variables are set here.
+
+# Add all directories in `~/.local/bin` to $PATH
+export PATH="$PATH:$(find ~/.local/bin -type d | paste -sd ':' -)"
+
+unsetopt PROMPT_SP 2>/dev/null
+
+# Default programs:
+export EDITOR="nvim"
+export TERMINAL="st"
+export TERMINAL_PROG="st"
+export BROWSER="librewolf"
+
+# General
+export CALENDAR="$HOME/Notes/calendar.rem"
+export TODO="$HOME/Notes/todo.md"
+
+# Change the default crypto/weather monitor sites.
+# export CRYPTOURL="rate.sx"
+# export WTTRURL="wttr.in"
+
+# ~/ Clean-up:
+export XDG_CONFIG_HOME="$HOME/.config"
+export XDG_DATA_HOME="$HOME/.local/share"
+export XDG_CACHE_HOME="$HOME/.cache"
+export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc"
+#export XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority" # This line will break some DMs.
+export NOTMUCH_CONFIG="$XDG_CONFIG_HOME/notmuch-config"
+export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc-2.0"
+export WGETRC="$XDG_CONFIG_HOME/wget/wgetrc"
+export INPUTRC="$XDG_CONFIG_HOME/shell/inputrc"
+export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
+#export GNUPGHOME="$XDG_DATA_HOME/gnupg"
+export WINEPREFIX="$XDG_DATA_HOME/wineprefixes/default"
+export KODI_DATA="$XDG_DATA_HOME/kodi"
+export PASSWORD_STORE_DIR="$XDG_DATA_HOME/password-store"
+export TMUX_TMPDIR="$XDG_RUNTIME_DIR"
+export ANDROID_SDK_HOME="$XDG_CONFIG_HOME/android"
+export CARGO_HOME="$XDG_DATA_HOME/cargo"
+export GOPATH="$XDG_DATA_HOME/go"
+export GOMODCACHE="$XDG_CACHE_HOME/go/mod"
+export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible/ansible.cfg"
+export UNISON="$XDG_DATA_HOME/unison"
+export HISTFILE="$XDG_DATA_HOME/history"
+export MBSYNCRC="$XDG_CONFIG_HOME/mbsync/config"
+export ELECTRUMDIR="$XDG_DATA_HOME/electrum"
+export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/pythonrc"
+export SQLITE_HISTORY="$XDG_DATA_HOME/sqlite_history"
+
+# Other program settings:
+export DICS="/usr/share/stardict/dic/"
+export SUDO_ASKPASS="$HOME/.local/bin/dmenupass"
+export FZF_DEFAULT_OPTS="--layout=reverse --height 40%"
+export LESS="R"
+export LESS_TERMCAP_mb="$(printf '%b' '\e[1;31m')"
+export LESS_TERMCAP_md="$(printf '%b' '\e[1;36m')"
+export LESS_TERMCAP_me="$(printf '%b' '\e[0m')"
+export LESS_TERMCAP_so="$(printf '%b' '\e[01;44;33m')"
+export LESS_TERMCAP_se="$(printf '%b' '\e[0m')"
+export LESS_TERMCAP_us="$(printf '%b' '\e[1;32m')"
+export LESS_TERMCAP_ue="$(printf '%b' '\e[0m')"
+export LESSOPEN="| /usr/bin/highlight -O ansi %s 2>/dev/null"
+export QT_QPA_PLATFORMTHEME="gtk2" # Have QT use gtk2 theme.
+export MOZ_USE_XINPUT2=1 # Mozilla smooth scrolling/touchpads.
+export AWT_TOOLKIT="MToolkit wmname LG3D" # May have to install wmname
+export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm
+
+[ ! -f "$XDG_CONFIG_HOME/shell/shortcutrc" ] && setsid -f shortcuts >/dev/null 2>&1
+
+# Start graphical server on user's current tty if not already running.
+[ "$(tty)" = "/dev/tty1" ] && ! pidof -s Xorg >/dev/null 2>&1 && exec startx "$XINITRC"
+
+# Switch escape and caps if tty and no passwd required:
+sudo -n loadkeys "$XDG_DATA_HOME/larbs/ttymaps.kmap" 2>/dev/null
--- /dev/null
+# vim: filetype=sh
+[ -n "cac" ] && export cac="/home/tuckerj/.cache"
+[ -n "cf" ] && export cf="/home/tuckerj/.config"
+[ -n "D" ] && export D="/home/tuckerj/Downloads"
+[ -n "d" ] && export d="/home/tuckerj/Documents"
+[ -n "dt" ] && export dt="/home/tuckerj/.local/share"
+[ -n "rr" ] && export rr="/home/tuckerj/.local/src"
+[ -n "h" ] && export h="/home/tuckerj"
+[ -n "m" ] && export m="/home/tuckerj/Music"
+[ -n "mn" ] && export mn="/mnt"
+[ -n "pp" ] && export pp="/home/tuckerj/Pictures"
+[ -n "sc" ] && export sc="/home/tuckerj/.local/bin"
+[ -n "src" ] && export src="/home/tuckerj/.local/src"
+[ -n "vv" ] && export vv="/home/tuckerj/Videos"
+[ -n "bf" ] && export bf="/home/tuckerj/.config/shell/bm-files"
+[ -n "bd" ] && export bd="/home/tuckerj/.config/shell/bm-dirs"
+[ -n "cfx" ] && export cfx="/home/tuckerj/.config/x11/xresources"
+[ -n "cfb" ] && export cfb="~/.local/src/dwmblocks/config.h"
+[ -n "cfv" ] && export cfv="/home/tuckerj/.config/nvim/init.vim"
+[ -n "cfz" ] && export cfz="/home/tuckerj/.config/zsh/.zshrc"
+[ -n "cfa" ] && export cfa="/home/tuckerj/.config/shell/aliasrc"
+[ -n "cfp" ] && export cfp="/home/tuckerj/.config/shell/profile"
+[ -n "cfm" ] && export cfm="/home/tuckerj/.config/mutt/muttrc"
+[ -n "cfn" ] && export cfn="/home/tuckerj/.config/newsboat/config"
+[ -n "cfu" ] && export cfu="/home/tuckerj/.config/newsboat/urls"
+[ -n "cfmb" ] && export cfmb="/home/tuckerj/.config/ncmpcpp/bindings"
+[ -n "cfmc" ] && export cfmc="/home/tuckerj/.config/ncmpcpp/config"
+[ -n "cfl" ] && export cfl="/home/tuckerj/.config/lf/lfrc"
+[ -n "cfL" ] && export cfL="/home/tuckerj/.config/lf/scope"
+[ -n "cfX" ] && export cfX="/home/tuckerj/.config/nsxiv/exec/key-handler"
--- /dev/null
+# vim: filetype=sh
+alias cac="cd /home/tuckerj/.cache && ls -A" \
+cf="cd /home/tuckerj/.config && ls -A" \
+D="cd /home/tuckerj/Downloads && ls -A" \
+d="cd /home/tuckerj/Documents && ls -A" \
+dt="cd /home/tuckerj/.local/share && ls -A" \
+rr="cd /home/tuckerj/.local/src && ls -A" \
+h="cd /home/tuckerj && ls -A" \
+m="cd /home/tuckerj/Music && ls -A" \
+mn="cd /mnt && ls -A" \
+pp="cd /home/tuckerj/Pictures && ls -A" \
+sc="cd /home/tuckerj/.local/bin && ls -A" \
+src="cd /home/tuckerj/.local/src && ls -A" \
+vv="cd /home/tuckerj/Videos && ls -A" \
+bf="$EDITOR /home/tuckerj/.config/shell/bm-files" \
+bd="$EDITOR /home/tuckerj/.config/shell/bm-dirs" \
+cfx="$EDITOR /home/tuckerj/.config/x11/xresources" \
+cfb="$EDITOR ~/.local/src/dwmblocks/config.h" \
+cfv="$EDITOR /home/tuckerj/.config/nvim/init.vim" \
+cfz="$EDITOR /home/tuckerj/.config/zsh/.zshrc" \
+cfa="$EDITOR /home/tuckerj/.config/shell/aliasrc" \
+cfp="$EDITOR /home/tuckerj/.config/shell/profile" \
+cfm="$EDITOR /home/tuckerj/.config/mutt/muttrc" \
+cfn="$EDITOR /home/tuckerj/.config/newsboat/config" \
+cfu="$EDITOR /home/tuckerj/.config/newsboat/urls" \
+cfmb="$EDITOR /home/tuckerj/.config/ncmpcpp/bindings" \
+cfmc="$EDITOR /home/tuckerj/.config/ncmpcpp/config" \
+cfl="$EDITOR /home/tuckerj/.config/lf/lfrc" \
+cfL="$EDITOR /home/tuckerj/.config/lf/scope" \
+cfX="$EDITOR /home/tuckerj/.config/nsxiv/exec/key-handler" \
--- /dev/null
+hash -d cac=/home/tuckerj/.cache
+hash -d cf=/home/tuckerj/.config
+hash -d D=/home/tuckerj/Downloads
+hash -d d=/home/tuckerj/Documents
+hash -d dt=/home/tuckerj/.local/share
+hash -d rr=/home/tuckerj/.local/src
+hash -d h=/home/tuckerj
+hash -d m=/home/tuckerj/Music
+hash -d mn=/mnt
+hash -d pp=/home/tuckerj/Pictures
+hash -d sc=/home/tuckerj/.local/bin
+hash -d src=/home/tuckerj/.local/src
+hash -d vv=/home/tuckerj/Videos
+hash -d bf=/home/tuckerj/.config/shell/bm-files
+hash -d bd=/home/tuckerj/.config/shell/bm-dirs
+hash -d cfx=/home/tuckerj/.config/x11/xresources
+hash -d cfb=~/.local/src/dwmblocks/config.h
+hash -d cfv=/home/tuckerj/.config/nvim/init.vim
+hash -d cfz=/home/tuckerj/.config/zsh/.zshrc
+hash -d cfa=/home/tuckerj/.config/shell/aliasrc
+hash -d cfp=/home/tuckerj/.config/shell/profile
+hash -d cfm=/home/tuckerj/.config/mutt/muttrc
+hash -d cfn=/home/tuckerj/.config/newsboat/config
+hash -d cfu=/home/tuckerj/.config/newsboat/urls
+hash -d cfmb=/home/tuckerj/.config/ncmpcpp/bindings
+hash -d cfmc=/home/tuckerj/.config/ncmpcpp/config
+hash -d cfl=/home/tuckerj/.config/lf/lfrc
+hash -d cfL=/home/tuckerj/.config/lf/scope
+hash -d cfX=/home/tuckerj/.config/nsxiv/exec/key-handler