]> git.newer.systems - .config.git/commitdiff
init
authorTucker Johnson <tucker@newer.systems>
Thu, 27 Feb 2025 15:48:53 +0000 (10:48 -0500)
committerTucker Johnson <tucker@newer.systems>
Thu, 27 Feb 2025 15:48:53 +0000 (10:48 -0500)
15 files changed:
.gitignore [new file with mode: 0644]
lf/icons [new file with mode: 0644]
lf/lfrc [new file with mode: 0644]
lf/scope [new file with mode: 0755]
lf/shortcutrc [new file with mode: 0644]
newsboat/config [new file with mode: 0644]
newsboat/urls [new file with mode: 0644]
shell/aliasrc [new file with mode: 0644]
shell/bm-dirs [new file with mode: 0644]
shell/bm-files [new file with mode: 0644]
shell/inputrc [new file with mode: 0644]
shell/profile [new file with mode: 0644]
shell/shortcutenvrc [new file with mode: 0644]
shell/shortcutrc [new file with mode: 0644]
shell/zshnameddirrc [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..fb378c0
--- /dev/null
@@ -0,0 +1,5 @@
+*
+!.gitignore
+!lf/*
+!newsboat/*
+!shell/*
diff --git a/lf/icons b/lf/icons
new file mode 100644 (file)
index 0000000..e3bea78
--- /dev/null
+++ b/lf/icons
@@ -0,0 +1,82 @@
+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   📆
diff --git a/lf/lfrc b/lf/lfrc
new file mode 100644 (file)
index 0000000..5598a30
--- /dev/null
+++ b/lf/lfrc
@@ -0,0 +1,193 @@
+# 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"
diff --git a/lf/scope b/lf/scope
new file mode 100755 (executable)
index 0000000..3cd316b
--- /dev/null
+++ b/lf/scope
@@ -0,0 +1,45 @@
+#!/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
diff --git a/lf/shortcutrc b/lf/shortcutrc
new file mode 100644 (file)
index 0000000..1715434
--- /dev/null
@@ -0,0 +1,29 @@
+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" 
diff --git a/newsboat/config b/newsboat/config
new file mode 100644 (file)
index 0000000..a27ab0a
--- /dev/null
@@ -0,0 +1,54 @@
+#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
diff --git a/newsboat/urls b/newsboat/urls
new file mode 100644 (file)
index 0000000..f0d04af
--- /dev/null
@@ -0,0 +1,28 @@
+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"
diff --git a/shell/aliasrc b/shell/aliasrc
new file mode 100644 (file)
index 0000000..536903e
--- /dev/null
@@ -0,0 +1,48 @@
+#!/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" \
diff --git a/shell/bm-dirs b/shell/bm-dirs
new file mode 100644 (file)
index 0000000..9d212ec
--- /dev/null
@@ -0,0 +1,14 @@
+# 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}
diff --git a/shell/bm-files b/shell/bm-files
new file mode 100644 (file)
index 0000000..2e8864b
--- /dev/null
@@ -0,0 +1,23 @@
+# 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
diff --git a/shell/inputrc b/shell/inputrc
new file mode 100644 (file)
index 0000000..f9b94dd
--- /dev/null
@@ -0,0 +1,19 @@
+$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
diff --git a/shell/profile b/shell/profile
new file mode 100644 (file)
index 0000000..c20ff82
--- /dev/null
@@ -0,0 +1,77 @@
+#!/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
diff --git a/shell/shortcutenvrc b/shell/shortcutenvrc
new file mode 100644 (file)
index 0000000..07d003c
--- /dev/null
@@ -0,0 +1,30 @@
+# 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" 
diff --git a/shell/shortcutrc b/shell/shortcutrc
new file mode 100644 (file)
index 0000000..a2cb240
--- /dev/null
@@ -0,0 +1,30 @@
+# 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" \
diff --git a/shell/zshnameddirrc b/shell/zshnameddirrc
new file mode 100644 (file)
index 0000000..84b38fc
--- /dev/null
@@ -0,0 +1,29 @@
+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