From d22ed1103819552345be5bade9c651dff3171f4b Mon Sep 17 00:00:00 2001 From: Tucker Johnson Date: Thu, 27 Feb 2025 10:48:53 -0500 Subject: [PATCH] init --- .gitignore | 5 ++ lf/icons | 82 +++++++++++++++++++ lf/lfrc | 193 ++++++++++++++++++++++++++++++++++++++++++++ lf/scope | 45 +++++++++++ lf/shortcutrc | 29 +++++++ newsboat/config | 54 +++++++++++++ newsboat/urls | 28 +++++++ shell/aliasrc | 48 +++++++++++ shell/bm-dirs | 14 ++++ shell/bm-files | 23 ++++++ shell/inputrc | 19 +++++ shell/profile | 77 ++++++++++++++++++ shell/shortcutenvrc | 30 +++++++ shell/shortcutrc | 30 +++++++ shell/zshnameddirrc | 29 +++++++ 15 files changed, 706 insertions(+) create mode 100644 .gitignore create mode 100644 lf/icons create mode 100644 lf/lfrc create mode 100755 lf/scope create mode 100644 lf/shortcutrc create mode 100644 newsboat/config create mode 100644 newsboat/urls create mode 100644 shell/aliasrc create mode 100644 shell/bm-dirs create mode 100644 shell/bm-files create mode 100644 shell/inputrc create mode 100644 shell/profile create mode 100644 shell/shortcutenvrc create mode 100644 shell/shortcutrc create mode 100644 shell/zshnameddirrc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fb378c0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +* +!.gitignore +!lf/* +!newsboat/* +!shell/* diff --git a/lf/icons b/lf/icons new file mode 100644 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 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 $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 push :mkdir"" +map reload +map set hidden! +map 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 # 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 down +map up +map V push :!nvim + +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 $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 unselect + + + +# Source Bookmarks +source "~/.config/lf/shortcutrc" diff --git a/lf/scope b/lf/scope new file mode 100755 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 index 0000000..1715434 --- /dev/null +++ b/lf/shortcutrc @@ -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 index 0000000..a27ab0a --- /dev/null +++ b/newsboat/config @@ -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 index 0000000..f0d04af --- /dev/null +++ b/newsboat/urls @@ -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 index 0000000..536903e --- /dev/null +++ b/shell/aliasrc @@ -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 index 0000000..9d212ec --- /dev/null +++ b/shell/bm-dirs @@ -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 index 0000000..2e8864b --- /dev/null +++ b/shell/bm-files @@ -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 index 0000000..f9b94dd --- /dev/null +++ b/shell/inputrc @@ -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 index 0000000..c20ff82 --- /dev/null +++ b/shell/profile @@ -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' '')" +export LESS_TERMCAP_md="$(printf '%b' '')" +export LESS_TERMCAP_me="$(printf '%b' '')" +export LESS_TERMCAP_so="$(printf '%b' '')" +export LESS_TERMCAP_se="$(printf '%b' '')" +export LESS_TERMCAP_us="$(printf '%b' '')" +export LESS_TERMCAP_ue="$(printf '%b' '')" +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 index 0000000..07d003c --- /dev/null +++ b/shell/shortcutenvrc @@ -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 index 0000000..a2cb240 --- /dev/null +++ b/shell/shortcutrc @@ -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 index 0000000..84b38fc --- /dev/null +++ b/shell/zshnameddirrc @@ -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 -- 2.39.5