From 30e94a06dbc090307bd3df4c9257ba4f962ee881 Mon Sep 17 00:00:00 2001
From: Victor Lalle <29478339+LalleSX@users.noreply.github.com>
Date: Sun, 4 Jun 2023 15:00:13 +0200
Subject: [PATCH] configs
---
.gitignore | 1 +
dunst/dunstrc | 27 +
firefox/larbs.js | 47 +
fontconfig/fonts.conf | 40 +
gtk-2.0/gtkrc-2.0 | 19 +
gtk-3.0/bookmarks | 2 +
gtk-3.0/settings.ini | 16 +
lf/cleaner | 4 +
lf/icons | 77 +
lf/lfrc | 153 ++
lf/scope | 52 +
lf/shortcutrc | 29 +
mimeapps.list | 25 +
mpd/mpd.conf | 21 +
mpv/input.conf | 5 +
mpv/mpv.conf | 47 +
mpv/script_modules/mpvSockets/LICENSE | 21 +
mpv/script_modules/mpvSockets/README.md | 76 +
mpv/script_modules/mpvSockets/mpvSockets.lua | 36 +
mpv/scripts/modules.lua | 3 +
ncmpcpp/bindings | 479 +++++
ncmpcpp/config | 33 +
newsboat/config | 55 +
newsboat/urls | 10 +
pinentry/preexec | 5 +
pulse/cookie | Bin 0 -> 256 bytes
pulse/daemon.conf | 4 +
shell/aliasrc | 63 +
shell/bm-dirs | 14 +
shell/bm-files | 23 +
shell/inputrc | 19 +
shell/profile | 82 +
shell/shortcutrc | 30 +
shell/zshnameddirrc | 29 +
sxiv/exec/key-handler | 33 +
user-dirs.dirs | 8 +
wal/postrun | 32 +
wal/templates/dunstrc | 27 +
wal/templates/zathurarc | 36 +
wget/wgetrc | 1 +
x11/xinitrc | 17 +
x11/xprofile | 18 +
x11/xresources | 156 ++
zathura/zathurarc | 15 +
zsh/.gitignore | 1 +
zsh/.zcompdump | 1795 ++++++++++++++++++
zsh/.zshrc | 89 +
zsh/copyfile.zsh | 20 +
zsh/nvm/README.md | 60 +
zsh/nvm/_nvm | 34 +
zsh/nvm/nvm.plugin.zsh | 105 +
zsh/ohmyzsh | 1 +
52 files changed, 3995 insertions(+)
create mode 100644 .gitignore
create mode 100644 dunst/dunstrc
create mode 100644 firefox/larbs.js
create mode 100755 fontconfig/fonts.conf
create mode 100644 gtk-2.0/gtkrc-2.0
create mode 100644 gtk-3.0/bookmarks
create mode 100644 gtk-3.0/settings.ini
create mode 100755 lf/cleaner
create mode 100644 lf/icons
create mode 100644 lf/lfrc
create mode 100755 lf/scope
create mode 100644 lf/shortcutrc
create mode 100644 mimeapps.list
create mode 100644 mpd/mpd.conf
create mode 100644 mpv/input.conf
create mode 100644 mpv/mpv.conf
create mode 100644 mpv/script_modules/mpvSockets/LICENSE
create mode 100644 mpv/script_modules/mpvSockets/README.md
create mode 100644 mpv/script_modules/mpvSockets/mpvSockets.lua
create mode 100644 mpv/scripts/modules.lua
create mode 100644 ncmpcpp/bindings
create mode 100644 ncmpcpp/config
create mode 100644 newsboat/config
create mode 100644 newsboat/urls
create mode 100755 pinentry/preexec
create mode 100644 pulse/cookie
create mode 100644 pulse/daemon.conf
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/shortcutrc
create mode 100644 shell/zshnameddirrc
create mode 100755 sxiv/exec/key-handler
create mode 100644 user-dirs.dirs
create mode 100755 wal/postrun
create mode 100644 wal/templates/dunstrc
create mode 100644 wal/templates/zathurarc
create mode 100644 wget/wgetrc
create mode 100755 x11/xinitrc
create mode 100755 x11/xprofile
create mode 100644 x11/xresources
create mode 100644 zathura/zathurarc
create mode 100644 zsh/.gitignore
create mode 100644 zsh/.zcompdump
create mode 100644 zsh/.zshrc
create mode 100644 zsh/copyfile.zsh
create mode 100644 zsh/nvm/README.md
create mode 100644 zsh/nvm/_nvm
create mode 100644 zsh/nvm/nvm.plugin.zsh
create mode 160000 zsh/ohmyzsh
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..00731f7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+chromium/Variations
diff --git a/dunst/dunstrc b/dunst/dunstrc
new file mode 100644
index 0000000..d03af62
--- /dev/null
+++ b/dunst/dunstrc
@@ -0,0 +1,27 @@
+[global]
+ monitor = 0
+ follow = keyboard
+ width = 370
+ height = 350
+ offset = 0x19
+ padding = 2
+ horizontal_padding = 2
+ transparency = 25
+ font = Monospace 12
+ format = "%s\n%b"
+
+[urgency_low]
+ background = "#1d2021"
+ foreground = "#928374"
+ timeout = 3
+
+[urgency_normal]
+ foreground = "#ebdbb2"
+ background = "#458588"
+ timeout = 5
+
+[urgency_critical]
+ background = "#1cc24d"
+ foreground = "#ebdbb2"
+ frame_color = "#fabd2f"
+ timeout = 10
diff --git a/firefox/larbs.js b/firefox/larbs.js
new file mode 100644
index 0000000..8328357
--- /dev/null
+++ b/firefox/larbs.js
@@ -0,0 +1,47 @@
+// These are changes made on top of the Arkenfox JS file to tweak it as
+// desired. Any of these settings can be overridden by the user.
+
+// Disable the Twitter/R*ddit/Faceberg ads in the URL bar:
+user_pref("browser.urlbar.quicksuggest.enabled", false);
+user_pref("browser.urlbar.suggest.topsites", false); // [FF78+]
+
+// Do not suggest web history in the URL bar:
+user_pref("browser.urlbar.suggest.history", false);
+
+// Do not prefil forms:
+user_pref("signon.prefillForms", false);
+
+// Do not autocomplete in the URL bar:
+user_pref("browser.urlbar.autoFill", false);
+
+// Enable the addition of search keywords:
+user_pref("keyword.enabled", true);
+
+// Allow access to http (i.e. not https) sites:
+user_pref("dom.security.https_only_mode", false);
+
+// Keep cookies until expiration or user deletion:
+user_pref("network.cookie.lifetimePolicy", 0);
+
+user_pref("dom.webnotifications.serviceworker.enabled", false);
+
+// Disable push notifications:
+user_pref("dom.push.enabled", false);
+
+// Disable the pocket antifeature:
+user_pref("extensions.pocket.enabled", false);
+
+// Don't autodelete cookies on shutdown:
+user_pref("privacy.clearOnShutdown.cookies", false);
+
+// Enable custom userChrome.js:
+user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
+
+// This could otherwise cause some issues on bank logins and other annoying sites:
+user_pref("network.http.referer.XOriginPolicy", 0);
+
+// Disable Firefox sync and its menu entries
+user_pref("identity.fxaccounts.enabled", false);
+
+// Fix the issue where right mouse button instantly clicks
+user_pref("ui.context_menus.after_mouseup", true);
diff --git a/fontconfig/fonts.conf b/fontconfig/fonts.conf
new file mode 100755
index 0000000..d7efc38
--- /dev/null
+++ b/fontconfig/fonts.conf
@@ -0,0 +1,40 @@
+
+
+
+
+ serif
+
+ Linux Libertine
+ Joy Pixels
+ Noto Color Emoji
+ FontAwesome
+
+
+
+ sans-serif
+
+ Linux Biolinum
+ Joy Pixels
+ Noto Color Emoji
+ FontAwesome
+
+
+
+ sans
+
+ Linux Biolinum
+ Joy Pixels
+ Noto Color Emoji
+ FontAwesome
+
+
+
+ monospace
+
+ Noto Sans Mono
+ Liberation Mono
+ FontAwesome
+ Braille
+
+
+
diff --git a/gtk-2.0/gtkrc-2.0 b/gtk-2.0/gtkrc-2.0
new file mode 100644
index 0000000..da4d02e
--- /dev/null
+++ b/gtk-2.0/gtkrc-2.0
@@ -0,0 +1,19 @@
+# DO NOT EDIT! This file will be overwritten by LXAppearance.
+# Any customization should be done in ~/.gtkrc-2.0.mine instead.
+
+include "~/.gtkrc-2.0.mine"
+gtk-theme-name="Arc-Gruvbox"
+gtk-icon-theme-name="Adwaita"
+gtk-font-name="Sans 10"
+gtk-cursor-theme-name="Adwaita"
+gtk-cursor-theme-size=0
+gtk-toolbar-style=GTK_TOOLBAR_TEXT
+gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
+gtk-button-images=0
+gtk-menu-images=1
+gtk-enable-event-sounds=1
+gtk-enable-input-feedback-sounds=1
+gtk-xft-antialias=1
+gtk-xft-hinting=1
+gtk-xft-hintstyle="hintfull"
+gtk-xft-rgba="rgb"
diff --git a/gtk-3.0/bookmarks b/gtk-3.0/bookmarks
new file mode 100644
index 0000000..38af25e
--- /dev/null
+++ b/gtk-3.0/bookmarks
@@ -0,0 +1,2 @@
+file:///home/victor/pix/memes
+file:///home/victor/gits/stable-diffusion-webui/models
diff --git a/gtk-3.0/settings.ini b/gtk-3.0/settings.ini
new file mode 100644
index 0000000..371c307
--- /dev/null
+++ b/gtk-3.0/settings.ini
@@ -0,0 +1,16 @@
+[Settings]
+gtk-theme-name=Arc-Gruvbox
+gtk-icon-theme-name=Adwaita
+gtk-font-name=Sans 10
+gtk-cursor-theme-size=0
+gtk-toolbar-style=GTK_TOOLBAR_TEXT
+gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
+gtk-button-images=0
+gtk-menu-images=1
+gtk-enable-event-sounds=1
+gtk-enable-input-feedback-sounds=1
+gtk-xft-antialias=1
+gtk-xft-hinting=1
+gtk-xft-hintstyle=hintfull
+gtk-xft-rgba=rgb
+gtk-cursor-theme-name=Adwaita
diff --git a/lf/cleaner b/lf/cleaner
new file mode 100755
index 0000000..a184d84
--- /dev/null
+++ b/lf/cleaner
@@ -0,0 +1,4 @@
+#!/bin/sh
+if [ -n "$FIFO_UEBERZUG" ]; then
+ printf '{"action": "remove", "identifier": "PREVIEW"}\n' > "$FIFO_UEBERZUG"
+fi
diff --git a/lf/icons b/lf/icons
new file mode 100644
index 0000000..aad068c
--- /dev/null
+++ b/lf/icons
@@ -0,0 +1,77 @@
+di 📁
+fi 📃
+tw 🤝
+ow 📂
+ln ⛓
+or ❌
+ex 🎯
+*.txt ✍
+*.mom ✍
+*.me ✍
+*.ms ✍
+*.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 🎼
+*.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 🎓
+*.ged 👪
+*.part 💔
+*.torrent 🔽
+*.jar ♨
+*.java ♨
diff --git a/lf/lfrc b/lf/lfrc
new file mode 100644
index 0000000..25fb3d1
--- /dev/null
+++ b/lf/lfrc
@@ -0,0 +1,153 @@
+# 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/octet-stream|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 sxiv -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/octet-stream|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 ;;
+ *) for f in $fx; do setsid -f $OPENER $f >/dev/null 2>&1; done;;
+ esac
+}}
+
+cmd mkdir $mkdir -p "$(echo $* | tr ' ' '\ ')"
+
+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" ] && aunpack $fx
+}}
+
+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 ${{
+ clear; tput cup $(($(tput lines)/3)); tput bold
+ set -f
+ clear; echo "Move to where?"
+ dest="$(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|')" &&
+ for x in $fx; do
+ eval mv -iv \"$x\" \"$dest\"
+ done &&
+ notify-send "🚚 File(s) moved." "File(s) moved to $dest."
+}}
+
+cmd copyto ${{
+ clear; tput cup $(($(tput lines)/3)); tput bold
+ set -f
+ clear; echo "Copy to where?"
+ dest="$(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|')" &&
+ for x in $fx; do
+ eval cp -ivr \"$x\" \"$dest\"
+ done &&
+ notify-send "📋 File(s) copied." "File(s) copies to $dest."
+}}
+
+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 gh
+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 Y $printf "%s" "$fx" | xclip -selection clipboard
+
+# Source Bookmarks
+source "~/.config/lf/shortcutrc"
diff --git a/lf/scope b/lf/scope
new file mode 100755
index 0000000..87b560a
--- /dev/null
+++ b/lf/scope
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+# File preview handler for lf.
+
+set -C -f
+IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}"
+
+image() {
+ if [ -f "$1" ] && [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1; then
+ printf '{"action": "add", "identifier": "PREVIEW", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$4" "$5" "$(($2-1))" "$(($3-1))" "$1" > "$FIFO_UEBERZUG"
+ else
+ mediainfo "$6"
+ fi
+}
+
+ifub() {
+ [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1
+}
+
+# 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" ] && convert "$1" "$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) bat --terminal-width "$(($4-2))" -f "$1" ;;
+ audio/* | application/octet-stream) mediainfo "$1" || exit 1 ;;
+ video/* )
+ 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" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0
+ image "$CACHE" "$2" "$3" "$4" "$5" "$1"
+ ;;
+ */pdf)
+ 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" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE"
+ image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$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..520b439
--- /dev/null
+++ b/lf/shortcutrc
@@ -0,0 +1,29 @@
+map Ccac cd "/home/victor/.cache"
+map Ccf cd "/home/victor/.config"
+map CD cd "/home/victor/down"
+map Cd cd "/home/victor/dox"
+map Cdt cd "/home/victor/.local/share"
+map Crr cd "/home/victor/.local/src"
+map Ch cd "/home/victor"
+map Cm cd "/home/victor/music"
+map Cmn cd "/mnt"
+map Cpp cd "/home/victor/pix"
+map Csc cd "/home/victor/.local/bin"
+map Csrc cd "/home/victor/.local/src"
+map Cvv cd "/home/victor/vids"
+map Ebf $$EDITOR "/home/victor/.config/shell/bm-files"
+map Ebd $$EDITOR "/home/victor/.config/shell/bm-dirs"
+map Ecfx $$EDITOR "/home/victor/.config/x11/xresources"
+map Ecfb $$EDITOR "~/.local/src/dwmblocks/config.h"
+map Ecfv $$EDITOR "/home/victor/.config/nvim/init.lua"
+map Ecfz $$EDITOR "/home/victor/.config/zsh/.zshrc"
+map Ecfa $$EDITOR "/home/victor/.config/shell/aliasrc"
+map Ecfp $$EDITOR "/home/victor/.config/shell/profile"
+map Ecfm $$EDITOR "/home/victor/.config/mutt/muttrc"
+map Ecfn $$EDITOR "/home/victor/.config/newsboat/config"
+map Ecfu $$EDITOR "/home/victor/.config/newsboat/urls"
+map Ecfmb $$EDITOR "/home/victor/.config/ncmpcpp/bindings"
+map Ecfmc $$EDITOR "/home/victor/.config/ncmpcpp/config"
+map Ecfl $$EDITOR "/home/victor/.config/lf/lfrc"
+map EcfL $$EDITOR "/home/victor/.config/lf/scope"
+map EcfX $$EDITOR "/home/victor/.config/sxiv/exec/key-handler"
diff --git a/mimeapps.list b/mimeapps.list
new file mode 100644
index 0000000..735473f
--- /dev/null
+++ b/mimeapps.list
@@ -0,0 +1,25 @@
+[Default Applications]
+
+# xdg-open will use these settings to determine how to open filetypes.
+# These .desktop entries can also be seen and changed in ~/.local/share/applications/
+
+text/x-shellscript=text.desktop;
+x-scheme-handler/magnet=torrent.desktop;
+application/x-bittorrent=torrent.desktop;
+x-scheme-handler/mailto=thunderbird.desktop;
+text/plain=text.desktop;
+application/postscript=pdf.desktop;
+application/pdf=pdf.desktop;
+image/png=img.desktop;
+image/jpeg=img.desktop;
+image/gif=img.desktop;
+application/rss+xml=rss.desktop
+video/x-matroska=video.desktop
+video/mp4=video.desktop
+x-scheme-handler/lbry=lbry.desktop
+inode/directory=file.desktop
+text/html=librewolf.desktop
+x-scheme-handler/http=librewolf.desktop
+x-scheme-handler/https=librewolf.desktop
+x-scheme-handler/about=librewolf.desktop
+x-scheme-handler/unknown=librewolf.desktop
diff --git a/mpd/mpd.conf b/mpd/mpd.conf
new file mode 100644
index 0000000..bf329d6
--- /dev/null
+++ b/mpd/mpd.conf
@@ -0,0 +1,21 @@
+music_directory "~/Music"
+playlist_directory "~/.config/mpd/playlists"
+
+auto_update "yes"
+bind_to_address "127.0.0.1"
+restore_paused "yes"
+max_output_buffer_size "16384"
+
+audio_output {
+ type "pulse"
+ name "pulse"
+ #type "alsa"
+ #name "ALSA"
+}
+
+audio_output {
+ type "fifo"
+ name "Visualizer feed"
+ path "/tmp/mpd.fifo"
+ format "44100:16:2"
+}
diff --git a/mpv/input.conf b/mpv/input.conf
new file mode 100644
index 0000000..d614b15
--- /dev/null
+++ b/mpv/input.conf
@@ -0,0 +1,5 @@
+l seek 5
+h seek -5
+j seek -60
+k seek 60
+S cycle sub
diff --git a/mpv/mpv.conf b/mpv/mpv.conf
new file mode 100644
index 0000000..d1865b5
--- /dev/null
+++ b/mpv/mpv.conf
@@ -0,0 +1,47 @@
+
+# Enable caching
+cache=yes
+cache-default=512
+cache-file=./cache
+
+# Save timestamps to a file
+osd-fractions=yes
+osd-status-msg="[$timestamp] ${filename/no-ext} [${duration} / ${playlist-pos-1}/${playlist-count}]"
+
+# Recommended video output settings
+vo=gpu
+gpu-context=auto
+hwdec=auto
+
+# Audio settings
+audio-channels=auto
+
+# Subtitle settings
+sub-auto=fuzzy
+
+# Volume normalization
+volume-max=100
+volume-normalization=yes
+
+# Mouse input settings
+input-cursor=yes
+mouse-movements=yes
+mouse-speed=1.0
+
+# Default playback speed
+speed=1.0
+
+# Skip forward/backward in seconds
+osd-duration=1000
+input-sec-up="seek +10"
+input-sec-down="seek -10"
+
+# Display video info
+msg-level=all=status
+
+
+[extension.webm]
+loop-playlist=yes
+loop-playlist-start=inf
+loop-file=inf
+
diff --git a/mpv/script_modules/mpvSockets/LICENSE b/mpv/script_modules/mpvSockets/LICENSE
new file mode 100644
index 0000000..c5551bb
--- /dev/null
+++ b/mpv/script_modules/mpvSockets/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019 Wis
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/mpv/script_modules/mpvSockets/README.md b/mpv/script_modules/mpvSockets/README.md
new file mode 100644
index 0000000..9d3e1fb
--- /dev/null
+++ b/mpv/script_modules/mpvSockets/README.md
@@ -0,0 +1,76 @@
+# mpvSockets
+create one sockets per mpv instance (with the instance's process **ID** (PID), (**unique**)), instead of one socket for the last started instance
+
+dangling sockets for crashed or killed instances is an issue,
+not sure if this script should handle/remove them or the clients/users, or both.
+
+# Installation
+Download the single script file to your mpv-scripts-directory
+## Linux / unixes:
+``` bash
+curl "https://raw.githubusercontent.com/wis/mpvSockets/master/mpvSockets.lua" --create-dirs -o "$Your_Mpv_Scripts_Directory_Location/mpvSockets.lua"
+```
+if you're on Linux, most likely the location is `~/.config/mpv/scripts`, so run this before:
+``` bash
+$Your_Mpv_Scripts_Directory_Location=$HOME/config/mpv/scripts
+```
+## Windows (untested)
+powershell:
+``` powershell
+Invoke-WebRequest -OutFile "$env:LOCALAPPDATA\mpv\scripts\mpvSockets.lua" "https://raw.githubusercontent.com/wis/mpvSockets/master/mpvSockets.lua"
+```
+
+# Usage, with Mpv's [JSON IPC](https://github.com/mpv-player/mpv/blob/master/DOCS/man/ipc.rst)
+## Linux / unixes (unix sockets):
+a script that pauses all running mpv instances:
+bash:
+``` bash
+#!/bin/bash
+for i in $(ls /tmp/mpvSockets/*); do
+ echo '{ "command": ["set_property", "pause", true] }' | socat - "$i";
+done
+# Socat is a command line based utility that establishes two bidirec-tional byte streams and transfers data between them.
+# available on Linux and FreeBSD, propably most unixes. you can also use
+```
+
+## Windows (named pipes):
+quote from https://mpv.io/manual/stable/#command-prompt-example
+> Unfortunately, it's not as easy to test the IPC protocol on Windows, since Windows ports of socat (in Cygwin and MSYS2) don't understand named pipes. In the absence of a simple tool to send and receive from bidirectional pipes, the echo command can be used to send commands, but not receive replies from the command prompt.
+>
+> Assuming mpv was started with:
+>
+> `mpv file.mkv --input-ipc-server=\\.\pipe\mpvsocket`
+> You can send commands from a command prompt:
+>
+> `echo show-text ${playback-time} >\\.\pipe\mpvsocket`
+To be able to simultaneously read and write from the IPC pipe, like on Linux, it's necessary to write an external program that uses overlapped file I/O (or some wrapper like .NET's NamedPipeClientStream.)
+
+powershell client writer and reader (untested):
+``` powershell
+# socat.ps1
+# usage: socat.ps1
+$sockedName = args[0]
+$message = args[1]
+
+$npipeClient = new-object System.IO.Pipes.NamedPipeClientStream('.', $socketName, [System.IO.Pipes.PipeDirection]::InOut, [System.IO.Pipes.PipeOptions]::None, [System.Security.Principal.TokenImpersonationLevel]::Impersonation)
+
+$pipeReader = $pipeWriter = $null
+try {
+ $npipeClient.Connect()
+ $pipeReader = new-object System.IO.StreamReader($npipeClient)
+ $pipeWriter = new-object System.IO.StreamWriter($npipeClient)
+ $pipeWriter.AutoFlush = $true
+
+ $pipeWriter.WriteLine($message)
+
+ while (($data = $pipeReader.ReadLine()) -ne $null) {
+ $data
+ }
+}
+catch {
+ "An error occurred that could not be resolved."
+}
+finally {
+ $npipeClient.Dispose()
+}
+```
\ No newline at end of file
diff --git a/mpv/script_modules/mpvSockets/mpvSockets.lua b/mpv/script_modules/mpvSockets/mpvSockets.lua
new file mode 100644
index 0000000..df8d078
--- /dev/null
+++ b/mpv/script_modules/mpvSockets/mpvSockets.lua
@@ -0,0 +1,36 @@
+-- mpvSockets, one socket per instance, removes socket on exit
+
+local utils = require 'mp.utils'
+
+local function get_temp_path()
+ local directory_seperator = package.config:match("([^\n]*)\n?")
+ local example_temp_file_path = os.tmpname()
+
+ -- remove generated temp file
+ pcall(os.remove, example_temp_file_path)
+
+ local seperator_idx = example_temp_file_path:reverse():find(directory_seperator)
+ local temp_path_length = #example_temp_file_path - seperator_idx
+
+ return example_temp_file_path:sub(1, temp_path_length)
+end
+
+tempDir = get_temp_path()
+
+function join_paths(...)
+ local arg={...}
+ path = ""
+ for i,v in ipairs(arg) do
+ path = utils.join_path(path, tostring(v))
+ end
+ return path;
+end
+
+ppid = utils.getpid()
+os.execute("mkdir " .. join_paths(tempDir, "mpvSockets") .. " 2>/dev/null")
+mp.set_property("options/input-ipc-server", join_paths(tempDir, "mpvSockets", ppid))
+
+function shutdown_handler()
+ os.remove(join_paths(tempDir, "mpvSockets", ppid))
+end
+mp.register_event("shutdown", shutdown_handler)
diff --git a/mpv/scripts/modules.lua b/mpv/scripts/modules.lua
new file mode 100644
index 0000000..703f372
--- /dev/null
+++ b/mpv/scripts/modules.lua
@@ -0,0 +1,3 @@
+local mpv_config_dir_path = require("mp").command_native({"expand-path", "~~/"})
+function load(relative_path) dofile(mpv_config_dir_path .. "/script_modules/" .. relative_path) end
+load("mpvSockets/mpvSockets.lua")
diff --git a/ncmpcpp/bindings b/ncmpcpp/bindings
new file mode 100644
index 0000000..645e41f
--- /dev/null
+++ b/ncmpcpp/bindings
@@ -0,0 +1,479 @@
+##############################################################
+## This is the example bindings file. Copy it to ##
+## ~/.ncmpcpp/bindings or $XDG_CONFIG_HOME/ncmpcpp/bindings ##
+## and set up your preferences ##
+##############################################################
+#
+#def_key "mouse"
+# mouse_event
+#
+#def_key "up"
+# scroll_up
+#
+#def_key "shift-up"
+# select_item
+# scroll_up
+#
+#def_key "down"
+# scroll_down
+#
+#def_key "shift-down"
+# select_item
+# scroll_down
+#
+#def_key "["
+# scroll_up_album
+#
+#def_key "]"
+# scroll_down_album
+#
+#def_key "{"
+# scroll_up_artist
+#
+#def_key "}"
+# scroll_down_artist
+#
+#def_key "page_up"
+# page_up
+#
+#def_key "page_down"
+# page_down
+#
+#def_key "home"
+# move_home
+#
+#def_key "end"
+# move_end
+#
+#def_key "insert"
+# select_item
+#
+#def_key "enter"
+# enter_directory
+#
+#def_key "enter"
+# toggle_output
+#
+#def_key "enter"
+# run_action
+#
+#def_key "enter"
+# play_item
+#
+#def_key "space"
+# add_item_to_playlist
+#
+#def_key "space"
+# toggle_lyrics_update_on_song_change
+#
+#def_key "space"
+# toggle_visualization_type
+#
+#def_key "delete"
+# delete_playlist_items
+#
+#def_key "delete"
+# delete_browser_items
+#
+#def_key "delete"
+# delete_stored_playlist
+#
+#def_key "right"
+# next_column
+#
+#def_key "right"
+# slave_screen
+#
+#def_key "right"
+# volume_up
+#
+#def_key "+"
+# volume_up
+#
+#def_key "left"
+# previous_column
+#
+#def_key "left"
+# master_screen
+#
+#def_key "left"
+# volume_down
+#
+#def_key "-"
+# volume_down
+#
+#def_key ":"
+# execute_command
+#
+#def_key "tab"
+# next_screen
+#
+#def_key "shift-tab"
+# previous_screen
+#
+#def_key "f1"
+# show_help
+#
+#def_key "1"
+# show_playlist
+#
+#def_key "2"
+# show_browser
+#
+#def_key "2"
+# change_browse_mode
+#
+#def_key "3"
+# show_search_engine
+#
+#def_key "3"
+# reset_search_engine
+#
+#def_key "4"
+# show_media_library
+#
+#def_key "4"
+# toggle_media_library_columns_mode
+#
+#def_key "5"
+# show_playlist_editor
+#
+#def_key "6"
+# show_tag_editor
+#
+#def_key "7"
+# show_outputs
+#
+#def_key "8"
+# show_visualizer
+#
+#def_key "="
+# show_clock
+#
+#def_key "@"
+# show_server_info
+#
+#def_key "s"
+# stop
+#
+#def_key "p"
+# pause
+#
+#def_key ">"
+# next
+#
+#def_key "<"
+# previous
+#
+#def_key "ctrl-h"
+# jump_to_parent_directory
+#
+#def_key "ctrl-h"
+# replay_song
+#
+#def_key "backspace"
+# jump_to_parent_directory
+#
+#def_key "backspace"
+# replay_song
+#
+#def_key "f"
+# seek_forward
+#
+#def_key "b"
+# seek_backward
+#
+#def_key "r"
+# toggle_repeat
+#
+#def_key "z"
+# toggle_random
+#
+#def_key "y"
+# save_tag_changes
+#
+#def_key "y"
+# start_searching
+#
+#def_key "y"
+# toggle_single
+#
+#def_key "R"
+# toggle_consume
+#
+#def_key "Y"
+# toggle_replay_gain_mode
+#
+#def_key "T"
+# toggle_add_mode
+#
+#def_key "|"
+# toggle_mouse
+#
+#def_key "#"
+# toggle_bitrate_visibility
+#
+#def_key "Z"
+# shuffle
+#
+#def_key "x"
+# toggle_crossfade
+#
+#def_key "X"
+# set_crossfade
+#
+#def_key "u"
+# update_database
+#
+#def_key "ctrl-s"
+# sort_playlist
+#
+#def_key "ctrl-s"
+# toggle_browser_sort_mode
+#
+#def_key "ctrl-s"
+# toggle_media_library_sort_mode
+#
+#def_key "ctrl-r"
+# reverse_playlist
+#
+#def_key "ctrl-f"
+# apply_filter
+#
+#def_key "ctrl-_"
+# select_found_items
+#
+#def_key "/"
+# find
+#
+#def_key "/"
+# find_item_forward
+#
+#def_key "?"
+# find
+#
+#def_key "?"
+# find_item_backward
+#
+#def_key "."
+# next_found_item
+#
+#def_key ","
+# previous_found_item
+#
+#def_key "w"
+# toggle_find_mode
+#
+#def_key "e"
+# edit_song
+#
+#def_key "e"
+# edit_library_tag
+#
+#def_key "e"
+# edit_library_album
+#
+#def_key "e"
+# edit_directory_name
+#
+#def_key "e"
+# edit_playlist_name
+#
+#def_key "e"
+# edit_lyrics
+#
+#def_key "i"
+# show_song_info
+#
+#def_key "I"
+# show_artist_info
+#
+#def_key "g"
+# jump_to_position_in_song
+#
+#def_key "l"
+# show_lyrics
+#
+#def_key "ctrl-v"
+# select_range
+#
+#def_key "v"
+# reverse_selection
+#
+#def_key "V"
+# remove_selection
+#
+#def_key "B"
+# select_album
+#
+#def_key "a"
+# add_selected_items
+#
+#def_key "c"
+# clear_playlist
+#
+#def_key "c"
+# clear_main_playlist
+#
+#def_key "C"
+# crop_playlist
+#
+#def_key "C"
+# crop_main_playlist
+#
+#def_key "m"
+# move_sort_order_up
+#
+#def_key "m"
+# move_selected_items_up
+#
+#def_key "n"
+# move_sort_order_down
+#
+#def_key "n"
+# move_selected_items_down
+#
+#def_key "M"
+# move_selected_items_to
+#
+#def_key "A"
+# add
+#
+#def_key "S"
+# save_playlist
+#
+#def_key "o"
+# jump_to_playing_song
+#
+#def_key "G"
+# jump_to_browser
+#
+#def_key "G"
+# jump_to_playlist_editor
+#
+#def_key "~"
+# jump_to_media_library
+#
+#def_key "E"
+# jump_to_tag_editor
+#
+#def_key "U"
+# toggle_playing_song_centering
+#
+#def_key "P"
+# toggle_display_mode
+#
+#def_key "\\"
+# toggle_interface
+#
+#def_key "!"
+# toggle_separators_between_albums
+#
+#def_key "L"
+# toggle_lyrics_fetcher
+#
+#def_key "F"
+# fetch_lyrics_in_background
+#
+#def_key "alt-l"
+# toggle_fetching_lyrics_in_background
+#
+#def_key "ctrl-l"
+# toggle_screen_lock
+#
+#def_key "`"
+# toggle_library_tag_type
+#
+#def_key "`"
+# refetch_lyrics
+#
+#def_key "`"
+# add_random_items
+#
+#def_key "ctrl-p"
+# set_selected_items_priority
+#
+#def_key "q"
+# quit
+#
+#
+#def_key "f"
+# find
+#def_key "f"
+# find_item_forward
+
+def_key "+"
+ show_clock
+def_key "="
+ volume_up
+
+def_key "j"
+ scroll_down
+def_key "k"
+ scroll_up
+
+def_key "ctrl-u"
+ page_up
+#push_characters "kkkkkkkkkkkkkkk"
+def_key "ctrl-d"
+ page_down
+#push_characters "jjjjjjjjjjjjjjj"
+def_key "u"
+ page_up
+#push_characters "kkkkkkkkkkkkkkk"
+def_key "d"
+ page_down
+#push_characters "jjjjjjjjjjjjjjj"
+def_key "h"
+ previous_column
+def_key "l"
+ next_column
+
+def_key "."
+ show_lyrics
+
+def_key "n"
+ next_found_item
+def_key "N"
+ previous_found_item
+
+# not used but bound
+def_key "J"
+ move_sort_order_down
+def_key "K"
+ move_sort_order_up
+def_key "h"
+ jump_to_parent_directory
+def_key "l"
+ enter_directory
+def_key "l"
+ run_action
+def_key "l"
+ play_item
+def_key "m"
+ show_media_library
+def_key "m"
+ toggle_media_library_columns_mode
+def_key "t"
+ show_tag_editor
+def_key "v"
+ show_visualizer
+def_key "G"
+ move_end
+def_key "g"
+ move_home
+#jump_to_position_in_song
+def_key "U"
+ update_database
+def_key "s"
+ reset_search_engine
+def_key "s"
+ show_search_engine
+def_key "f"
+ show_browser
+def_key "f"
+ change_browse_mode
+def_key "x"
+ delete_playlist_items
+def_key "P"
+ show_playlist
diff --git a/ncmpcpp/config b/ncmpcpp/config
new file mode 100644
index 0000000..3111aab
--- /dev/null
+++ b/ncmpcpp/config
@@ -0,0 +1,33 @@
+# vim: filetype=conf
+
+ncmpcpp_directory = "~/.config/ncmpcpp"
+lyrics_directory = "~/.local/share/lyrics"
+mpd_music_dir = "~/Music"
+message_delay_time = "1"
+visualizer_type = "spectrum"
+song_list_format = {$4%a - }{%t}|{$8%f$9}$R{$3(%l)$9}
+song_status_format = $b{{$8"%t"}} $3by {$4%a{ $3in $7%b{ (%y)}} $3}|{$8%f}
+song_library_format = {%n - }{%t}|{%f}
+alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b
+alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}
+current_item_prefix = $(cyan)$r$b
+current_item_suffix = $/r$(end)$/b
+current_item_inactive_column_prefix = $(magenta)$r
+current_item_inactive_column_suffix = $/r$(end)
+playlist_display_mode = columns
+browser_display_mode = columns
+progressbar_look = ->
+media_library_primary_tag = album_artist
+media_library_albums_split_by_date = no
+startup_screen = "media_library"
+display_volume_level = no
+ignore_leading_the = yes
+external_editor = nvim
+use_console_editor = yes
+empty_tag_color = magenta
+main_window_color = white
+progressbar_color = black:b
+progressbar_elapsed_color = blue:b
+statusbar_color = red
+statusbar_time_color = cyan:b
+execute_on_song_change="pkill -RTMIN+11 dwmblocks"
diff --git a/newsboat/config b/newsboat/config
new file mode 100644
index 0000000..d8dbecd
--- /dev/null
+++ b/newsboat/config
@@ -0,0 +1,55 @@
+#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 cyan default
+color listfocus black yellow standout bold
+color listnormal_unread blue default
+color listfocus_unread yellow default 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 --restrict-filenames" ; 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 "peertubetorrent %u 480" ; open-in-browser ; set browser linkhandler
+macro P set browser "peertubetorrent %u 1080" ; open-in-browser ; 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..497e494
--- /dev/null
+++ b/newsboat/urls
@@ -0,0 +1,10 @@
+https://lukesmith.xyz/rss.xml
+https://videos.lukesmith.xyz/feeds/videos.xml?videoChannelId=2 "~Luke Smith (Videos)"
+https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA "~Luke Smith (YouTube)"
+https://lindypress.net/rss
+https://notrelated.xyz/rss
+https://landchad.net/rss.xml
+https://based.cooking/index.xml
+https://artixlinux.org/feed.php "tech"
+https://www.archlinux.org/feeds/news/ "tech"
+https://github.com/LukeSmithxyz/voidrice/commits/master.atom "~LARBS dotfiles"
diff --git a/pinentry/preexec b/pinentry/preexec
new file mode 100755
index 0000000..93603c7
--- /dev/null
+++ b/pinentry/preexec
@@ -0,0 +1,5 @@
+#!/hint/sh
+
+# Define additional functionality for pinentry. For example
+test -e /usr/lib/libgcr-base-3.so.1 && exec /usr/bin/pinentry-gnome3 "$@"
+#test -e /usr/lib/libQt5Widgets.so.5 && exec /usr/bin/pinentry-qt "$@"
diff --git a/pulse/cookie b/pulse/cookie
new file mode 100644
index 0000000000000000000000000000000000000000..09ef7eef2339790b71829709a1f685d9c00de1ff
GIT binary patch
literal 256
zcmV+b0ssC$LgfJQY&iFx7u2L1ydSMCCVJUl%P>YnUFlUmfI=9%Qo>210J4pKX;~;3
z+i0jqncrCDf|CnuuW4zPUVkDj?xYzn#Ql63XCD)-iBja?gqg86)cE|F#(nu#2_&Kb*>8EKr}H3ysZa*$
z3TK+Pl%%TBKD<-mUT0Yy#j$m#bbTY$TM*3%2TC3>^>72RkxalpPY4B3gRU$}*8kiU
GdgV/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:-$HOME/.local/share}/larbs/ttymaps.kmap 2>/dev/null
diff --git a/shell/shortcutrc b/shell/shortcutrc
new file mode 100644
index 0000000..3243bff
--- /dev/null
+++ b/shell/shortcutrc
@@ -0,0 +1,30 @@
+# vim: filetype=sh
+alias cac="cd /home/victor/.cache && ls -A" \
+cf="cd /home/victor/.config && ls -A" \
+D="cd /home/victor/down && ls -A" \
+d="cd /home/victor/dox && ls -A" \
+dt="cd /home/victor/.local/share && ls -A" \
+rr="cd /home/victor/.local/src && ls -A" \
+h="cd /home/victor && ls -A" \
+m="cd /home/victor/music && ls -A" \
+mn="cd /mnt && ls -A" \
+pp="cd /home/victor/pix && ls -A" \
+sc="cd /home/victor/.local/bin && ls -A" \
+src="cd /home/victor/.local/src && ls -A" \
+vv="cd /home/victor/vids && ls -A" \
+bf="$EDITOR /home/victor/.config/shell/bm-files" \
+bd="$EDITOR /home/victor/.config/shell/bm-dirs" \
+cfx="$EDITOR /home/victor/.config/x11/xresources" \
+cfb="$EDITOR ~/.local/src/dwmblocks/config.h" \
+cfv="$EDITOR /home/victor/.config/nvim/init.lua" \
+cfz="$EDITOR /home/victor/.config/zsh/.zshrc" \
+cfa="$EDITOR /home/victor/.config/shell/aliasrc" \
+cfp="$EDITOR /home/victor/.config/shell/profile" \
+cfm="$EDITOR /home/victor/.config/mutt/muttrc" \
+cfn="$EDITOR /home/victor/.config/newsboat/config" \
+cfu="$EDITOR /home/victor/.config/newsboat/urls" \
+cfmb="$EDITOR /home/victor/.config/ncmpcpp/bindings" \
+cfmc="$EDITOR /home/victor/.config/ncmpcpp/config" \
+cfl="$EDITOR /home/victor/.config/lf/lfrc" \
+cfL="$EDITOR /home/victor/.config/lf/scope" \
+cfX="$EDITOR /home/victor/.config/sxiv/exec/key-handler" \
diff --git a/shell/zshnameddirrc b/shell/zshnameddirrc
new file mode 100644
index 0000000..07cb878
--- /dev/null
+++ b/shell/zshnameddirrc
@@ -0,0 +1,29 @@
+hash -d cac=/home/victor/.cache
+hash -d cf=/home/victor/.config
+hash -d D=/home/victor/down
+hash -d d=/home/victor/dox
+hash -d dt=/home/victor/.local/share
+hash -d rr=/home/victor/.local/src
+hash -d h=/home/victor
+hash -d m=/home/victor/music
+hash -d mn=/mnt
+hash -d pp=/home/victor/pix
+hash -d sc=/home/victor/.local/bin
+hash -d src=/home/victor/.local/src
+hash -d vv=/home/victor/vids
+hash -d bf=/home/victor/.config/shell/bm-files
+hash -d bd=/home/victor/.config/shell/bm-dirs
+hash -d cfx=/home/victor/.config/x11/xresources
+hash -d cfb=~/.local/src/dwmblocks/config.h
+hash -d cfv=/home/victor/.config/nvim/init.lua
+hash -d cfz=/home/victor/.config/zsh/.zshrc
+hash -d cfa=/home/victor/.config/shell/aliasrc
+hash -d cfp=/home/victor/.config/shell/profile
+hash -d cfm=/home/victor/.config/mutt/muttrc
+hash -d cfn=/home/victor/.config/newsboat/config
+hash -d cfu=/home/victor/.config/newsboat/urls
+hash -d cfmb=/home/victor/.config/ncmpcpp/bindings
+hash -d cfmc=/home/victor/.config/ncmpcpp/config
+hash -d cfl=/home/victor/.config/lf/lfrc
+hash -d cfL=/home/victor/.config/lf/scope
+hash -d cfX=/home/victor/.config/sxiv/exec/key-handler
diff --git a/sxiv/exec/key-handler b/sxiv/exec/key-handler
new file mode 100755
index 0000000..4c78f18
--- /dev/null
+++ b/sxiv/exec/key-handler
@@ -0,0 +1,33 @@
+#!/bin/sh
+while read -r file
+do
+ case "$1" in
+ "w") setbg "$file" & ;;
+ "c")
+ [ -z "$destdir" ] && destdir="$(sed "s/#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | awk '{print $2}' | dmenu -l 20 -i -p "Copy file(s) to where?" | sed "s|~|$HOME|g")"
+ [ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
+ cp "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file copied to $destdir." &
+ ;;
+ "m")
+ [ -z "$destdir" ] && destdir="$(sed "s/#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | awk '{print $2}' | dmenu -l 20 -i -p "Move file(s) to where?" | sed "s|~|$HOME|g")"
+ [ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
+ mv "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file moved to $destdir." &
+ ;;
+ "r")
+ convert -rotate 90 "$file" "$file" ;;
+ "R")
+ convert -rotate -90 "$file" "$file" ;;
+ "f")
+ convert -flop "$file" "$file" ;;
+ "y")
+ printf "%s" "$file" | tr -d '\n' | xclip -selection clipboard &&
+ notify-send "$file copied to clipboard" & ;;
+ "Y")
+ readlink -f "$file" | tr -d '\n' | xclip -selection clipboard &&
+ notify-send "$(readlink -f "$file") copied to clipboard" & ;;
+ "d")
+ [ "$(printf "No\\nYes" | dmenu -i -p "Really delete $file?")" = "Yes" ] && rm "$file" && notify-send "$file deleted." ;;
+ "g") ifinstalled gimp && setsid -f gimp "$file" ;;
+ "i") notify-send "File information" "$(mediainfo "$file" | sed "s/[ ]\+:/:/g;s/: /: /;s/$/<\/b>/" | grep "")" ;;
+ esac
+done
diff --git a/user-dirs.dirs b/user-dirs.dirs
new file mode 100644
index 0000000..0fbcc01
--- /dev/null
+++ b/user-dirs.dirs
@@ -0,0 +1,8 @@
+XDG_DESKTOP_DIR="$HOME/"
+XDG_DOWNLOAD_DIR="$HOME/down"
+XDG_TEMPLATES_DIR="$HOME/temp"
+XDG_PUBLICSHARE_DIR="$HOME/pub"
+XDG_DOCUMENTS_DIR="$HOME/dox"
+XDG_MUSIC_DIR="$HOME/music"
+XDG_PICTURES_DIR="$HOME/pix"
+XDG_VIDEOS_DIR="$HOME/vids"
diff --git a/wal/postrun b/wal/postrun
new file mode 100755
index 0000000..61d8a41
--- /dev/null
+++ b/wal/postrun
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+dunstconf="${XDG_CONFIG_HOME:-$HOME/.config}/dunst/dunstrc"
+zathuraconf="${XDG_CONFIG_HOME:-$HOME/.config}/zathura/zathurarc"
+
+source "${XDG_CACHE_HOME:-$HOME/.cache}/wal/colors.sh"
+
+mkdir -p "${dunstconf%/*}" "${zathuraconf%/*}"
+
+mv -n "$dunstconf" "$dunstconf.bak"
+mv -n "$zathuraconf" "$zathuraconf.bak"
+
+ln -sf "${XDG_CACHE_HOME:-$HOME/.cache}/wal/dunstrc" "$dunstconf"
+ln -sf "${XDG_CACHE_HOME:-$HOME/.cache}/wal/zathurarc" "$zathuraconf"
+
+fix_sequences() {
+ e=$'\e'
+ sequences=$(cat)
+ foreground_color="$(echo -e "${sequences}\c" | grep --color=never -Eo "${e}]10[^${e}\\\\]*?${e}\\\\" | grep --color=never -Eo "#[0-9A-Fa-f]{6}")"
+ background_color="$(echo -e "${sequences}\c" | grep --color=never -Eo "${e}]11[^${e}\\\\]*?${e}\\\\" | grep --color=never -Eo "#[0-9A-Fa-f]{6}")"
+ cursor_color="$(echo -e "${sequences}\c" | grep --color=never -Eo "${e}]12[^${e}\\\\]*?${e}\\\\" | grep --color=never -Eo "#[0-9A-Fa-f]{6}")"
+
+ for term in /dev/pts/{0..9}*; do
+ echo -e "\e]4;256;${cursor_color}\a\c" > "${term}" 2>/dev/null
+ echo -e "\e]4;258;${background_color}\a\c" > "${term}" 2>/dev/null
+ echo -e "\e]4;259;${foreground_color}\a\c" > "${term}" 2>/dev/null
+ done
+}
+
+fix_sequences <"${XDG_CACHE_HOME:-$HOME/.cache}/wal/sequences"
+
+pkill dunst; setsid -f dunst
diff --git a/wal/templates/dunstrc b/wal/templates/dunstrc
new file mode 100644
index 0000000..5a2e020
--- /dev/null
+++ b/wal/templates/dunstrc
@@ -0,0 +1,27 @@
+[global]
+ monitor = 0
+ follow = keyboard
+ width = 370
+ height = 350
+ offset = 0x19
+ padding = 2
+ horizontal_padding = 2
+ transparency = 25
+ font = Monospace 12
+ format = "%s\n%b"
+
+[urgency_low]
+ background = "{color0}" # color0
+ foreground = "{color8}" # color8
+ timeout = 3
+
+[urgency_normal]
+ foreground = "{color15}" # color15
+ background = "{color4}" # color4
+ timeout = 5
+
+[urgency_critical]
+ background = "{color1}" # color1
+ foreground = "{color15}" # color15
+ frame_color = "{color11}" # color11
+ timeout = 10
diff --git a/wal/templates/zathurarc b/wal/templates/zathurarc
new file mode 100644
index 0000000..8f0b16f
--- /dev/null
+++ b/wal/templates/zathurarc
@@ -0,0 +1,36 @@
+set sandbox none
+set statusbar-h-padding 0
+set statusbar-v-padding 0
+set page-padding 1
+set selection-clipboard clipboard
+map u scroll half-up
+map d scroll half-down
+map D toggle_page_mode
+map r reload
+map R rotate
+map K zoom in
+map J zoom out
+map i recolor
+map p print
+map g goto top
+
+set default-bg "{background}"
+set default-fg "{foreground}"
+set statusbar-bg "{background}"
+set statusbar-fg "{foreground}"
+set inputbar-bg "{background}"
+set inputbar-fg "{foreground}"
+set notification-bg "{background}"
+set notification-fg "{foreground}"
+set notification-error-bg "{background}"
+set notification-error-fg "{foreground}"
+set notification-warning-bg "{background}"
+set notification-warning-fg "{foreground}"
+set highlight-color "{color3}"
+set highlight-active-color "{color4}"
+set completion-bg "{color3}"
+set completion-fg "{color4}"
+set completion-highlight-bg "{color3}"
+set completion-highlight-fg "{color4}"
+set recolor-lightcolor "{background}"
+set recolor-darkcolor "{foreground}"
diff --git a/wget/wgetrc b/wget/wgetrc
new file mode 100644
index 0000000..4fd7999
--- /dev/null
+++ b/wget/wgetrc
@@ -0,0 +1 @@
+hsts-file=~/.cache/wget-hsts
diff --git a/x11/xinitrc b/x11/xinitrc
new file mode 100755
index 0000000..2debc01
--- /dev/null
+++ b/x11/xinitrc
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# xinitrc runs automatically when you run startx.
+
+# There are some small but important commands that need to be run when we start
+# the graphical environment. There is a link to this file in ~/.xprofile
+# because that file is run automatically if someone uses a display manager
+# (login screen) and so they are needed there. To prevent doubling up commands,
+# I source them here with the line below.
+
+if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/x11/xprofile" ]; then
+ . "${XDG_CONFIG_HOME:-$HOME/.config}/x11/xprofile"
+else
+ . "$HOME/.xprofile"
+fi
+
+ssh-agent dwm
diff --git a/x11/xprofile b/x11/xprofile
new file mode 100755
index 0000000..3601989
--- /dev/null
+++ b/x11/xprofile
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+# This file runs when a DM logs you into a graphical session.
+# If you use startx/xinit like a Chad, this file will also be sourced.
+
+xrandr --dpi 96 # Set DPI. User may want to use a larger number for larger screens.
+setbg & # set the background with the `setbg` script
+# xrdb ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources & xrdbpid=$! # Uncomment to use Xresources colors/settings on startup
+autostart="mpd picom dunst unclutter pipewire remapd"
+
+eval $(/usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh)
+dbus-update-activation-environment --all # Update dbus environment variables
+for program in $autostart; do
+ pidof -sx "$program" || "$program" &
+done >/dev/null 2>&1
+
+# Ensure that xrdb has finished running before moving on to start the WM/DE.
+[ -n "$xrdbpid" ] && wait "$xrdbpid"
diff --git a/x11/xresources b/x11/xresources
new file mode 100644
index 0000000..611f39a
--- /dev/null
+++ b/x11/xresources
@@ -0,0 +1,156 @@
+!! Transparency (0-1):
+*.alpha: 0.8
+
+!! Set a default font and font size as below:
+*.font: monospace:size=10
+
+/* name dark light */
+/* black 0 8 */
+/* red 1 9 */
+/* green 2 10 */
+/* yellow 3 11 */
+/* blue 4 12 */
+/* purple 5 13 */
+/* cyan 6 14 */
+/* white 7 15 */
+
+/* !! gruvbox: */
+/* *.color0: #1d2021 */
+/* *.color1: #cc241d */
+/* *.color2: #98971a */
+/* *.color3: #d79921 */
+/* *.color4: #458588 */
+/* *.color5: #b16286 */
+/* *.color6: #689d6a */
+/* *.color7: #a89984 */
+/* *.color8: #928374 */
+/* *.color9: #fb4934 */
+/* *.color10: #b8bb26 */
+/* *.color11: #fabd2f */
+/* *.color12: #83a598 */
+/* *.color13: #d3869b */
+/* *.color14: #8ec07c */
+/* *.color15: #ebdbb2 */
+/* *.color256: #1d2021 */
+/* *.color257: #ebdbb2 */
+
+/* !! gruvbox light: */
+/* *.color0: #fbf1c7 */
+/* *.color1: #cc241d */
+/* *.color2: #98971a */
+/* *.color3: #d79921 */
+/* *.color4: #458588 */
+/* *.color5: #b16286 */
+/* *.color6: #689d6a */
+/* *.color7: #7c6f64 */
+/* *.color8: #928374 */
+/* *.color9: #9d0006 */
+/* *.color10: #79740e */
+/* *.color11: #b57614 */
+/* *.color12: #076678 */
+/* *.color13: #8f3f71 */
+/* *.color14: #427b58 */
+/* *.color15: #3c3836 */
+/* *.background: #fbf1c7 */
+/* *.foreground: #282828 */
+/* st.alpha: 0.9 */
+
+/* !! brogrammer: */
+/* *.foreground: #d6dbe5 */
+/* *.background: #131313 */
+/* *.color0: #1f1f1f */
+/* *.color8: #d6dbe5 */
+/* *.color1: #f81118 */
+/* *.color9: #de352e */
+/* *.color2: #2dc55e */
+/* *.color10: #1dd361 */
+/* *.color3: #ecba0f */
+/* *.color11: #f3bd09 */
+/* *.color4: #2a84d2 */
+/* *.color12: #1081d6 */
+/* *.color5: #4e5ab7 */
+/* *.color13: #5350b9 */
+/* *.color6: #1081d6 */
+/* *.color14: #0f7ddb */
+/* *.color7: #d6dbe5 */
+/* *.color15: #ffffff */
+/* *.colorBD: #d6dbe5 */
+
+/* ! base16 */
+/* *.color0: #181818 */
+/* *.color1: #ab4642 */
+/* *.color2: #a1b56c */
+/* *.color3: #f7ca88 */
+/* *.color4: #7cafc2 */
+/* *.color5: #ba8baf */
+/* *.color6: #86c1b9 */
+/* *.color7: #d8d8d8 */
+/* *.color8: #585858 */
+/* *.color9: #ab4642 */
+/* *.color10: #a1b56c */
+/* *.color11: #f7ca88 */
+/* *.color12: #7cafc2 */
+/* *.color13: #ba8baf */
+/* *.color14: #86c1b9 */
+/* *.color15: #f8f8f8 */
+
+/* !! solarized */
+/* *.color0: #073642 */
+/* *.color1: #dc322f */
+/* *.color2: #859900 */
+/* *.color3: #b58900 */
+/* *.color4: #268bd2 */
+/* *.color5: #d33682 */
+/* *.color6: #2aa198 */
+/* *.color7: #eee8d5 */
+/* *.color9: #cb4b16 */
+/* *.color8: #fdf6e3 */
+/* *.color10: #586e75 */
+/* *.color11: #657b83 */
+/* *.color12: #839496 */
+/* *.color13: #6c71c4 */
+/* *.color14: #93a1a1 */
+/* *.color15: #fdf6e3 */
+
+/* !! xterm */
+/* *.color0: #000000 */
+/* *.color1: #cd0000 */
+/* *.color2: #00cd00 */
+/* *.color3: #cdcd00 */
+/* *.color4: #0000cd */
+/* *.color5: #cd00cd */
+/* *.color6: #00cdcd */
+/* *.color7: #e5e5e5 */
+/* *.color8: #4d4d4d */
+/* *.color9: #ff0000 */
+/* *.color10: #00ff00 */
+/* *.color11: #ffff00 */
+/* *.color12: #0000ff */
+/* *.color13: #ff00ff */
+/* *.color14: #00ffff */
+/* *.color15: #aabac8 */
+/* *.background: #000000 */
+
+/* ! Dracula Xresources palette */
+/* *.foreground: #F8F8F2 */
+/* *.background: #282A36 */
+/* *.color0: #000000 */
+/* *.color8: #4D4D4D */
+/* *.color1: #FF5555 */
+/* *.color9: #FF6E67 */
+/* *.color2: #50FA7B */
+/* *.color10: #5AF78E */
+/* *.color3: #F1FA8C */
+/* *.color11: #F4F99D */
+/* *.color4: #BD93F9 */
+/* *.color12: #CAA9FA */
+/* *.color5: #FF79C6 */
+/* *.color13: #FF92D0 */
+/* *.color6: #8BE9FD */
+/* *.color14: #9AEDFE */
+/* *.color7: #BFBFBF */
+/* *.color15: #E6E6E6 */
+
+/* *.background: .color0 */
+/* *.color256: 0#1d2021 */
+/* *.color257: 15#ebdbb2 */
diff --git a/zathura/zathurarc b/zathura/zathurarc
new file mode 100644
index 0000000..452e116
--- /dev/null
+++ b/zathura/zathurarc
@@ -0,0 +1,15 @@
+set sandbox none
+set statusbar-h-padding 0
+set statusbar-v-padding 0
+set page-padding 1
+set selection-clipboard clipboard
+map u scroll half-up
+map d scroll half-down
+map D toggle_page_mode
+map r reload
+map R rotate
+map K zoom in
+map J zoom out
+map i recolor
+map p print
+map g goto top
diff --git a/zsh/.gitignore b/zsh/.gitignore
new file mode 100644
index 0000000..35537dc
--- /dev/null
+++ b/zsh/.gitignore
@@ -0,0 +1 @@
+ohmyzsh/**/*
diff --git a/zsh/.zcompdump b/zsh/.zcompdump
new file mode 100644
index 0000000..b85a83b
--- /dev/null
+++ b/zsh/.zcompdump
@@ -0,0 +1,1795 @@
+#files: 787 version: 5.9
+
+_comps=(
+'-' '_precommand'
+'-array-value-' '_value'
+'-assign-parameter-' '_assign'
+'-brace-parameter-' '_brace_parameter'
+'-command-' '_autocd'
+'-command-line-' '_normal'
+'-condition-' '_condition'
+'-default-' '_default'
+'-equal-' '_equal'
+'-first-' '_first'
+'-math-' '_math'
+'-parameter-' '_parameter'
+'-redirect-' '_redirect'
+'-redirect-,-default-,-default-' '_files'
+'-redirect-,<,bunzip2' '_bzip2'
+'-redirect-,<,bzip2' '_bzip2'
+'-redirect-,<,compress' '_compress'
+'-redirect-,<,gunzip' '_gzip'
+'-redirect-,<,gzip' '_gzip'
+'-redirect-,<,uncompress' '_compress'
+'-redirect-,<,unxz' '_xz'
+'-redirect-,<,xz' '_xz'
+'-redirect-,>,bzip2' '_bzip2'
+'-redirect-,>,compress' '_compress'
+'-redirect-,>,gzip' '_gzip'
+'-redirect-,>,xz' '_xz'
+'-subscript-' '_subscript'
+'-tilde-' '_tilde'
+'-value-' '_value'
+'-value-,-default-,-command-' '_zargs'
+'-value-,-default-,-default-' '_value'
+'-value-,ADB_TRACE,-default-' '_adb'
+'-value-,ANDROID_LOG_TAGS,-default-' '_adb'
+'-value-,ANDROID_SERIAL,-default-' '_adb'
+'-value-,ANSIBLE_INVENTORY_ENABLED,-default-' '_ansible'
+'-value-,ANSIBLE_STDOUT_CALLBACK,-default-' '_ansible'
+'-value-,ANT_ARGS,-default-' '_ant'
+'-value-,CFLAGS,-default-' '_gcc'
+'-value-,CPPFLAGS,-default-' '_gcc'
+'-value-,CXXFLAGS,-default-' '_gcc'
+'-value-,DISPLAY,-default-' '_x_display'
+'-value-,GREP_OPTIONS,-default-' '_grep'
+'-value-,GZIP,-default-' '_gzip'
+'-value-,LANG,-default-' '_locales'
+'-value-,LANGUAGE,-default-' '_locales'
+'-value-,LDFLAGS,-default-' '_gcc'
+'-value-,LD_DEBUG,-default-' '_ld_debug'
+'-value-,LESS,-default-' '_less'
+'-value-,LESSCHARSET,-default-' '_less'
+'-value-,LOOPDEV_DEBUG,-default-' '_losetup'
+'-value-,LPDEST,-default-' '_printers'
+'-value-,MPD_HOST,-default' '_mpc'
+'-value-,P4CLIENT,-default-' '_perforce'
+'-value-,P4MERGE,-default-' '_perforce'
+'-value-,P4PORT,-default-' '_perforce'
+'-value-,P4USER,-default-' '_perforce'
+'-value-,PERLDOC,-default-' '_perldoc'
+'-value-,PRINTER,-default-' '_printers'
+'-value-,PROMPT,-default-' '_ps1234'
+'-value-,PROMPT2,-default-' '_ps1234'
+'-value-,PROMPT3,-default-' '_ps1234'
+'-value-,PROMPT4,-default-' '_ps1234'
+'-value-,PS1,-default-' '_ps1234'
+'-value-,PS2,-default-' '_ps1234'
+'-value-,PS3,-default-' '_ps1234'
+'-value-,PS4,-default-' '_ps1234'
+'-value-,RPROMPT,-default-' '_ps1234'
+'-value-,RPROMPT2,-default-' '_ps1234'
+'-value-,RPS1,-default-' '_ps1234'
+'-value-,RPS2,-default-' '_ps1234'
+'-value-,SPROMPT,-default-' '_ps1234'
+'-value-,TERM,-default-' '_terminals'
+'-value-,TERMINFO_DIRS,-default-' '_dir_list'
+'-value-,TZ,-default-' '_time_zone'
+'-value-,VALGRIND_OPTS,-default-' '_valgrind'
+'-value-,WWW_HOME,-default-' '_urls'
+'-value-,XML_CATALOG_FILES,-default-' '_xmlsoft'
+'-value-,XZ_DEFAULTS,-default-' '_xz'
+'-value-,XZ_OPT,-default-' '_xz'
+'-vared-' '_in_vared'
+'-zcalc-line-' '_zcalc_line'
+'.' '_source'
+'5g' '_go'
+'5l' '_go'
+'6g' '_go'
+'6l' '_go'
+'8g' '_go'
+'8l' '_go'
+'Mail' '_mail'
+'Mosaic' '_webbrowser'
+'_arguments' '__arguments'
+'a2ps' '_a2ps'
+'aaaa' '_hosts'
+'aap' '_aap'
+'abcde' '_abcde'
+'ack' '_ack'
+'ack-grep' '_ack'
+'ack-standalone' '_ack'
+'ack2' '_ack'
+'acpi' '_acpi'
+'acpitool' '_acpitool'
+'acroread' '_acroread'
+'adb' '_adb'
+'add-zle-hook-widget' '_add-zle-hook-widget'
+'add-zsh-hook' '_add-zsh-hook'
+'admin' '_sccs'
+'ali' '_mh'
+'alias' '_alias'
+'amaya' '_webbrowser'
+'analyseplugin' '_analyseplugin'
+'animate' '_imagemagick'
+'anno' '_mh'
+'ansible' '_ansible'
+'ansible-config' '_ansible'
+'ansible-console' '_ansible'
+'ansible-doc' '_ansible'
+'ansible-galaxy' '_ansible'
+'ansible-inventory' '_ansible'
+'ansible-playbook' '_ansible'
+'ansible-pull' '_ansible'
+'ansible-vault' '_ansible'
+'ant' '_ant'
+'antiword' '_antiword'
+'aodh' '_openstack'
+'aoss' '_precommand'
+'apache2ctl' '_apachectl'
+'apachectl' '_apachectl'
+'aplay' '_alsa-utils'
+'apm' '_apm'
+'appletviewer' '_java'
+'apropos' '_man'
+'apvlv' '_pdf'
+'arduino-ctags' '_ctags'
+'arecord' '_alsa-utils'
+'arena' '_webbrowser'
+'arp' '_arp'
+'arping' '_arping'
+'asciidoctor' '_asciidoctor'
+'asciinema' '_asciinema'
+'ash' '_sh'
+'at' '_at'
+'atq' '_at'
+'atrm' '_at'
+'attr' '_attr'
+'augtool' '_augeas'
+'autoload' '_typeset'
+'avahi-browse' '_avahi'
+'avahi-browse-domains' '_avahi'
+'avahi-resolve' '_avahi'
+'avahi-resolve-address' '_avahi'
+'avahi-resolve-host-name' '_avahi'
+'awk' '_awk'
+'b2sum' '_md5sum'
+'barbican' '_openstack'
+'base32' '_base64'
+'base64' '_base64'
+'basename' '_basename'
+'basenc' '_basenc'
+'bash' '_bash'
+'bat' '_bat'
+'batch' '_at'
+'baz' '_baz'
+'beep' '_beep'
+'bg' '_jobs_bg'
+'bibtex' '_bibtex'
+'bindkey' '_bindkey'
+'bison' '_bison'
+'bmake' '_make'
+'bogofilter' '_bogofilter'
+'bogotune' '_bogofilter'
+'bogoutil' '_bogofilter'
+'bpython' '_bpython'
+'bpython-gtk' '_bpython'
+'bpython-urwid' '_bpython'
+'bpython2' '_bpython'
+'bpython2-gtk' '_bpython'
+'bpython2-urwid' '_bpython'
+'bpython3' '_bpython'
+'bpython3-gtk' '_bpython'
+'bpython3-urwid' '_bpython'
+'brctl' '_brctl'
+'bsdgrep' '_grep'
+'bsdtar' '_tar'
+'btdownloadcurses' '_bittorrent'
+'btdownloadgui' '_bittorrent'
+'btdownloadheadless' '_bittorrent'
+'btlaunchmany' '_bittorrent'
+'btlaunchmanycurses' '_bittorrent'
+'btmakemetafile' '_bittorrent'
+'btreannounce' '_bittorrent'
+'btrename' '_bittorrent'
+'btrfs' '_btrfs'
+'btshowmetainfo' '_bittorrent'
+'bttrack' '_bittorrent'
+'buildhash' '_ispell'
+'builtin' '_builtin'
+'bunzip2' '_bzip2'
+'burst' '_mh'
+'busctl' '_busctl'
+'bwrap' '_bwrap'
+'bzcat' '_bzip2'
+'bzegrep' '_grep'
+'bzfgrep' '_grep'
+'bzgrep' '_grep'
+'bzip2' '_bzip2'
+'bzip2recover' '_bzip2'
+'bzr' '_bzr'
+'c++' '_gcc'
+'cabal' '_cabal'
+'cal' '_cal'
+'calendar' '_calendar'
+'cat' '_cat'
+'catchsegv' '_precommand'
+'cc' '_gcc'
+'ccal' '_ccal'
+'cd' '_cd'
+'cdc' '_sccs'
+'cdcd' '_cdcd'
+'cdr' '_cdr'
+'cdrdao' '_cdrdao'
+'cdrecord' '_cdrecord'
+'ceilometer' '_openstack'
+'certtool' '_gnutls'
+'cftp' '_twisted'
+'chage' '_users'
+'chattr' '_chattr'
+'chcon' '_chcon'
+'chdir' '_cd'
+'chfn' '_users'
+'chgrp' '_chown'
+'chimera' '_webbrowser'
+'chkconfig' '_chkconfig'
+'chkstow' '_stow'
+'chmod' '_chmod'
+'choom' '_choom'
+'chown' '_chown'
+'chpass' '_chsh'
+'chroot' '_chroot'
+'chrt' '_chrt'
+'chsh' '_chsh'
+'ci' '_rcs'
+'cifsiostat' '_sysstat'
+'cinder' '_openstack'
+'ckeygen' '_twisted'
+'cksum' '_cksum'
+'clang' '_gcc'
+'clang++' '_gcc'
+'clay' '_clay'
+'clear' '_nothing'
+'cloudkitty' '_openstack'
+'clusterdb' '_postgresql'
+'cmp' '_cmp'
+'co' '_rcs'
+'code' '_code'
+'codium' '_codium'
+'column' '_column'
+'comb' '_sccs'
+'combine' '_imagemagick'
+'combinediff' '_patchutils'
+'comm' '_comm'
+'command' '_command'
+'comp' '_mh'
+'compadd' '_compadd'
+'compdef' '_compdef'
+'composer' '_composer'
+'composer.phar' '_composer'
+'composite' '_imagemagick'
+'compress' '_compress'
+'conch' '_twisted'
+'config.status' '_configure'
+'configure' '_configure'
+'convert' '_imagemagick'
+'cowsay' '_cowsay'
+'cowthink' '_cowsay'
+'cp' '_cp'
+'cpio' '_cpio'
+'cplay' '_cplay'
+'cpupower' '_cpupower'
+'createdb' '_postgresql'
+'createuser' '_postgresql'
+'crontab' '_crontab'
+'crsh' '_cssh'
+'cryptsetup' '_cryptsetup'
+'cscope' '_cscope'
+'csh' '_sh'
+'csplit' '_csplit'
+'cssh' '_cssh'
+'ctags' '_ctags'
+'ctags-exuberant' '_ctags'
+'ctags-universal' '_ctags'
+'curl' '_curl'
+'cut' '_cut'
+'cvs' '_cvs'
+'darcs' '_darcs'
+'dash' '_sh'
+'date' '_date'
+'dbus-launch' '_dbus'
+'dbus-monitor' '_dbus'
+'dbus-send' '_dbus'
+'dconf' '_dconf'
+'dcop' '_dcop'
+'dcopclient' '_dcop'
+'dcopfind' '_dcop'
+'dcopobject' '_dcop'
+'dcopref' '_dcop'
+'dcopstart' '_dcop'
+'dd' '_dd'
+'declare' '_typeset'
+'delta' '_sccs'
+'designate' '_openstack'
+'devtodo' '_devtodo'
+'df' '_df'
+'dhclient' '_dhclient'
+'dhclient3' '_dhclient'
+'dict' '_dict'
+'diff' '_diff'
+'diff3' '_diff3'
+'diffstat' '_diffstat'
+'dig' '_dig'
+'dillo' '_webbrowser'
+'dircmp' '_directories'
+'dirs' '_dirs'
+'disable' '_disable'
+'disown' '_jobs_fg'
+'display' '_imagemagick'
+'dist' '_mh'
+'django-admin' '_django'
+'django-admin.py' '_django'
+'dkms' '_dkms'
+'dmake' '_make'
+'dmesg' '_dmesg'
+'dmidecode' '_dmidecode'
+'doas' '_doas'
+'domainname' '_yp'
+'dos2unix' '_dos2unix'
+'drill' '_drill'
+'dropbox' '_dropbox'
+'dropdb' '_postgresql'
+'dropuser' '_postgresql'
+'dsh' '_dsh'
+'dtruss' '_dtruss'
+'du' '_du'
+'dvibook' '_dvi'
+'dviconcat' '_dvi'
+'dvicopy' '_dvi'
+'dvidvi' '_dvi'
+'dvipdf' '_dvi'
+'dvips' '_dvi'
+'dviselect' '_dvi'
+'dvitodvi' '_dvi'
+'dvitype' '_dvi'
+'dwb' '_webbrowser'
+'e2label' '_e2label'
+'eatmydata' '_precommand'
+'ecasound' '_ecasound'
+'echotc' '_echotc'
+'echoti' '_echoti'
+'ed' '_ed'
+'egrep' '_grep'
+'elfdump' '_elfdump'
+'elinks' '_elinks'
+'emulate' '_emulate'
+'enable' '_enable'
+'enscript' '_enscript'
+'entr' '_entr'
+'env' '_env'
+'eog' '_eog'
+'epdfview' '_pdf'
+'epsffit' '_psutils'
+'erb' '_ruby'
+'espeak' '_espeak'
+'etags' '_etags'
+'ethtool' '_ethtool'
+'eu-nm' '_nm'
+'eu-objdump' '_objdump'
+'eu-readelf' '_readelf'
+'eu-strings' '_strings'
+'eval' '_precommand'
+'eview' '_vim'
+'evim' '_vim'
+'evince' '_evince'
+'ex' '_vi'
+'exec' '_exec'
+'expand' '_unexpand'
+'export' '_typeset'
+'express' '_webbrowser'
+'extcheck' '_java'
+'extractres' '_psutils'
+'fakeroot' '_fakeroot'
+'false' '_nothing'
+'fc' '_fc'
+'fc-list' '_xft_fonts'
+'fc-match' '_xft_fonts'
+'feh' '_feh'
+'fetchmail' '_fetchmail'
+'ffmpeg' '_ffmpeg'
+'fg' '_jobs_fg'
+'fgrep' '_grep'
+'figlet' '_figlet'
+'filterdiff' '_patchutils'
+'find' '_find'
+'findaffix' '_ispell'
+'findmnt' '_findmnt'
+'finger' '_finger'
+'firefox' '_mozilla'
+'fixdlsrps' '_psutils'
+'fixfmps' '_psutils'
+'fixmacps' '_psutils'
+'fixpsditps' '_psutils'
+'fixpspps' '_psutils'
+'fixscribeps' '_psutils'
+'fixtpps' '_psutils'
+'fixwfwps' '_psutils'
+'fixwpps' '_psutils'
+'fixwwps' '_psutils'
+'flac' '_flac'
+'flex' '_flex'
+'flex++' '_flex'
+'flipdiff' '_patchutils'
+'flist' '_mh'
+'flists' '_mh'
+'float' '_typeset'
+'fmt' '_fmt'
+'fmttest' '_mh'
+'fned' '_zed'
+'fnext' '_mh'
+'fold' '_fold'
+'folder' '_mh'
+'folders' '_mh'
+'fortune' '_fortune'
+'forw' '_mh'
+'fprev' '_mh'
+'free' '_free'
+'freebsd-make' '_make'
+'freezer' '_openstack'
+'fsh' '_fsh'
+'ftp' '_hosts'
+'functions' '_typeset'
+'fuser' '_fuser'
+'fusermount' '_fusermount'
+'fwhois' '_whois'
+'g++' '_gcc'
+'galeon' '_webbrowser'
+'gawk' '_awk'
+'gb2sum' '_md5sum'
+'gbase32' '_base64'
+'gbase64' '_base64'
+'gbasename' '_basename'
+'gcat' '_cat'
+'gcc' '_gcc'
+'gccgo' '_go'
+'gchgrp' '_chown'
+'gchmod' '_chmod'
+'gchown' '_chown'
+'gchroot' '_chroot'
+'gcksum' '_cksum'
+'gcmp' '_cmp'
+'gcomm' '_comm'
+'gcore' '_gcore'
+'gcp' '_cp'
+'gcut' '_cut'
+'gdate' '_date'
+'gdb' '_gdb'
+'gdd' '_dd'
+'gdf' '_df'
+'gdiff' '_diff'
+'gdu' '_du'
+'geany' '_geany'
+'gegrep' '_grep'
+'gem' '_gem'
+'genisoimage' '_genisoimage'
+'genv' '_env'
+'get' '_sccs'
+'getafm' '_psutils'
+'getconf' '_getconf'
+'getent' '_getent'
+'getfacl' '_getfacl'
+'getfacl.exe' '_getfacl'
+'getfattr' '_attr'
+'getmail' '_getmail'
+'getopt' '_getopt'
+'getopts' '_vars'
+'gex' '_vim'
+'gexpand' '_unexpand'
+'gfgrep' '_grep'
+'gfind' '_find'
+'gfmt' '_fmt'
+'gfold' '_fold'
+'ggetopt' '_getopt'
+'ggrep' '_grep'
+'ggv' '_gnome-gv'
+'ghead' '_head'
+'ghostscript' '_ghostscript'
+'ghostview' '_pspdf'
+'gid' '_id'
+'ginstall' '_install'
+'git' '_git'
+'git-cvsserver' '_git'
+'git-receive-pack' '_git'
+'git-shell' '_git'
+'git-upload-archive' '_git'
+'git-upload-pack' '_git'
+'gitk' '_git'
+'gjoin' '_join'
+'glance' '_openstack'
+'gln' '_ln'
+'global' '_global'
+'glocate' '_locate'
+'gls' '_ls'
+'gm' '_graphicsmagick'
+'gmake' '_make'
+'gmd5sum' '_md5sum'
+'gmkdir' '_mkdir'
+'gmkfifo' '_mkfifo'
+'gmknod' '_mknod'
+'gmktemp' '_mktemp'
+'gmplayer' '_mplayer'
+'gmv' '_mv'
+'gnl' '_nl'
+'gnocchi' '_openstack'
+'gnome-gv' '_gnome-gv'
+'gnumfmt' '_numfmt'
+'gnupod_INIT' '_gnupod'
+'gnupod_INIT.pl' '_gnupod'
+'gnupod_addsong' '_gnupod'
+'gnupod_addsong.pl' '_gnupod'
+'gnupod_check' '_gnupod'
+'gnupod_check.pl' '_gnupod'
+'gnupod_search' '_gnupod'
+'gnupod_search.pl' '_gnupod'
+'gnutls-cli' '_gnutls'
+'gnutls-cli-debug' '_gnutls'
+'gnutls-serv' '_gnutls'
+'god' '_od'
+'gofmt' '_go'
+'gpasswd' '_gpasswd'
+'gpaste' '_paste'
+'gpatch' '_patch'
+'gpg' '_gpg'
+'gpg-zip' '_gpg'
+'gpg2' '_gpg'
+'gpgv' '_gpg'
+'gphoto2' '_gphoto2'
+'gprintenv' '_printenv'
+'gprof' '_gprof'
+'gqview' '_gqview'
+'gradle' '_gradle'
+'gradlew' '_gradle'
+'grail' '_webbrowser'
+'greadlink' '_readlink'
+'grep' '_grep'
+'grepdiff' '_patchutils'
+'grm' '_rm'
+'grmdir' '_rmdir'
+'groff' '_groff'
+'groupadd' '_user_admin'
+'groupdel' '_groups'
+'groupmod' '_user_admin'
+'groups' '_users'
+'growisofs' '_growisofs'
+'gs' '_ghostscript'
+'gsbj' '_pspdf'
+'gsdj' '_pspdf'
+'gsdj500' '_pspdf'
+'gsed' '_sed'
+'gseq' '_seq'
+'gsettings' '_gsettings'
+'gsha1sum' '_md5sum'
+'gsha224sum' '_md5sum'
+'gsha256sum' '_md5sum'
+'gsha384sum' '_md5sum'
+'gsha512sum' '_md5sum'
+'gshred' '_shred'
+'gshuf' '_shuf'
+'gslj' '_pspdf'
+'gslp' '_pspdf'
+'gsnd' '_pspdf'
+'gsort' '_sort'
+'gsplit' '_split'
+'gstat' '_stat'
+'gstdbuf' '_stdbuf'
+'gstrings' '_strings'
+'gstty' '_stty'
+'gsum' '_cksum'
+'gtac' '_tac'
+'gtail' '_tail'
+'gtar' '_tar'
+'gtee' '_tee'
+'gtimeout' '_timeout'
+'gtouch' '_touch'
+'gtr' '_tr'
+'gtty' '_tty'
+'guilt' '_guilt'
+'guilt-add' '_guilt'
+'guilt-applied' '_guilt'
+'guilt-delete' '_guilt'
+'guilt-files' '_guilt'
+'guilt-fold' '_guilt'
+'guilt-fork' '_guilt'
+'guilt-header' '_guilt'
+'guilt-help' '_guilt'
+'guilt-import' '_guilt'
+'guilt-import-commit' '_guilt'
+'guilt-init' '_guilt'
+'guilt-new' '_guilt'
+'guilt-next' '_guilt'
+'guilt-patchbomb' '_guilt'
+'guilt-pop' '_guilt'
+'guilt-prev' '_guilt'
+'guilt-push' '_guilt'
+'guilt-rebase' '_guilt'
+'guilt-refresh' '_guilt'
+'guilt-rm' '_guilt'
+'guilt-series' '_guilt'
+'guilt-status' '_guilt'
+'guilt-top' '_guilt'
+'guilt-unapplied' '_guilt'
+'guname' '_uname'
+'gunexpand' '_unexpand'
+'guniq' '_uniq'
+'gunzip' '_gzip'
+'guptime' '_uptime'
+'gv' '_gv'
+'gview' '_vim'
+'gvim' '_vim'
+'gvimdiff' '_vim'
+'gwc' '_wc'
+'gwho' '_who'
+'gxargs' '_xargs'
+'gzcat' '_gzip'
+'gzegrep' '_grep'
+'gzfgrep' '_grep'
+'gzgrep' '_grep'
+'gzilla' '_webbrowser'
+'gzip' '_gzip'
+'hash' '_hash'
+'hd' '_hexdump'
+'head' '_head'
+'heat' '_openstack'
+'help' '_sccs'
+'hexdump' '_hexdump'
+'hilite' '_precommand'
+'histed' '_zed'
+'history' '_fc'
+'host' '_host'
+'hostname' '_hostname'
+'hotjava' '_webbrowser'
+'htop' '_htop'
+'iceweasel' '_mozilla'
+'icombine' '_ispell'
+'iconv' '_iconv'
+'iconvconfig' '_iconvconfig'
+'id' '_id'
+'identify' '_imagemagick'
+'ifconfig' '_ifconfig'
+'ifdown' '_net_interfaces'
+'iftop' '_iftop'
+'ifup' '_net_interfaces'
+'ijoin' '_ispell'
+'img2sixel' '_img2sixel'
+'import' '_imagemagick'
+'inc' '_mh'
+'includeres' '_psutils'
+'info' '_texinfo'
+'infocmp' '_terminals'
+'initctl' '_initctl'
+'initdb' '_postgresql'
+'insmod' '_modutils'
+'install' '_install'
+'install-info' '_texinfo'
+'integer' '_typeset'
+'interdiff' '_patchutils'
+'ionice' '_ionice'
+'iostat' '_iostat'
+'ip' '_ip'
+'ip6tables' '_iptables'
+'ip6tables-restore' '_iptables'
+'ip6tables-save' '_iptables'
+'ipkg' '_opkg'
+'ipsec' '_ipsec'
+'ipset' '_ipset'
+'iptables' '_iptables'
+'iptables-restore' '_iptables'
+'iptables-save' '_iptables'
+'irb' '_ruby'
+'ironic' '_openstack'
+'irssi' '_irssi'
+'isag' '_sysstat'
+'ispell' '_ispell'
+'iwconfig' '_iwconfig'
+'jadetex' '_tex'
+'jar' '_java'
+'jarsigner' '_java'
+'java' '_java'
+'javac' '_java'
+'javadoc' '_java'
+'javah' '_java'
+'javap' '_java'
+'jdb' '_java'
+'jobs' '_jobs_builtin'
+'joe' '_joe'
+'join' '_join'
+'jq' '_jq'
+'kdeconnect-cli' '_kdeconnect'
+'keystone' '_openstack'
+'keytool' '_java'
+'kfmclient' '_kfmclient'
+'kill' '_kill'
+'killall' '_killall'
+'killall5' '_killall'
+'kioclient' '_kfmclient'
+'knock' '_knock'
+'konqueror' '_webbrowser'
+'kpartx' '_kpartx'
+'kpdf' '_pdf'
+'ksh' '_sh'
+'ksh88' '_sh'
+'ksh93' '_sh'
+'kvno' '_kvno'
+'last' '_last'
+'lastb' '_last'
+'latex' '_tex'
+'latexmk' '_tex'
+'ldconfig' '_ldconfig'
+'ldconfig.real' '_ldconfig'
+'ldd' '_ldd'
+'less' '_less'
+'let' '_math'
+'lftp' '_ncftp'
+'lha' '_lha'
+'libinput' '_libinput'
+'light' '_webbrowser'
+'limit' '_limit'
+'links' '_links'
+'links2' '_links'
+'linux' '_uml'
+'lldb' '_lldb'
+'llvm-g++' '_gcc'
+'llvm-gcc' '_gcc'
+'llvm-objdump' '_objdump'
+'ln' '_ln'
+'loadkeys' '_loadkeys'
+'local' '_typeset'
+'locale' '_locale'
+'localedef' '_localedef'
+'locate' '_locate'
+'log' '_nothing'
+'logger' '_logger'
+'loginctl' '_loginctl'
+'logname' '_nothing'
+'look' '_look'
+'losetup' '_losetup'
+'lp' '_lp'
+'lpadmin' '_lp'
+'lpinfo' '_lp'
+'lpoptions' '_lp'
+'lpq' '_lp'
+'lpr' '_lp'
+'lprm' '_lp'
+'lpstat' '_lp'
+'ls' '_ls'
+'lsattr' '_lsattr'
+'lsblk' '_lsblk'
+'lsdiff' '_patchutils'
+'lsinitcpio' '_mkinitcpio'
+'lsmod' '_modutils'
+'lsns' '_lsns'
+'lsof' '_lsof'
+'lsusb' '_lsusb'
+'ltrace' '_ltrace'
+'lua' '_lua'
+'luarocks' '_luarocks'
+'lynx' '_lynx'
+'lz4' '_lz4'
+'lz4c' '_lz4'
+'lz4c32' '_lz4'
+'lz4cat' '_lz4'
+'lzcat' '_xz'
+'lzma' '_xz'
+'lzop' '_lzop'
+'mac2unix' '_dos2unix'
+'magnum' '_openstack'
+'mail' '_mail'
+'mailx' '_mail'
+'make' '_make'
+'makeinfo' '_texinfo'
+'makepkg' '_pacman'
+'man' '_man'
+'manage.py' '_django'
+'manila' '_openstack'
+'mark' '_mh'
+'mat' '_mat'
+'mat2' '_mat2'
+'matlab' '_matlab'
+'mattrib' '_mtools'
+'mcd' '_mtools'
+'mcopy' '_mtools'
+'md2' '_cksum'
+'md4' '_cksum'
+'md5' '_cksum'
+'md5sum' '_md5sum'
+'mdadm' '_mdadm'
+'mdel' '_mtools'
+'mdeltree' '_mtools'
+'mdir' '_mtools'
+'mdu' '_mtools'
+'mencal' '_mencal'
+'mere' '_mere'
+'merge' '_rcs'
+'meson' '_meson'
+'metaflac' '_flac'
+'mformat' '_mtools'
+'mgv' '_pspdf'
+'mhfixmsg' '_mh'
+'mhlist' '_mh'
+'mhmail' '_mh'
+'mhn' '_mh'
+'mhparam' '_mh'
+'mhpath' '_mh'
+'mhshow' '_mh'
+'mhstore' '_mh'
+'mii-tool' '_mii-tool'
+'mistral' '_openstack'
+'mkdir' '_mkdir'
+'mkfifo' '_mkfifo'
+'mkinitcpio' '_mkinitcpio'
+'mkisofs' '_growisofs'
+'mknod' '_mknod'
+'mksh' '_sh'
+'mktemp' '_mktemp'
+'mktunes' '_gnupod'
+'mktunes.pl' '_gnupod'
+'mlabel' '_mtools'
+'mlocate' '_locate'
+'mmd' '_mtools'
+'mmm' '_webbrowser'
+'mmount' '_mtools'
+'mmove' '_mtools'
+'modinfo' '_modutils'
+'modprobe' '_modutils'
+'module' '_module'
+'mogrify' '_imagemagick'
+'monasca' '_openstack'
+'mondoarchive' '_mondo'
+'montage' '_imagemagick'
+'moosic' '_moosic'
+'mosh' '_mosh'
+'mount' '_mount'
+'mozilla' '_mozilla'
+'mozilla-firefox' '_mozilla'
+'mozilla-xremote-client' '_mozilla'
+'mpc' '_mpc'
+'mplayer' '_mplayer'
+'mpstat' '_sysstat'
+'mpv' '_mpv'
+'mr' '_myrepos'
+'mrd' '_mtools'
+'mread' '_mtools'
+'mren' '_mtools'
+'msgchk' '_mh'
+'mt' '_mt'
+'mtn' '_monotone'
+'mtoolstest' '_mtools'
+'mtr' '_mtr'
+'mtype' '_mtools'
+'munchlist' '_ispell'
+'mupdf' '_mupdf'
+'murano' '_openstack'
+'mush' '_mail'
+'mutt' '_mutt'
+'mv' '_mv'
+'mvim' '_vim'
+'mw' '_mutt-wizard.zsh'
+'mx' '_hosts'
+'mysql' '_mysql_utils'
+'mysqladmin' '_mysql_utils'
+'mysqldiff' '_mysqldiff'
+'mysqldump' '_mysql_utils'
+'mysqlimport' '_mysql_utils'
+'mysqlshow' '_mysql_utils'
+'nail' '_mail'
+'native2ascii' '_java'
+'nautilus' '_nautilus'
+'nawk' '_awk'
+'nc' '_netcat'
+'ncal' '_cal'
+'ncftp' '_ncftp'
+'ncl' '_nedit'
+'nedit' '_nedit'
+'nedit-nc' '_nedit'
+'netcat' '_netcat'
+'netrik' '_webbrowser'
+'netscape' '_netscape'
+'netstat' '_netstat'
+'neutron' '_openstack'
+'new' '_mh'
+'newgrp' '_groups'
+'next' '_mh'
+'nginx' '_nginx'
+'ngrep' '_ngrep'
+'nice' '_nice'
+'ninja' '_ninja'
+'nkf' '_nkf'
+'nl' '_nl'
+'nm' '_nm'
+'nmap' '_nmap'
+'nmblookup' '_samba'
+'nmcli' '_networkmanager'
+'nocorrect' '_precommand'
+'noglob' '_precommand'
+'nohup' '_precommand'
+'notmuch' '_notmuch'
+'nova' '_openstack'
+'npm' '_npm'
+'ns' '_hosts'
+'nsenter' '_nsenter'
+'nslookup' '_nslookup'
+'ntalk' '_other_accounts'
+'numfmt' '_numfmt'
+'nvim' '_vim'
+'objdump' '_objdump'
+'od' '_od'
+'ogg123' '_vorbis'
+'oggdec' '_vorbis'
+'oggenc' '_vorbis'
+'ogginfo' '_vorbis'
+'oksh' '_sh'
+'okular' '_okular'
+'openstack' '_openstack'
+'opera' '_webbrowser'
+'opera-next' '_webbrowser'
+'opkg' '_opkg'
+'opusdec' '_opustools'
+'opusenc' '_opustools'
+'opusinfo' '_opustools'
+'p4' '_perforce'
+'p4d' '_perforce'
+'pacat' '_pulseaudio'
+'pack' '_pack'
+'packf' '_mh'
+'pacman' '_pacman'
+'pacman-conf' '_pacman'
+'pacman-key' '_pacman'
+'pacman.static' '_pacman'
+'pacmd' '_pulseaudio'
+'pactl' '_pulseaudio'
+'padsp' '_pulseaudio'
+'pandoc' '_pandoc'
+'paplay' '_pulseaudio'
+'parec' '_pulseaudio'
+'parecord' '_pulseaudio'
+'pass' '_pass'
+'passwd' '_users'
+'paste' '_paste'
+'pasuspender' '_pulseaudio'
+'patch' '_patch'
+'patchelf' '_patchelf'
+'pax' '_pax'
+'pcat' '_pack'
+'pcp-htop' '_htop'
+'pcred' '_pids'
+'pdf2dsc' '_pdf'
+'pdf2ps' '_pdf'
+'pdffonts' '_pdf'
+'pdfimages' '_pdf'
+'pdfinfo' '_pdf'
+'pdfjadetex' '_tex'
+'pdflatex' '_tex'
+'pdfopt' '_pdf'
+'pdftex' '_tex'
+'pdftexi2dvi' '_texinfo'
+'pdftk' '_pdftk'
+'pdftopbm' '_pdf'
+'pdftops' '_pdf'
+'pdftotext' '_pdf'
+'pdksh' '_sh'
+'perf' '_perf'
+'perl' '_perl'
+'perldoc' '_perldoc'
+'pfiles' '_pids'
+'pflags' '_pids'
+'pg_config' '_postgresql'
+'pg_ctl' '_postgresql'
+'pg_dump' '_postgresql'
+'pg_dumpall' '_postgresql'
+'pg_isready' '_postgresql'
+'pg_restore' '_postgresql'
+'pg_upgrade' '_postgresql'
+'pgrep' '_pgrep'
+'php' '_php'
+'pick' '_mh'
+'picocom' '_picocom'
+'pidof' '_pidof'
+'pidstat' '_sysstat'
+'pigz' '_gzip'
+'pine' '_pine'
+'pinef' '_pine'
+'pinfo' '_texinfo'
+'ping' '_ping'
+'ping6' '_ping'
+'pkg-config' '_pkg-config'
+'pkgadd' '_pkgadd'
+'pkginfo' '_pkginfo'
+'pkgrm' '_pkgrm'
+'pkill' '_pgrep'
+'pldd' '_pids'
+'pmake' '_make'
+'pman' '_perl_modules'
+'pmap' '_pmap'
+'pmcat' '_perl_modules'
+'pmdesc' '_perl_modules'
+'pmeth' '_perl_modules'
+'pmexp' '_perl_modules'
+'pmfunc' '_perl_modules'
+'pmload' '_perl_modules'
+'pmls' '_perl_modules'
+'pmpath' '_perl_modules'
+'pmvers' '_perl_modules'
+'podgrep' '_perl_modules'
+'podpath' '_perl_modules'
+'podtoc' '_perl_modules'
+'poff' '_pon'
+'policytool' '_java'
+'pon' '_pon'
+'popd' '_directory_stack'
+'postconf' '_postfix'
+'postgres' '_postgresql'
+'postmaster' '_postgresql'
+'postqueue' '_postfix'
+'postsuper' '_postfix'
+'pr' '_pr'
+'prev' '_mh'
+'print' '_print'
+'printenv' '_printenv'
+'printf' '_print'
+'prompt' '_prompt'
+'prove' '_prove'
+'prs' '_sccs'
+'prt' '_sccs'
+'prun' '_pids'
+'ps' '_ps'
+'ps2ascii' '_pspdf'
+'ps2epsi' '_postscript'
+'ps2pdf' '_postscript'
+'ps2pdf12' '_postscript'
+'ps2pdf13' '_postscript'
+'ps2pdf14' '_postscript'
+'ps2pdfwr' '_postscript'
+'ps2ps' '_postscript'
+'psbook' '_psutils'
+'psed' '_sed'
+'psig' '_pids'
+'psmerge' '_psutils'
+'psmulti' '_postscript'
+'psnup' '_psutils'
+'psql' '_postgresql'
+'psresize' '_psutils'
+'psselect' '_psutils'
+'pstack' '_pids'
+'pstoedit' '_pspdf'
+'pstop' '_pids'
+'pstops' '_psutils'
+'pstotgif' '_pspdf'
+'pswrap' '_postscript'
+'ptx' '_ptx'
+'pulseaudio' '_pulseaudio'
+'pump' '_pump'
+'pushd' '_cd'
+'pv' '_pv'
+'pwait' '_pids'
+'pwdx' '_pids'
+'pwgen' '_pwgen'
+'pyhtmlizer' '_twisted'
+'qdbus' '_qdbus'
+'qiv' '_qiv'
+'quilt' '_quilt'
+'r' '_fc'
+'rake' '_rake'
+'ranlib' '_ranlib'
+'rar' '_rar'
+'rc' '_sh'
+'rclone' '_rclone'
+'rcp' '_rlogin'
+'rcs' '_rcs'
+'rcsdiff' '_rcs'
+'rdesktop' '_rdesktop'
+'read' '_read'
+'readelf' '_readelf'
+'readlink' '_readlink'
+'readonly' '_typeset'
+'refile' '_mh'
+'rehash' '_hash'
+'reindexdb' '_postgresql'
+'reload' '_initctl'
+'remsh' '_rlogin'
+'renice' '_renice'
+'repl' '_mh'
+'restart' '_initctl'
+'retawq' '_webbrowser'
+'rgrep' '_grep'
+'rgview' '_vim'
+'rgvim' '_vim'
+'ri' '_ri'
+'rlogin' '_rlogin'
+'rm' '_rm'
+'rmd160' '_cksum'
+'rmdel' '_sccs'
+'rmdir' '_rmdir'
+'rmf' '_mh'
+'rmic' '_java'
+'rmid' '_java'
+'rmiregistry' '_java'
+'rmm' '_mh'
+'rmmod' '_modutils'
+'route' '_route'
+'rrdtool' '_rrdtool'
+'rsh' '_rlogin'
+'rsync' '_rsync'
+'rtin' '_tin'
+'rubber' '_rubber'
+'rubber-info' '_rubber'
+'rubber-pipe' '_rubber'
+'ruby' '_ruby'
+'ruby-mri' '_ruby'
+'run-help' '_run-help'
+'rup' '_hosts'
+'rusage' '_precommand'
+'rview' '_vim'
+'rvim' '_vim'
+'rwho' '_hosts'
+'rxvt' '_urxvt'
+'s2p' '_sed'
+'sact' '_sccs'
+'sadf' '_sysstat'
+'sahara' '_openstack'
+'sar' '_sysstat'
+'scan' '_mh'
+'sccs' '_sccs'
+'sccsdiff' '_sccs'
+'sched' '_sched'
+'schedtool' '_schedtool'
+'scons' '_scons'
+'scp' '_ssh'
+'screen' '_screen'
+'script' '_script'
+'scriptreplay' '_script'
+'seaf-cli' '_seafile'
+'sed' '_sed'
+'senlin' '_openstack'
+'seq' '_seq'
+'serialver' '_java'
+'service' '_service'
+'set' '_set'
+'setfacl' '_setfacl'
+'setfacl.exe' '_setfacl'
+'setfattr' '_attr'
+'setopt' '_setopt'
+'setpriv' '_setpriv'
+'setsid' '_setsid'
+'setxkbmap' '_setxkbmap'
+'sftp' '_ssh'
+'sh' '_sh'
+'sha1' '_cksum'
+'sha1sum' '_md5sum'
+'sha224sum' '_md5sum'
+'sha256' '_cksum'
+'sha256sum' '_md5sum'
+'sha384' '_cksum'
+'sha384sum' '_md5sum'
+'sha512' '_cksum'
+'sha512sum' '_md5sum'
+'sha512t256' '_cksum'
+'shasum' '_shasum'
+'shift' '_arrays'
+'show' '_mh'
+'showchar' '_psutils'
+'showmount' '_showmount'
+'shred' '_shred'
+'shuf' '_shuf'
+'shutdown' '_shutdown'
+'sisu' '_sisu'
+'skein1024' '_cksum'
+'skein256' '_cksum'
+'skein512' '_cksum'
+'skipstone' '_webbrowser'
+'slabtop' '_slabtop'
+'slitex' '_tex'
+'slocate' '_locate'
+'slogin' '_ssh'
+'slrn' '_slrn'
+'smartctl' '_smartmontools'
+'smbclient' '_samba'
+'smbcontrol' '_samba'
+'smbstatus' '_samba'
+'soa' '_hosts'
+'socket' '_socket'
+'sort' '_sort'
+'sortm' '_mh'
+'source' '_source'
+'spamassassin' '_spamassassin'
+'split' '_split'
+'splitdiff' '_patchutils'
+'sqlite' '_sqlite'
+'sqlite3' '_sqlite'
+'sqsh' '_sqsh'
+'sr' '_surfraw'
+'srptool' '_gnutls'
+'ss' '_ss'
+'ssh' '_ssh'
+'ssh-add' '_ssh'
+'ssh-agent' '_ssh'
+'ssh-copy-id' '_ssh'
+'ssh-keygen' '_ssh'
+'ssh-keyscan' '_ssh'
+'sshfs' '_sshfs'
+'star' '_tar'
+'start' '_initctl'
+'stat' '_stat'
+'status' '_initctl'
+'stdbuf' '_stdbuf'
+'stg' '_stgit'
+'stop' '_initctl'
+'stow' '_stow'
+'strace' '_strace'
+'strace64' '_strace'
+'strftime' '_strftime'
+'strings' '_strings'
+'strip' '_strip'
+'strongswan' '_ipsec'
+'stty' '_stty'
+'su' '_su'
+'subl' '_sublimetext'
+'sudo' '_sudo'
+'sudoedit' '_sudo'
+'sum' '_cksum'
+'surfraw' '_surfraw'
+'sv' '_runit'
+'svn' '_subversion'
+'svnadmin' '_subversion'
+'svnadmin-static' '_subversion'
+'svnlite' '_subversion'
+'svnliteadmin' '_subversion'
+'swaks' '_swaks'
+'swanctl' '_swanctl'
+'swift' '_swift'
+'swiftc' '_swift'
+'sync' '_nothing'
+'sysctl' '_sysctl'
+'tac' '_tac'
+'tacker' '_openstack'
+'tail' '_tail'
+'talk' '_other_accounts'
+'tar' '_tar'
+'tardy' '_tardy'
+'tcp_open' '_tcpsys'
+'tcpdump' '_tcpdump'
+'tcptraceroute' '_tcptraceroute'
+'tcsh' '_sh'
+'tda' '_devtodo'
+'tdd' '_devtodo'
+'tde' '_devtodo'
+'tdr' '_devtodo'
+'tee' '_tee'
+'telnet' '_telnet'
+'tex' '_tex'
+'texi2any' '_texinfo'
+'texi2dvi' '_texinfo'
+'texi2pdf' '_texinfo'
+'texindex' '_texinfo'
+'tg' '_topgit'
+'tidy' '_tidy'
+'tig' '_git'
+'time' '_precommand'
+'timeout' '_timeout'
+'times' '_nothing'
+'tin' '_tin'
+'tkconch' '_twisted'
+'tkinfo' '_texinfo'
+'tla' '_tla'
+'tload' '_tload'
+'tmux' '_tmux'
+'todo' '_devtodo'
+'todo.sh' '_todo.sh'
+'toilet' '_toilet'
+'top' '_top'
+'totdconfig' '_totd'
+'touch' '_touch'
+'tpb' '_tpb'
+'tput' '_tput'
+'tr' '_tr'
+'tracepath' '_tracepath'
+'tracepath6' '_tracepath'
+'traceroute' '_hosts'
+'transmission-remote' '_transmission'
+'trap' '_trap'
+'tree' '_tree'
+'trial' '_twisted'
+'trove' '_openstack'
+'true' '_nothing'
+'truncate' '_truncate'
+'truss' '_truss'
+'tryaffix' '_ispell'
+'tty' '_tty'
+'ttyctl' '_ttyctl'
+'tunctl' '_uml'
+'tune2fs' '_tune2fs'
+'tunes2pod' '_gnupod'
+'tunes2pod.pl' '_gnupod'
+'twidge' '_twidge'
+'twist' '_twisted'
+'twistd' '_twisted'
+'txt' '_hosts'
+'type' '_which'
+'typeset' '_typeset'
+'ulimit' '_ulimit'
+'uml_mconsole' '_uml'
+'uml_moo' '_uml'
+'uml_switch' '_uml'
+'umount' '_mount'
+'unace' '_unace'
+'unalias' '_aliases'
+'uname' '_uname'
+'uncompress' '_compress'
+'unexpand' '_unexpand'
+'unfunction' '_functions'
+'unget' '_sccs'
+'unhash' '_unhash'
+'uniq' '_uniq'
+'unison' '_unison'
+'units' '_units'
+'unix2dos' '_dos2unix'
+'unix2mac' '_dos2unix'
+'unlimit' '_limits'
+'unlz4' '_lz4'
+'unlzma' '_xz'
+'unpack' '_pack'
+'unpigz' '_gzip'
+'unrar' '_rar'
+'unset' '_vars'
+'unsetopt' '_setopt'
+'unshare' '_unshare'
+'unwrapdiff' '_patchutils'
+'unxz' '_xz'
+'unzip' '_zip'
+'uptime' '_uptime'
+'urxvt' '_urxvt'
+'urxvt256c' '_urxvt'
+'urxvt256c-ml' '_urxvt'
+'urxvt256c-mlc' '_urxvt'
+'urxvt256cc' '_urxvt'
+'urxvtc' '_urxvt'
+'useradd' '_user_admin'
+'userdel' '_users'
+'usermod' '_user_admin'
+'vacuumdb' '_postgresql'
+'val' '_sccs'
+'valgrind' '_valgrind'
+'vared' '_vared'
+'vcs_info_hookadd' '_vcs_info'
+'vcs_info_hookdel' '_vcs_info'
+'vi' '_vi'
+'view' '_vi'
+'vim' '_vim'
+'vimdiff' '_vim'
+'virsh' '_libvirt'
+'virt-admin' '_libvirt'
+'virt-host-validate' '_libvirt'
+'virt-pki-validate' '_libvirt'
+'virt-xml-validate' '_libvirt'
+'visudo' '_visudo'
+'vitrage' '_openstack'
+'vmstat' '_vmstat'
+'vncserver' '_vnc'
+'vncviewer' '_vnc'
+'vorbiscomment' '_vorbis'
+'vpnc' '_vpnc'
+'vpnc-connect' '_vpnc'
+'vserver' '_vserver'
+'w' '_w'
+'w3m' '_w3m'
+'wait' '_wait'
+'watch' '_watch'
+'watcher' '_openstack'
+'wc' '_wc'
+'wget' '_wget'
+'what' '_sccs'
+'whatis' '_man'
+'whence' '_which'
+'where' '_which'
+'whereis' '_whereis'
+'which' '_which'
+'who' '_who'
+'whoami' '_nothing'
+'whois' '_whois'
+'whom' '_mh'
+'wiggle' '_wiggle'
+'wipefs' '_wipefs'
+'wodim' '_cdrecord'
+'wpa_cli' '_wpa_cli'
+'write' '_users_on'
+'www' '_webbrowser'
+'xargs' '_xargs'
+'xattr' '_attr'
+'xauth' '_xauth'
+'xautolock' '_xautolock'
+'xclip' '_xclip'
+'xdpyinfo' '_x_utils'
+'xdvi' '_xdvi'
+'xelatex' '_tex'
+'xetex' '_tex'
+'xev' '_x_utils'
+'xfd' '_x_utils'
+'xfig' '_xfig'
+'xfontsel' '_x_utils'
+'xfreerdp' '_rdesktop'
+'xhost' '_x_utils'
+'xinput' '_xinput'
+'xkill' '_x_utils'
+'xli' '_xloadimage'
+'xloadimage' '_xloadimage'
+'xlsatoms' '_x_utils'
+'xlsclients' '_x_utils'
+'xml' '_xmlstarlet'
+'xmllint' '_xmlsoft'
+'xmlstarlet' '_xmlstarlet'
+'xmms2' '_xmms2'
+'xmodmap' '_xmodmap'
+'xmosaic' '_webbrowser'
+'xon' '_x_utils'
+'xournal' '_xournal'
+'xpdf' '_xpdf'
+'xping' '_hosts'
+'xprop' '_x_utils'
+'xrandr' '_xrandr'
+'xrdb' '_x_utils'
+'xscreensaver-command' '_xscreensaver'
+'xset' '_xset'
+'xsetbg' '_xloadimage'
+'xsetroot' '_x_utils'
+'xsltproc' '_xmlsoft'
+'xterm' '_xterm'
+'xtightvncviewer' '_vnc'
+'xtp' '_imagemagick'
+'xv' '_xv'
+'xview' '_xloadimage'
+'xvnc4viewer' '_vnc'
+'xvncviewer' '_vnc'
+'xwallpaper' '_xwallpaper'
+'xwd' '_x_utils'
+'xwininfo' '_x_utils'
+'xwit' '_xwit'
+'xwud' '_x_utils'
+'xxd' '_xxd'
+'xz' '_xz'
+'xzcat' '_xz'
+'yafc' '_yafc'
+'yash' '_sh'
+'yay' '_yay'
+'ypbind' '_yp'
+'ypcat' '_yp'
+'ypmatch' '_yp'
+'yppasswd' '_yp'
+'yppoll' '_yp'
+'yppush' '_yp'
+'ypserv' '_yp'
+'ypset' '_yp'
+'ypwhich' '_yp'
+'ypxfr' '_yp'
+'ytalk' '_other_accounts'
+'zargs' '_zargs'
+'zathura' '_zathura'
+'zcalc' '_zcalc'
+'zcat' '_zcat'
+'zcompile' '_zcompile'
+'zcp' '_zmv'
+'zdb' '_zfs'
+'zdelattr' '_zattr'
+'zdump' '_zdump'
+'zeal' '_zeal'
+'zed' '_zed'
+'zegrep' '_grep'
+'zen' '_webbrowser'
+'zf_chgrp' '_chown'
+'zf_chmod' '_chmod'
+'zf_chown' '_chown'
+'zf_ln' '_ln'
+'zf_mkdir' '_mkdir'
+'zf_mv' '_mv'
+'zf_rm' '_rm'
+'zf_rmdir' '_rmdir'
+'zfgrep' '_grep'
+'zfs' '_zfs'
+'zgetattr' '_zattr'
+'zgrep' '_grep'
+'zip' '_zip'
+'zipinfo' '_zip'
+'zle' '_zle'
+'zlistattr' '_zattr'
+'zln' '_zmv'
+'zmail' '_mail'
+'zmodload' '_zmodload'
+'zmv' '_zmv'
+'zone' '_hosts'
+'zparseopts' '_zparseopts'
+'zpool' '_zfs'
+'zpty' '_zpty'
+'zsetattr' '_zattr'
+'zsh' '_zsh'
+'zsh-mime-handler' '_zsh-mime-handler'
+'zsocket' '_zsocket'
+'zstat' '_stat'
+'zstyle' '_zstyle'
+'ztodo' '_ztodo'
+'zun' '_openstack'
+'zxpdf' '_xpdf'
+)
+
+_services=(
+'-redirect-,<,bunzip2' 'bunzip2'
+'-redirect-,<,bzip2' 'bzip2'
+'-redirect-,<,compress' 'compress'
+'-redirect-,<,gunzip' 'gunzip'
+'-redirect-,<,gzip' 'gzip'
+'-redirect-,<,uncompress' 'uncompress'
+'-redirect-,<,unxz' 'unxz'
+'-redirect-,<,xz' 'xz'
+'-redirect-,>,bzip2' 'bunzip2'
+'-redirect-,>,compress' 'uncompress'
+'-redirect-,>,gzip' 'gunzip'
+'-redirect-,>,xz' 'unxz'
+'Mail' 'mail'
+'bzcat' 'bunzip2'
+'gchgrp' 'chgrp'
+'gchown' 'chown'
+'gnupod_INIT.pl' 'gnupod_INIT'
+'gnupod_addsong.pl' 'gnupod_addsong'
+'gnupod_check.pl' 'gnupod_check'
+'gnupod_search.pl' 'gnupod_search'
+'gpg2' 'gpg'
+'gzcat' 'gunzip'
+'iceweasel' 'firefox'
+'lzcat' 'unxz'
+'lzma' 'xz'
+'mailx' 'mail'
+'mktunes.pl' 'mktunes'
+'nail' 'mail'
+'ncl' 'nc'
+'nedit-nc' 'nc'
+'pacman.static' 'pacman'
+'pcat' 'unpack'
+'remsh' 'rsh'
+'slogin' 'ssh'
+'svnadmin-static' 'svnadmin'
+'svnlite' 'svn'
+'svnliteadmin' 'svnadmin'
+'tunes2pod.pl' 'tunes2pod'
+'unlzma' 'unxz'
+'xelatex' 'latex'
+'xetex' 'tex'
+'xzcat' 'unxz'
+'zf_chgrp' 'chgrp'
+'zf_chown' 'chown'
+)
+
+_patcomps=(
+'*/(init|rc[0-9S]#).d/*' '_init_d'
+'notmuch-*' '_notmuch'
+)
+
+_postpatcomps=(
+'(p[bgpn]m*|*top[bgpn]m)' '_pbm'
+'(ruby|[ei]rb)[0-9.]#' '_ruby'
+'(texi(2*|ndex))' '_texi'
+'(tiff*|*2tiff|pal2rgb)' '_tiff'
+'*/X11(|R<4->)/*' '_x_arguments'
+'-value-,(ftp|http(|s))_proxy,-default-' '_urls'
+'-value-,*PATH,-default-' '_dir_list'
+'-value-,*path,-default-' '_directories'
+'-value-,LC_*,-default-' '_locales'
+'-value-,RUBY(LIB|OPT|PATH),-default-' '_ruby'
+'_*' '_compadd'
+'c++-*' '_gcc'
+'g++-*' '_gcc'
+'gcc-*' '_gcc'
+'gem[0-9.]#' '_gem'
+'lua[0-9.-]##' '_lua'
+'php[0-9.-]' '_php'
+'pip[0-9.]#' '_pip'
+'pydoc[0-9.]#' '_pydoc'
+'python[0-9.]#' '_python'
+'qemu(|-system-*)' '_qemu'
+'shasum(|5).*' '_shasum'
+'yodl(|2*)' '_yodl'
+'zf*' '_zftp'
+)
+
+_compautos=(
+'_call_program' '+X'
+)
+
+zle -C _bash_complete-word .complete-word _bash_completions
+zle -C _bash_list-choices .list-choices _bash_completions
+zle -C _complete_debug .complete-word _complete_debug
+zle -C _complete_help .complete-word _complete_help
+zle -C _complete_tag .complete-word _complete_tag
+zle -C _correct_filename .complete-word _correct_filename
+zle -C _correct_word .complete-word _correct_word
+zle -C _expand_alias .complete-word _expand_alias
+zle -C _expand_word .complete-word _expand_word
+zle -C _history-complete-newer .complete-word _history_complete_word
+zle -C _history-complete-older .complete-word _history_complete_word
+zle -C _list_expansions .list-choices _expand_word
+zle -C _most_recent_file .complete-word _most_recent_file
+zle -C _next_tags .list-choices _next_tags
+zle -C _read_comp .complete-word _read_comp
+bindkey '^X^R' _read_comp
+bindkey '^X?' _complete_debug
+bindkey '^XC' _correct_filename
+bindkey '^Xa' _expand_alias
+bindkey '^Xc' _correct_word
+bindkey '^Xd' _list_expansions
+bindkey '^Xe' _expand_word
+bindkey '^Xh' _complete_help
+bindkey '^Xm' _most_recent_file
+bindkey '^Xn' _next_tags
+bindkey '^Xt' _complete_tag
+bindkey '^X~' _bash_list-choices
+bindkey '^[,' _history-complete-newer
+bindkey '^[/' _history-complete-older
+bindkey '^[~' _bash_complete-word
+
+autoload -Uz _bat _busctl _bwrap _codium _curl \
+ _email-notmuch _img2sixel _libinput _loginctl _meson \
+ _mkinitcpio _mpv _mutt-wizard.zsh _ninja _notmuch \
+ _pacman _pass _patchelf _pulseaudio _xwallpaper \
+ _yay _zathura _cdr _all_labels _all_matches \
+ _alternative _approximate _arg_compile _arguments _bash_completions \
+ _cache_invalid _call_function _combination _comp_locale _complete \
+ _complete_debug _complete_help _complete_help_generic _complete_tag _correct \
+ _correct_filename _correct_word _describe _description _dispatch \
+ _expand _expand_alias _expand_word _extensions _external_pwds \
+ _generic _guard _history _history_complete_word _ignored \
+ _list _main_complete _match _menu _message \
+ _most_recent_file _multi_parts _next_label _next_tags _normal \
+ _nothing _numbers _oldlist _pick_variant _prefix \
+ _read_comp _regex_arguments _regex_words _requested _retrieve_cache \
+ _sep_parts _sequence _set_command _setup _store_cache \
+ _sub_commands _tags _user_expand _values _wanted \
+ _acpi _acpitool _alsa-utils _analyseplugin _basenc \
+ _brctl _btrfs _capabilities _chattr _chcon \
+ _choom _chrt _cpupower _cryptsetup _dkms \
+ _e2label _ethtool _findmnt _free _fuse_arguments \
+ _fuse_values _fusermount _gpasswd _htop _iconvconfig \
+ _ionice _ipset _iptables _iwconfig _kpartx \
+ _losetup _lsattr _lsblk _lsns _lsusb \
+ _ltrace _mat _mat2 _mdadm _mii-tool \
+ _modutils _mondo _networkmanager _nsenter _opkg \
+ _perf _pidof _pmap _qdbus _schedtool \
+ _selinux_contexts _selinux_roles _selinux_types _selinux_users _setpriv \
+ _setsid _slabtop _ss _sshfs _strace \
+ _sysstat _tload _tpb _tracepath _tune2fs \
+ _uml _unshare _valgrind _vserver _wakeup_capable_devices \
+ _wipefs _wpa_cli _a2ps _aap _abcde \
+ _absolute_command_paths _ack _adb _ansible _ant \
+ _antiword _apachectl _apm _arch_archives _arch_namespace \
+ _arp _arping _asciidoctor _asciinema _at \
+ _attr _augeas _avahi _awk _base64 \
+ _basename _bash _baudrates _baz _beep \
+ _bibtex _bind_addresses _bison _bittorrent _bogofilter \
+ _bpf_filters _bpython _bzip2 _bzr _cabal \
+ _cal _calendar _canonical_paths _cat _ccal \
+ _cdcd _cdrdao _cdrecord _chkconfig _chmod \
+ _chown _chroot _chsh _cksum _clay \
+ _cmdambivalent _cmdstring _cmp _column _comm \
+ _composer _compress _configure _cowsay _cp \
+ _cpio _cplay _crontab _cscope _csplit \
+ _cssh _ctags _ctags_tags _curl _cut \
+ _cvs _darcs _date _date_formats _dates \
+ _dbus _dconf _dd _devtodo _df \
+ _dhclient _dict _dict_words _diff _diff3 \
+ _diff_options _diffstat _dig _dir_list _directories \
+ _django _dmesg _dmidecode _dns_types _doas \
+ _domains _dos2unix _drill _dropbox _dsh \
+ _dtruss _du _dvi _ecasound _ed \
+ _elfdump _elinks _email_addresses _enscript _entr \
+ _env _espeak _etags _fakeroot _feh \
+ _fetchmail _ffmpeg _figlet _file_modes _file_systems \
+ _files _find _find_net_interfaces _finger _flac \
+ _flex _fmt _fold _fortune _fsh \
+ _fuser _gcc _gcore _gdb _gem \
+ _genisoimage _getconf _getent _getfacl _getmail \
+ _getopt _ghostscript _git _global _global_tags \
+ _gnu_generic _gnupod _gnutls _go _gpg \
+ _gphoto2 _gprof _gradle _graphicsmagick _grep \
+ _groff _groups _growisofs _gsettings _guilt \
+ _gzip _have_glob_qual _head _hexdump _host \
+ _hostname _hosts _iconv _id _ifconfig \
+ _iftop _imagemagick _init_d _initctl _install \
+ _iostat _ip _ipsec _irssi _ispell \
+ _java _java_class _joe _join _jq \
+ _killall _knock _kvno _last _ld_debug \
+ _ldconfig _ldd _less _lha _libvirt \
+ _links _list_files _lldb _ln _loadkeys \
+ _locale _localedef _locales _locate _logger \
+ _look _lp _ls _lsof _lua \
+ _luarocks _lynx _lz4 _lzop _mail \
+ _mailboxes _make _man _md5sum _mencal \
+ _mh _mime_types _mkdir _mkfifo _mknod \
+ _mktemp _module _monotone _moosic _mosh \
+ _mount _mpc _mt _mtools _mtr \
+ _mutt _mv _my_accounts _myrepos _mysql_utils \
+ _mysqldiff _ncftp _net_interfaces _netcat _netstat \
+ _newsgroups _nginx _ngrep _nice _nkf \
+ _nl _nm _nmap _npm _nslookup \
+ _numfmt _objdump _object_files _od _openstack \
+ _opustools _other_accounts _pack _pandoc _paste \
+ _patch _patchutils _path_commands _path_files _pax \
+ _pbm _pdf _perforce _perl _perl_basepods \
+ _perl_modules _perldoc _pgids _pgrep _php \
+ _picocom _pids _pine _ping _pip \
+ _pkg-config _pkg_instance _pkgadd _pkginfo _pkgrm \
+ _pon _ports _postfix _postgresql _postscript \
+ _pr _printenv _printers _process_names _prove \
+ _ps _pspdf _psutils _ptx _pump \
+ _pv _pwgen _pydoc _python _python_modules \
+ _qemu _quilt _rake _ranlib _rar \
+ _rclone _rcs _readelf _readlink _remote_files \
+ _renice _ri _rlogin _rm _rmdir \
+ _route _rrdtool _rsync _rubber _ruby \
+ _runit _samba _sccs _scons _screen \
+ _script _seafile _sed _seq _service \
+ _services _setfacl _sh _shasum _showmount \
+ _shred _shuf _shutdown _signals _sisu \
+ _slrn _smartmontools _socket _sort _spamassassin \
+ _split _sqlite _sqsh _ssh _ssh_hosts \
+ _stat _stdbuf _stgit _stow _strings \
+ _strip _stty _su _subversion _sudo \
+ _surfraw _swaks _swanctl _swift _sys_calls \
+ _sysctl _tac _tail _tar _tar_archive \
+ _tardy _tcpdump _tcptraceroute _tee _telnet \
+ _terminals _tex _texi _texinfo _tidy \
+ _tiff _tilde_files _time_zone _timeout _tin \
+ _tla _tmux _todo.sh _toilet _top \
+ _topgit _totd _touch _tput _tr \
+ _transmission _tree _truncate _truss _tty \
+ _ttys _twidge _twisted _umountable _unace \
+ _uname _unexpand _uniq _unison _units \
+ _uptime _urls _user_admin _user_at_host _users \
+ _users_on _vi _vim _visudo _vmstat \
+ _vorbis _vpnc _w _w3m _watch \
+ _wc _webbrowser _wget _whereis _who \
+ _whois _wiggle _xargs _xmlsoft _xmlstarlet \
+ _xmms2 _xxd _xz _yafc _yodl \
+ _yp _zcat _zdump _zfs _zfs_dataset \
+ _zfs_pool _zip _zsh _acroread _code \
+ _dcop _eog _evince _geany _gnome-gv \
+ _gqview _gv _kdeconnect _kfmclient _matlab \
+ _mozilla _mplayer _mupdf _nautilus _nedit \
+ _netscape _okular _pdftk _qiv _rdesktop \
+ _setxkbmap _sublimetext _urxvt _vnc _x_arguments \
+ _x_borderwidth _x_color _x_colormapid _x_cursor _x_display \
+ _x_extension _x_font _x_geometry _x_keysym _x_locale \
+ _x_modifier _x_name _x_resource _x_selection_timeout _x_title \
+ _x_utils _x_visual _x_window _xauth _xautolock \
+ _xclip _xdvi _xfig _xft_fonts _xinput \
+ _xloadimage _xmodmap _xournal _xpdf _xrandr \
+ _xscreensaver _xset _xt_arguments _xt_session_id _xterm \
+ _xv _xwit _zeal __arguments _add-zle-hook-widget \
+ _add-zsh-hook _alias _aliases _arrays _assign \
+ _autocd _bindkey _brace_parameter _builtin _cd \
+ _command _command_names _compadd _compdef _completers \
+ _condition _default _delimiters _directory_stack _dirs \
+ _disable _dynamic_directory_name _echotc _echoti _emulate \
+ _enable _equal _exec _fc _file_descriptors \
+ _first _functions _globflags _globqual_delims _globquals \
+ _hash _history_modifiers _in_vared _jobs _jobs_bg \
+ _jobs_builtin _jobs_fg _kill _limit _limits \
+ _math _math_params _mere _module_math_func _options \
+ _options_set _options_unset _parameter _parameters _precommand \
+ _print _prompt _ps1234 _read _redirect \
+ _run-help _sched _set _setopt _source \
+ _strftime _subscript _suffix_alias_files _tcpsys _tilde \
+ _trap _ttyctl _typeset _ulimit _unhash \
+ _user_math_func _value _vared _vars _vcs_info \
+ _vcs_info_hooks _wait _which _widgets _zargs \
+ _zattr _zcalc _zcalc_line _zcompile _zed \
+ _zftp _zle _zmodload _zmv _zparseopts \
+ _zpty _zsh-mime-handler _zsocket _zstyle _ztodo
+autoload -Uz +X _call_program
+
+typeset -gUa _comp_assocs
+_comp_assocs=( '' )
diff --git a/zsh/.zshrc b/zsh/.zshrc
new file mode 100644
index 0000000..23c302d
--- /dev/null
+++ b/zsh/.zshrc
@@ -0,0 +1,89 @@
+# Luke's config for the Zoomer Shell
+# Uncomment below for debugging part (1/2)
+# zmodload zsh/zprof
+
+# Enable colors and change prompt:
+autoload -U colors && colors # Load colors
+PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]%{$reset_color%}$%b "
+setopt autocd # Automatically cd into typed directory.
+stty stop undef # Disable ctrl-s to freeze terminal.
+setopt interactive_comments
+# History in cache directory:
+HISTSIZE=10000000
+SAVEHIST=10000000
+HISTFILE="${XDG_CACHE_HOME:-$HOME/.cache}/zsh/history"
+
+# Load aliases and shortcuts if existent.
+[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc"
+[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc"
+[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc"
+
+# Basic auto/tab complete:
+autoload -U compinit
+zstyle ':completion:*' menu select
+zmodload zsh/complist
+compinit
+_comp_options+=(globdots) # Include hidden files.
+
+# vi mode
+bindkey -v
+export KEYTIMEOUT=1
+# Use keychain to load ssh-agent
+eval `keychain --eval --quiet --noask --agents ssh id_rsa ~/.ssh/id_rsa`
+# Use vim keys in tab complete menu:
+bindkey -M menuselect 'h' vi-backward-char
+bindkey -M menuselect 'k' vi-up-line-or-history
+bindkey -M menuselect 'l' vi-forward-char
+bindkey -M menuselect 'j' vi-down-line-or-history
+bindkey -v '^?' backward-delete-char
+
+# Change cursor shape for different vi modes.
+function zle-keymap-select () {
+ case $KEYMAP in
+ vicmd) echo -ne '\e[1 q';; # block
+ viins|main) echo -ne '\e[5 q';; # beam
+ esac
+}
+zle -N zle-keymap-select
+zle-line-init() {
+ zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
+ echo -ne "\e[5 q"
+}
+zle -N zle-line-init
+echo -ne '\e[5 q' # Use beam shape cursor on startup.
+preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
+
+# Use lf to switch directories and bind it to ctrl-o
+lfcd () {
+ tmp="$(mktemp -uq)"
+ trap 'rm -f $tmp >/dev/null 2>&1 && trap - HUP INT QUIT TERM PWR EXIT' HUP INT QUIT TERM PWR EXIT
+ lf -last-dir-path="$tmp" "$@"
+ if [ -f "$tmp" ]; then
+ dir="$(cat "$tmp")"
+ [ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
+ fi
+}
+bindkey -s '^o' '^ulfcd\n'
+
+bindkey -s '^a' '^ubc -lq\n'
+
+bindkey -s '^f' '^ucd "$(dirname "$(fzf)")"\n'
+
+bindkey '^[[P' delete-char
+
+# Edit line in vim with ctrl-e:
+autoload edit-command-line; zle -N edit-command-line
+bindkey '^e' edit-command-line
+bindkey -M vicmd '^[[P' vi-delete-char
+bindkey -M vicmd '^e' edit-command-line
+bindkey -M visual '^[[P' vi-delete
+
+# Pre plugin variables:
+zstyle ':omz:plugins:nvm' lazy yes
+## Load plugins:
+source ~/.config/zsh/copyfile.zsh
+source /home/victor/.config/zsh/nvm/nvm.plugin.zsh
+# Load syntax highlighting; should be last.
+source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 2>/dev/null
+# Uncomment below for debugging part (2/2)
+# zprof
diff --git a/zsh/copyfile.zsh b/zsh/copyfile.zsh
new file mode 100644
index 0000000..f7bd8d2
--- /dev/null
+++ b/zsh/copyfile.zsh
@@ -0,0 +1,20 @@
+# Copy the content of a file to the clipboard using xclip
+function copyfile() {
+ if [[ -z $1 ]]; then
+ echo "Usage: copy-file-to-clipboard "
+ return 1
+ fi
+
+ if ! command -v xclip &> /dev/null; then
+ echo "xclip is not installed. Please install it first."
+ return 1
+ fi
+
+ if [[ ! -f $1 ]]; then
+ echo "$1 is not a valid file."
+ return 1
+ fi
+
+ xclip -sel clip < "$1"
+ echo "$1 content copied to clipboard."
+}
diff --git a/zsh/nvm/README.md b/zsh/nvm/README.md
new file mode 100644
index 0000000..d3fd980
--- /dev/null
+++ b/zsh/nvm/README.md
@@ -0,0 +1,60 @@
+# nvm plugin
+
+This plugin adds autocompletions for [nvm](https://github.com/nvm-sh/nvm) — a Node.js version manager. It also
+automatically sources nvm, so you don't need to do it manually in your `.zshrc`.
+
+To use it, add `nvm` to the plugins array of your zshrc file:
+
+```zsh
+plugins=(... nvm)
+```
+
+## Settings
+
+If you installed nvm in a directory other than `$HOME/.nvm`, set and export `NVM_DIR` to be the directory
+where you installed nvm.
+
+These settings should go in your zshrc file, before Oh My Zsh is sourced:
+
+- **`NVM_HOMEBREW`**: if you installed nvm via Homebrew, in a directory other than `/usr/local/opt/nvm`, you
+ can set `NVM_HOMEBREW` to be the directory where you installed it. For example, on Apple Silicon-based Macs,
+ [Homebrew is installed in `/opt/homebrew`](https://docs.brew.sh/Installation). To get the directory where
+ nvm has been installed, regardless of chip architecture, use `NVM_HOMEBREW=$(brew --prefix nvm)`.
+
+## Customization
+
+#### Lazy startup
+
+This option will help you to defer nvm's load until you use it to speed-up your zsh startup. This will source
+nvm script only when using it, and will create a function for `node`, `npm`, `pnpm`, `yarn`, and the
+command(s) specified by `lazy-cmd` option, so when you call either of them, nvm will be loaded and run with
+default version. To enable it, you can add this snippet to your zshrc, before Oh My Zsh is sourced:
+
+```zsh
+zstyle ':omz:plugins:nvm' lazy yes
+```
+
+Then, to define extra commands that will also trigger nvm load, you can use a similar syntax, adding as many
+as you want:
+
+```zsh
+zstyle ':omz:plugins:nvm' lazy-cmd eslint prettier typescript ...
+```
+
+#### `.nvmrc` autoload
+
+If set, the plugin will automatically load a node version when if finds a
+[`.nvmrc` file](https://github.com/nvm-sh/nvm#nvmrc) in the current working directory indicating which node
+version to load. This can be done, similar as previous options, adding:
+
+```zsh
+zstyle ':omz:plugins:nvm' autoload yes
+```
+
+To remove the output generated by NVM when autoloading, you can set the following option:
+
+```zsh
+zstyle ':omz:plugins:nvm' silent-autoload yes
+```
+
+Note: _this will not remove regular `nvm` output_
diff --git a/zsh/nvm/_nvm b/zsh/nvm/_nvm
new file mode 100644
index 0000000..e292a8d
--- /dev/null
+++ b/zsh/nvm/_nvm
@@ -0,0 +1,34 @@
+#compdef nvm
+#autoload
+
+[[ -f "$NVM_DIR/nvm.sh" ]] || return 0
+
+local -a _1st_arguments
+_1st_arguments=(
+ 'help:show help'
+ '--version:print out the latest released version of nvm'
+ 'install:download and install a version in '
+ 'install-latest-npm:download and install the latest npm version'
+ 'uninstall:uninstall a version'
+ 'use:modify PATH to use . Uses .nvmrc if available'
+ 'exec:run on . Uses .nvmrc if available'
+ 'run:run `node` on with as arguments. Uses .nvmrc if available'
+ 'current:list installed versions'
+ 'ls:list installed versions or versions matching a given description'
+ 'version:resolve the given description to a single local version'
+ 'version-remote:resolve the given description to a single remote version'
+ 'ls-remote:list remote versions available for install'
+ 'deactivate:undo effects of `nvm` on current shell'
+ 'alias:show or set aliases'
+ 'unalias:deletes an alias'
+ 'reinstall-packages:reinstall global `npm` packages contained in to current version'
+ 'unload:unload `nvm` from shell'
+ 'which:display path to installed node version. Uses .nvmrc if available'
+)
+
+_arguments -C '*:: :->subcmds' && return 0
+
+if (( CURRENT == 1 )); then
+ _describe -t commands "nvm subcommand" _1st_arguments
+ return
+fi
diff --git a/zsh/nvm/nvm.plugin.zsh b/zsh/nvm/nvm.plugin.zsh
new file mode 100644
index 0000000..20697d6
--- /dev/null
+++ b/zsh/nvm/nvm.plugin.zsh
@@ -0,0 +1,105 @@
+# See https://github.com/nvm-sh/nvm#installation-and-update
+if [[ -z "$NVM_DIR" ]]; then
+ if [[ -d "$HOME/.nvm" ]]; then
+ export NVM_DIR="$HOME/.nvm"
+ elif [[ -d "${XDG_CONFIG_HOME:-$HOME/.config}/nvm" ]]; then
+ export NVM_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/nvm"
+ elif (( $+commands[brew] )); then
+ NVM_HOMEBREW="${NVM_HOMEBREW:-${HOMEBREW_PREFIX:-$(brew --prefix)}/opt/nvm}"
+ if [[ -d "$NVM_HOMEBREW" ]]; then
+ export NVM_DIR="$NVM_HOMEBREW"
+ fi
+ fi
+fi
+
+# Don't try to load nvm if command already available
+# Note: nvm is a function so we need to use `which`
+which nvm &>/dev/null && return
+
+# TODO: 2022-11-11: Remove soft-deprecate options
+if (( ${+NVM_LAZY} + ${+NVM_LAZY_CMD} + ${+NVM_AUTOLOAD} )); then
+ # Get list of NVM_* variable settings defined
+ local -a used_vars
+ used_vars=(${(o)parameters[(I)NVM_(AUTOLOAD|LAZY|LAZY_CMD)]})
+ # Nicely print the list in the style `var1, var2 and var3`
+ echo "${fg[yellow]}[nvm plugin] Variable-style settings are deprecated. Instead of ${(j:, :)used_vars[1,-2]}${used_vars[-2]+ and }${used_vars[-1]}, use:\n"
+ if (( $+NVM_AUTOLOAD )); then
+ echo " zstyle ':omz:plugins:nvm' autoload yes"
+ zstyle ':omz:plugins:nvm' autoload yes
+ fi
+ if (( $+NVM_LAZY )); then
+ echo " zstyle ':omz:plugins:nvm' lazy yes"
+ zstyle ':omz:plugins:nvm' lazy yes
+ fi
+ if (( $+NVM_LAZY_CMD )); then
+ echo " zstyle ':omz:plugins:nvm' lazy-cmd $NVM_LAZY_CMD"
+ zstyle ':omz:plugins:nvm' lazy-cmd $NVM_LAZY_CMD
+ fi
+ echo "$reset_color"
+ unset used_vars NVM_AUTOLOAD NVM_LAZY NVM_LAZY_CMD
+fi
+
+if zstyle -t ':omz:plugins:nvm' lazy; then
+ # Call nvm when first using nvm, node, npm, pnpm, yarn or other commands in lazy-cmd
+ zstyle -a ':omz:plugins:nvm' lazy-cmd nvm_lazy_cmd
+ eval "
+ function nvm node npm pnpm yarn $nvm_lazy_cmd {
+ unfunction nvm node npm pnpm yarn $nvm_lazy_cmd
+ # Load nvm if it exists in \$NVM_DIR
+ [[ -f \"\$NVM_DIR/nvm.sh\" ]] && source \"\$NVM_DIR/nvm.sh\"
+ \"\$0\" \"\$@\"
+ }
+ "
+ unset nvm_lazy_cmd
+elif [[ -f "$NVM_DIR/nvm.sh" ]]; then
+ # Load nvm if it exists in $NVM_DIR
+ source "$NVM_DIR/nvm.sh"
+else
+ return
+fi
+
+# Autoload nvm when finding a .nvmrc file in the current directory
+# Adapted from: https://github.com/nvm-sh/nvm#zsh
+if zstyle -t ':omz:plugins:nvm' autoload; then
+ function load-nvmrc {
+ local node_version="$(nvm version)"
+ local nvmrc_path="$(nvm_find_nvmrc)"
+ local nvm_silent=""
+ zstyle -t ':omz:plugins:nvm' silent-autoload && nvm_silent="--silent"
+
+ if [[ -n "$nvmrc_path" ]]; then
+ local nvmrc_node_version=$(nvm version $(cat "$nvmrc_path" | tr -dc '[:print:]'))
+
+ if [[ "$nvmrc_node_version" = "N/A" ]]; then
+ nvm install
+ elif [[ "$nvmrc_node_version" != "$node_version" ]]; then
+ nvm use $nvm_silent
+ fi
+ elif [[ "$node_version" != "$(nvm version default)" ]]; then
+ if [[ -z $nvm_silent ]]; then
+ echo "Reverting to nvm default version"
+ fi
+
+ nvm use default $nvm_silent
+ fi
+ }
+
+ autoload -U add-zsh-hook
+ add-zsh-hook chpwd load-nvmrc
+
+ load-nvmrc
+fi
+
+# Load nvm bash completion
+for nvm_completion in "$NVM_DIR/bash_completion" "$NVM_HOMEBREW/etc/bash_completion.d/nvm"; do
+ if [[ -f "$nvm_completion" ]]; then
+ # Load bashcompinit
+ autoload -U +X bashcompinit && bashcompinit
+ # Bypass compinit call in nvm bash completion script. See:
+ # https://github.com/nvm-sh/nvm/blob/4436638/bash_completion#L86-L93
+ ZSH_VERSION= source "$nvm_completion"
+ break
+ fi
+done
+
+unset NVM_HOMEBREW nvm_completion
diff --git a/zsh/ohmyzsh b/zsh/ohmyzsh
new file mode 160000
index 0000000..0024107
--- /dev/null
+++ b/zsh/ohmyzsh
@@ -0,0 +1 @@
+Subproject commit 00241073105643874531e1826b7df6d2cb3cadfb