commit 30e94a06dbc090307bd3df4c9257ba4f962ee881 Author: Victor Lalle <29478339+LalleSX@users.noreply.github.com> Date: Sun Jun 4 15:00:13 2023 +0200 configs 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 0000000..09ef7ee Binary files /dev/null and b/pulse/cookie differ diff --git a/pulse/daemon.conf b/pulse/daemon.conf new file mode 100644 index 0000000..ef900f1 --- /dev/null +++ b/pulse/daemon.conf @@ -0,0 +1,4 @@ +# Never exit pulseaudio if idle. This is to deal with an issue of Chromium +# browsers not properly starting Pulseaudio by themselves. When the underlying +# issue is solved, this file/directory should be removed. +exit-idle-time = -1 diff --git a/shell/aliasrc b/shell/aliasrc new file mode 100644 index 0000000..5f85726 --- /dev/null +++ b/shell/aliasrc @@ -0,0 +1,63 @@ +#!/bin/sh + +# Use neovim for vim if present. +[ -x "$(command -v nvim)" ] && alias vim="nvim" vimdiff="nvim -d" + +# Use $XINITRC variable if file exists. +[ -f "$XINITRC" ] && alias startx="startx $XINITRC" + +[ -f "$MBSYNCRC" ] && alias mbsync="mbsync -c $MBSYNCRC" + +# sudo not required for some system commands +for command in mount umount sv pacman updatedb su shutdown poweroff reboot ; do + alias $command="sudo $command" +done; unset command + +se() { + choice="$(find ~/.local/bin -mindepth 1 -printf '%P\n' | fzf)" + [ -f "$HOME/.local/bin/$choice" ] && $EDITOR "$HOME/.local/bin/$choice" + ;} + +# Verbosity and settings that you pretty much just always are going to want. +alias \ + cp="cp -iv" \ + mv="mv -iv" \ + rm="rm -vI" \ + bc="bc -ql" \ + rsync="rsync -vrPlu" \ + mkd="mkdir -pv" \ + yt="yt-dlp --embed-metadata -i" \ + yta="yt -x -f bestaudio/best" \ + ytt="yt --skip-download --write-thumbnail" \ + ffmpeg="ffmpeg -hide_banner" \ + code="vscodium" \ + edge="microsoft-edge-stable" \ + +# Colorize commands when possible. +alias \ + ls="ls -hN --color=auto --group-directories-first" \ + grep="grep --color=auto" \ + diff="diff --color=auto" \ + ccat="highlight --out-format=ansi" \ + ip="ip -color=auto" + +# These common commands are just too long! Abbreviate them. +alias \ + ka="killall" \ + g="git" \ + trem="transmission-remote" \ + YT="youtube-viewer" \ + sdn="shutdown -h now" \ + e="$EDITOR" \ + v="$EDITOR" \ + p="pacman" \ + xi="sudo xbps-install" \ + xr="sudo xbps-remove -R" \ + xq="xbps-query" \ + z="zathura" + +alias \ + lf="lfub" \ + magit="nvim -c MagitOnly" \ + ref="shortcuts >/dev/null; source ${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc ; source ${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" \ + weath="less -S ${XDG_CACHE_HOME:-$HOME/.cache}/weatherreport" \ diff --git a/shell/bm-dirs b/shell/bm-dirs new file mode 100644 index 0000000..b87bb97 --- /dev/null +++ b/shell/bm-dirs @@ -0,0 +1,14 @@ +# You can add comments to these files with # +cac ${XDG_CACHE_HOME:-$HOME/.cache} +cf ${XDG_CONFIG_HOME:-$HOME/.config} +D ${XDG_DOWNLOAD_DIR:-$HOME/down} +d ${XDG_DOCUMENTS_DIR:-$HOME/dox} +dt ${XDG_DATA_HOME:-$HOME/.local/share} +rr $HOME/.local/src +h $HOME +m ${XDG_MUSIC_DIR:-$HOME/music} +mn /mnt +pp ${XDG_PICTURES_DIR:-$HOME/pix} +sc $HOME/.local/bin +src $HOME/.local/src +vv ${XDG_VIDEOS_DIR:-$HOME/vids} diff --git a/shell/bm-files b/shell/bm-files new file mode 100644 index 0000000..27f8ee2 --- /dev/null +++ b/shell/bm-files @@ -0,0 +1,23 @@ +# These files automatically update when edited/saved in vim: + +# keys filename description +bf ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-files # This file, a list of bookmarked files +bd ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs # A list of bookmarked directories similar to this file +cfx ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources # Colors, themes and variables for X11 +cfb ~/.local/src/dwmblocks/config.h # dwmblocks: the status bar for dwm + + +# These do not update automatically, but on the next new instance of a program: + +cfv ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/init.lua # vim/neovim config +cfz $ZDOTDIR/.zshrc # zsh (shell) config +cfa ${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc # aliases used by zsh (and potentially other shells) +cfp ${XDG_CONFIG_HOME:-$HOME/.config}/shell/profile # profile file for login settings for zsh +cfm ${XDG_CONFIG_HOME:-$HOME/.config}/mutt/muttrc # mutt (email client) config +cfn ${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/config # newsboat (RSS reader) +cfu ${XDG_CONFIG_HOME:-$HOME/.config}/newsboat/urls # RSS urls for newsboat +cfmb ${XDG_CONFIG_HOME:-$HOME/.config}/ncmpcpp/bindings # ncmpcpp (music player) keybinds file +cfmc ${XDG_CONFIG_HOME:-$HOME/.config}/ncmpcpp/config # ncmpcpp (music player) config +cfl ${XDG_CONFIG_HOME:-$HOME/.config}/lf/lfrc # lf (file browser) config +cfL ${XDG_CONFIG_HOME:-$HOME/.config}/lf/scope # lf's scope/preview file +cfX ${XDG_CONFIG_HOME:-$HOME/.config}/sxiv/exec/key-handler # sxiv (image viewer) key/script handler diff --git a/shell/inputrc b/shell/inputrc new file mode 100644 index 0000000..f9b94dd --- /dev/null +++ b/shell/inputrc @@ -0,0 +1,19 @@ +$include /etc/inputrc +set editing-mode vi +$if mode=vi + +set show-mode-in-prompt on +set vi-ins-mode-string \1\e[6 q\2 +set vi-cmd-mode-string \1\e[2 q\2 + +set keymap vi-command +# these are for vi-command mode +Control-l: clear-screen +Control-a: beginning-of-line + +set keymap vi-insert +# these are for vi-insert mode +Control-l: clear-screen +Control-a: beginning-of-line + +$endif diff --git a/shell/profile b/shell/profile new file mode 100644 index 0000000..73dc372 --- /dev/null +++ b/shell/profile @@ -0,0 +1,82 @@ +#!/bin/zsh + +# profile file. Runs on login. Environmental variables are set here. + +# If you don't plan on reverting to bash, you can remove the link in ~/.profile +# to clean up. + +# Adds `~/.local/bin` to $PATH +export PATH="$PATH:${$(find ~/.local/bin -type d -printf %p:)%%:}" + +unsetopt PROMPT_SP + +# Default programs: +export EDITOR="nvim" +export TERMINAL="st" +export TERMINAL_PROG="st" + +# Change the default crypto/weather monitor sites. +# export CRYPTOURL="rate.sx" +# export WTTRURL="wttr.in" + +# ~/ Clean-up: +export XDG_CONFIG_HOME="$HOME/.config" +export XDG_DATA_HOME="$HOME/.local/share" +export XDG_CACHE_HOME="$HOME/.cache" +export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc" +#export XAUTHORITY="$XDG_RUNTIME_DIR/Xauthority" # This line will break some DMs. +export NOTMUCH_CONFIG="$XDG_CONFIG_HOME/notmuch-config" +export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc-2.0" +export WGETRC="$XDG_CONFIG_HOME/wget/wgetrc" +export INPUTRC="$XDG_CONFIG_HOME/shell/inputrc" +export ZDOTDIR="$XDG_CONFIG_HOME/zsh" +#export GNUPGHOME="$XDG_DATA_HOME/gnupg" +export WINEPREFIX="$XDG_DATA_HOME/wineprefixes/default" +export KODI_DATA="$XDG_DATA_HOME/kodi" +export PASSWORD_STORE_DIR="$XDG_DATA_HOME/password-store" +export TMUX_TMPDIR="$XDG_RUNTIME_DIR" +export ANDROID_SDK_HOME="$XDG_CONFIG_HOME/android" +export CARGO_HOME="$XDG_DATA_HOME/cargo" +export GOPATH="$XDG_DATA_HOME/go" +export GOMODCACHE="$XDG_CACHE_HOME/go/mod" +export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible/ansible.cfg" +export UNISON="$XDG_DATA_HOME/unison" +export HISTFILE="$XDG_DATA_HOME/history" +export MBSYNCRC="$XDG_CONFIG_HOME/mbsync/config" +export ELECTRUMDIR="$XDG_DATA_HOME/electrum" +export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/pythonrc" +export SQLITE_HISTORY="$XDG_DATA_HOME/sqlite_history" +export XDG_DESKTOP_DIR="$HOME/" +export XDG_DOWNLOAD_DIR="$HOME/down" +export XDG_TEMPLATES_DIR="$HOME/temp" +export XDG_PUBLICSHARE_DIR="$HOME/pub" +export XDG_DOCUMENTS_DIR="$HOME/dox" +export XDG_MUSIC_DIR="$HOME/music" +export XDG_PICTURES_DIR="$HOME/pix" +export XDG_VIDEOS_DIR="$HOME/vids" + +# Other program settings: +export DICS="/usr/share/stardict/dic/" +export SUDO_ASKPASS="$HOME/.local/bin/dmenupass" +export FZF_DEFAULT_OPTS="--layout=reverse --height 40%" +export LESS=-R +export LESS_TERMCAP_mb="$(printf '%b' '')" +export LESS_TERMCAP_md="$(printf '%b' '')" +export LESS_TERMCAP_me="$(printf '%b' '')" +export LESS_TERMCAP_so="$(printf '%b' '')" +export LESS_TERMCAP_se="$(printf '%b' '')" +export LESS_TERMCAP_us="$(printf '%b' '')" +export LESS_TERMCAP_ue="$(printf '%b' '')" +export LESSOPEN="| /usr/bin/highlight -O ansi %s 2>/dev/null" +export QT_QPA_PLATFORMTHEME="gtk2" # Have QT use gtk2 theme. +export MOZ_USE_XINPUT2="1" # Mozilla smooth scrolling/touchpads. +export AWT_TOOLKIT="MToolkit wmname LG3D" # May have to install wmname +export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm + +[ ! -f ${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc ] && setsid shortcuts >/dev/null 2>&1 + +# Start graphical server on user's current tty if not already running. +[ "$(tty)" = "/dev/tty1" ] && ! pidof -s Xorg >/dev/null 2>&1 && exec startx "$XINITRC" + +# Switch escape and caps if tty and no passwd required: +sudo -n loadkeys ${XDG_DATA_HOME:-$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