From 91a01ec1e3adb30c163acd912832ebd5b4266c72 Mon Sep 17 00:00:00 2001 From: winston Date: Wed, 4 Jan 2023 13:33:34 +0100 Subject: [PATCH] feat(zsh): split config --- dot_config/zsh/config.d/aliases/chezmoi.zsh | 10 ++ .../zsh/config.d/aliases/empty_general.zsh | 0 dot_config/zsh/config.d/aliases/ls.zsh | 13 ++ dot_config/zsh/config.d/functions/diff.zsh | 10 ++ dot_config/zsh/config.d/functions/icat.zsh | 64 ++++++++ dot_config/zsh/config.d/functions/macOS.zsh | 25 +++ dot_config/zsh/dot_zsh_plugins.txt | 16 ++ dot_config/zsh/dot_zshenv | 3 + dot_config/zsh/dot_zshrc | 153 +++--------------- dot_config/zsh/lscolors | 1 + 10 files changed, 162 insertions(+), 133 deletions(-) create mode 100644 dot_config/zsh/config.d/aliases/chezmoi.zsh create mode 100644 dot_config/zsh/config.d/aliases/empty_general.zsh create mode 100644 dot_config/zsh/config.d/aliases/ls.zsh create mode 100644 dot_config/zsh/config.d/functions/diff.zsh create mode 100644 dot_config/zsh/config.d/functions/icat.zsh create mode 100644 dot_config/zsh/config.d/functions/macOS.zsh create mode 100644 dot_config/zsh/dot_zsh_plugins.txt create mode 100644 dot_config/zsh/lscolors diff --git a/dot_config/zsh/config.d/aliases/chezmoi.zsh b/dot_config/zsh/config.d/aliases/chezmoi.zsh new file mode 100644 index 0000000..1b66682 --- /dev/null +++ b/dot_config/zsh/config.d/aliases/chezmoi.zsh @@ -0,0 +1,10 @@ +alias cm='chezmoi' +alias cma='chezmoi add' +alias cmap='chezmoi apply' +alias cmcd='cd $(chezmoi source-path)' +alias cmd='chezmoi diff' +alias cme='chezmoi edit' +alias cmm='chezmoi merge' +alias cmrm='chezmoi remove' +alias cmst='chezmoi status' +alias cmup='chezmoi update' diff --git a/dot_config/zsh/config.d/aliases/empty_general.zsh b/dot_config/zsh/config.d/aliases/empty_general.zsh new file mode 100644 index 0000000..e69de29 diff --git a/dot_config/zsh/config.d/aliases/ls.zsh b/dot_config/zsh/config.d/aliases/ls.zsh new file mode 100644 index 0000000..240b4db --- /dev/null +++ b/dot_config/zsh/config.d/aliases/ls.zsh @@ -0,0 +1,13 @@ +if [ -x "$(command -v lsd)" ]; then + # add a bit more space between the file icon & name + alias ls='lsd' + alias l='lsd' + alias ll='lsd -l' + alias la='lsd -la' + alias lt='lsd -l --total-size' alias lat='lsd -lA --total-size' + alias tree='lsd --tree' +else + alias l='ls' + alias ll='ls -l' + alias la='ls -lA' +fi diff --git a/dot_config/zsh/config.d/functions/diff.zsh b/dot_config/zsh/config.d/functions/diff.zsh new file mode 100644 index 0000000..4238872 --- /dev/null +++ b/dot_config/zsh/config.d/functions/diff.zsh @@ -0,0 +1,10 @@ +if [ -x "$(command -v colordiff)" ] && [ -x "$(command -v diff-so-fancy)" ]; then + function diff() { + colordiff -N -u "$@" | diff-so-fancy + } + + function kdiff() { + KUBECTL_EXTERNAL_DIFF="colordiff -N -u" + kubectl diff "$@" | diff-so-fancy + } +fi diff --git a/dot_config/zsh/config.d/functions/icat.zsh b/dot_config/zsh/config.d/functions/icat.zsh new file mode 100644 index 0000000..4ecb6ef --- /dev/null +++ b/dot_config/zsh/config.d/functions/icat.zsh @@ -0,0 +1,64 @@ +local MAPPINGS=' +video/3gpp,3gp +video/3gpp2,3g2 +video/MP2T,mpegts +video/MP2T,mpegtsraw +video/mp4,mp4 +video/mpeg,mpeg +video/ogg,ogv +video/quicktime,mov +video/webm,webm +' +# format=$(echo "$MAPPINGS" | grep "$headers" | cut -d "," -f2-) + +function icat() { + function display() { + if [[ "$TERM_PROGRAM" == "WezTerm" ]]; then + cat - | wezterm imgcat + elif [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then + cat - | $(alias imgcat | cut -d "=" -f2-) + elif [[ "$TERM" = "xterm-kitty" ]]; then + cat - | kitty +kitten icat + else + echo "No image viewer defined for this terminal" && return 1 + fi + return 0 + } + function displaySVG() { + [[ ! -x "$(command -v convert)" ]] && echo "convert not found, install imagemagick" && return 1 + convert -background none -density 192 - png:- | display + } + function displayVID() { + ffmpeg -loglevel fatal -hide_banner -i "$1" -vf scale=720:-1 -r 10 -f image2pipe -vcodec ppm pipe:1 | \ + convert -delay 10 -loop 1 - gif:- | \ + display + } + + if [ ! -t 0 ]; then + input="$(cat - | base64)" + headers="$(echo "$input" | base64 -d | file - --mime-type | cut -d " " -f2-)" + + case $headers in + *svg*) echo "$input" | base64 -d | displaySVG ;; + *video*) echo "haven't figured this part out yet" && return 1;; + *image*) echo "$input" | base64 -d | display ;; + *) echo "Unknown file type" && return 1 ;; + esac + elif [[ "$1" == http* ]]; then + case "$(curl -sSLI "$1" | grep -i "^content-type:")" in + *svg*) curl -fsSL "$1" | displaySVG ;; + *video*) echo "haven't figured this part out yet" && return 1;; + *image*) curl -fsSL "$1" | display ;; + *) echo "Unknown file type" && return 1 ;; + esac + else + [[ -z "$1" ]] && echo "Usage: icat " && return 1 + [[ ! -f "$1" ]] && echo "File not found: $1" && return 1 + case "$(file -b --mime-type "$1")" in + *svg*) cat "$1" | displaySVG ;; + *video*) displayVID $1 ;; + *image*) cat "$1" | display ;; + *) echo "Unknown file type" && return 1 ;; + esac + fi +} diff --git a/dot_config/zsh/config.d/functions/macOS.zsh b/dot_config/zsh/config.d/functions/macOS.zsh new file mode 100644 index 0000000..0ea06b9 --- /dev/null +++ b/dot_config/zsh/config.d/functions/macOS.zsh @@ -0,0 +1,25 @@ +# if we're not on mac, exit +[[ "$(uname)" != "Darwin" ]] && exit 0 + +function twm() { + case "$1" in + "start") + brew services start skhd + brew services start yabai + ;; + "stop") + brew services stop skhd + brew services stop yabai + ;; + "restart") + launchctl kickstart -k "gui/${UID}/homebrew.mxcl.skhd" + launchctl kickstart -k "gui/${UID}/homebrew.mxcl.yabai" + ;; + *) + echo "Usage: twm " + return 1 + ;; + esac +} + +alias sbks='launchctl kickstart -k "gui/${UID}/homebrew.mxcl.sketchybar"' diff --git a/dot_config/zsh/dot_zsh_plugins.txt b/dot_config/zsh/dot_zsh_plugins.txt new file mode 100644 index 0000000..4f6977f --- /dev/null +++ b/dot_config/zsh/dot_zsh_plugins.txt @@ -0,0 +1,16 @@ +# omz +ohmyzsh/ohmyzsh path:lib +ohmyzsh/ohmyzsh path:plugins/colored-man-pages +ohmyzsh/ohmyzsh path:plugins/colorize +ohmyzsh/ohmyzsh path:plugins/docker-compose +ohmyzsh/ohmyzsh path:plugins/git +ohmyzsh/ohmyzsh path:plugins/gpg-agent +ohmyzsh/ohmyzsh path:plugins/kubectl + +jeffreytse/zsh-vi-mode + +greymd/docker-zsh-completion + +zsh-users/zsh-autosuggestions +zsh-users/zsh-completions +zsh-users/zsh-syntax-highlighting diff --git a/dot_config/zsh/dot_zshenv b/dot_config/zsh/dot_zshenv index a12900a..00ca35d 100644 --- a/dot_config/zsh/dot_zshenv +++ b/dot_config/zsh/dot_zshenv @@ -32,6 +32,9 @@ export KUBECACHEDIR="$XDG_CACHE_HOME/kube" export KREW_ROOT="$XDG_DATA_HOME/krew" [ -d "$KREW_ROOT" ] && export PATH="$KREW_ROOT/bin:$PATH" export MINIKUBE_HOME="$XDG_DATA_HOME/minikube" +export HOMEBREW_INSTALL_BADGE="☕️" +export HOMEBREW_CLEANUP_MAX_AGE_DAYS=30 +export HOMEBREW_AUTOREMOVE=1 #}}} ### python {{{ export PYENV_ROOT="$XDG_DATA_HOME/pyenv" diff --git a/dot_config/zsh/dot_zshrc b/dot_config/zsh/dot_zshrc index 679be57..6149626 100644 --- a/dot_config/zsh/dot_zshrc +++ b/dot_config/zsh/dot_zshrc @@ -2,42 +2,13 @@ # load starship [[ -x "$(command -v starship)" ]] && eval "$(starship init zsh)" -### plugins via antigen {{{ -# don't pollute $HOME with antigen -ADOTDIR="$XDG_DATA_HOME/antigen" -# bootstrap antigen -if [[ ! -d "$ADOTDIR" ]]; then - mkdir -p "$ADOTDIR" - curl -L https://git.io/antigen > "$ADOTDIR/antigen.zsh" - chmod +x "$ADOTDIR/antigen.zsh" -fi - -# load antigen -source "$ADOTDIR/antigen.zsh" - -antigen use oh-my-zsh - -antigen bundle colored-man-pages -antigen bundle colorize -antigen bundle docker-compose -antigen bundle git -antigen bundle gpg-agent -antigen bundle kubectl - -# omz's vi-mode doesn't vibe with starship -antigen bundle jeffreytse/zsh-vi-mode - -antigen bundle greymd/docker-zsh-completion -antigen bundle zsh-users/zsh-autosuggestions -antigen bundle zsh-users/zsh-completions -antigen bundle zsh-users/zsh-syntax-highlighting - -antigen apply - -# https://github.com/ohmyzsh/ohmyzsh/issues/10728 -if [[ ! -d "$ZSH_CACHE_DIR/completions" ]]; then - mkdir -p "$ZSH_CACHE_DIR/completions" -fi +### plugins via antidote {{{ +autoload -Uz compinit && compinit +zstyle ':antidote:bundle' use-friendly-names 'yes' +antidote_dir="${ZDOTDIR:-$HOME}/antidote" +[ ! -d "$antidote_dir" ] && git clone --depth=1 https://github.com/mattmc3/antidote.git "$antidote_dir" +source "$antidote_dir/antidote.zsh" +antidote load # }}} ### basics {{{ @@ -48,117 +19,35 @@ export SAVEHIST=10000 setopt HIST_IGNORE_ALL_DUPS setopt HIST_IGNORE_DUPS -# use fuck if available -[[ -x "$(command -v thefuck)" ]] && eval $(thefuck --alias) +[ -x "$(command -v thefuck)" ] && eval "$(thefuck --alias)" +[ -x "$(command -v zoxide)" ] && eval "$(zoxide init zsh)" +bindkey -r "^R" +[ -x "$(command -v mcfly)" ] && eval "$(mcfly init zsh)" # }}} ### aliases & functions {{{ ## basics {{{ -if [ -x "$(command -v vivid)" ]; then - export LS_COLORS="$(vivid generate catppuccin-mocha)" -fi - -if [ -x "$(command -v lsd)" ]; then - # add a bit more space between the file icon & name - alias ls='lsd' - alias l='lsd' - alias ll='lsd -l' - alias la='lsd -la' - alias lt='lsd -l --total-size' alias lat='lsd -lA --total-size' - alias tree='lsd --tree' -else - alias l='ls' - alias ll='ls -l' - alias la='ls -lA' -fi +[ -f "$ZDOTDIR/lscolors" ] && export LS_COLORS="$(cat "$ZDOTDIR/lscolors")" # both names for bat export BAT_THEME="catppuccin-mocha" -if [ -x "$(command -v batcat)" ]; then - alias cat='batcat' -elif [ -x "$(command -v bat)" ]; then - alias cat='bat' -fi - -[[ -x "$(command -v zoxide)" ]] && eval "$(zoxide init zsh)" - -# use neovim as vim, if installed -if [[ -x "$(command -v nvim)" ]]; then - alias vim='nvim' - # open vimwiki - alias wiki='nvim -c VimwikiIndex' -fi - -[[ -x "$(command -v taskwarrior-tui)" ]] && alias tt='taskwarrior-tui' +[ -x "$(command -v batcat)" ] && alias cat='batcat' +[ -x "$(command -v bat)" ] && alias cat='bat' +[ -x "$(command -v nvim)" ] && alias vim='nvim' alias wiki='nvim -c VimwikiIndex' +[ -x "$(command -v taskwarrior-tui)" ] && alias tt='taskwarrior-tui' # switch between yubikeys for the same GPG key alias switch_yubikeys='gpg-connect-agent "scd serialno" "learn --force" /bye' - # list tty devices on macOS, useful for Arduino & other boards alias lstty='ls /dev | grep -E "^(tty\.|cu\.)" --color=never' -## }}} - -## OS-dependent tweaks {{{ -# manage yabai & ecosystem easier -function twm() { - case "$1" in - "start") - brew services start skhd - brew services start yabai - ;; - "stop") - brew services stop skhd - brew services stop yabai - ;; - "restart") - launchctl kickstart -k "gui/${UID}/homebrew.mxcl.skhd" - launchctl kickstart -k "gui/${UID}/homebrew.mxcl.yabai" - ;; - *) - echo "Usage: twm " - return 1 - ;; - esac -} -alias sbks='launchctl kickstart -k "gui/${UID}/homebrew.mxcl.sketchybar"' alias onefetch='onefetch --true-color=never' alias mbsync='mbsync --config ~/.config/mbsyncrc' -function icat() { - if [ "$TERM_PROGRAM" = "WezTerm" ]; then - wezterm imgcat "$@" - elif [ "$TERM" = "xterm-kitty" ]; then - kitty +kitten icat "$@" - else - echo 'No image viewer defined for this terminal' - fi -} ## }}} -## development {{{ -# use the combination of colordiff & diff-so-fancy -if [ -x "$(command -v colordiff)" ] && [ -x "$(command -v diff-so-fancy)" ]; then - function diff() { - colordiff -N -u "$@" | diff-so-fancy - } - - function kdiff() { - KUBECTL_EXTERNAL_DIFF="colordiff -N -u" - kubectl diff "$@" | diff-so-fancy - } -fi - -## chezmoi -alias cm='chezmoi' -alias cma='chezmoi add' -alias cmap='chezmoi apply' -alias cmcd='cd $(chezmoi source-path)' -alias cmd='chezmoi diff' -alias cme='chezmoi edit' -alias cmm='chezmoi merge' -alias cmrm='chezmoi remove' -alias cmst='chezmoi status' -alias cmup='chezmoi update' -## }}} +for conf in "$ZDOTDIR"/config.d/**/*.zsh; do + source "${conf}" +done +unset conf function debugnvim() { cd $(mktemp -d) @@ -171,10 +60,8 @@ function debugnvim() { ### languages & frameworks {{{ # python, my old friend [[ -x "$(command -v pyenv)" ]] && eval "$(pyenv init -)" - # ruby [[ -x "$(command -v rbenv)" ]] && eval "$(rbenv init - zsh)" - # node [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # }}} diff --git a/dot_config/zsh/lscolors b/dot_config/zsh/lscolors new file mode 100644 index 0000000..9951f64 --- /dev/null +++ b/dot_config/zsh/lscolors @@ -0,0 +1 @@ +*~=0;38;2;88;91;112:bd=0;38;2;116;199;236;48;2;49;50;68:ca=0:cd=0;38;2;245;194;231;48;2;49;50;68:di=0;38;2;137;180;250:do=0;38;2;17;17;27;48;2;245;194;231:ex=1;38;2;243;139;168:fi=0:ln=0;38;2;245;194;231:mh=0:mi=0;38;2;17;17;27;48;2;243;139;168:no=0:or=0;38;2;17;17;27;48;2;243;139;168:ow=0:pi=0;38;2;17;17;27;48;2;137;180;250:rs=0:sg=0:so=0;38;2;17;17;27;48;2;245;194;231:st=0:su=0:tw=0:*.a=1;38;2;243;139;168:*.c=0;38;2;166;227;161:*.d=0;38;2;166;227;161:*.h=0;38;2;166;227;161:*.m=0;38;2;166;227;161:*.o=0;38;2;88;91;112:*.p=0;38;2;166;227;161:*.r=0;38;2;166;227;161:*.t=0;38;2;166;227;161:*.z=4;38;2;116;199;236:*.7z=4;38;2;116;199;236:*.as=0;38;2;166;227;161:*.bc=0;38;2;88;91;112:*.bz=4;38;2;116;199;236:*.cc=0;38;2;166;227;161:*.cp=0;38;2;166;227;161:*.cr=0;38;2;166;227;161:*.cs=0;38;2;166;227;161:*.di=0;38;2;166;227;161:*.el=0;38;2;166;227;161:*.ex=0;38;2;166;227;161:*.fs=0;38;2;166;227;161:*.go=0;38;2;166;227;161:*.gv=0;38;2;166;227;161:*.gz=4;38;2;116;199;236:*.hh=0;38;2;166;227;161:*.hi=0;38;2;88;91;112:*.hs=0;38;2;166;227;161:*.jl=0;38;2;166;227;161:*.js=0;38;2;166;227;161:*.ko=1;38;2;243;139;168:*.kt=0;38;2;166;227;161:*.la=0;38;2;88;91;112:*.ll=0;38;2;166;227;161:*.lo=0;38;2;88;91;112:*.md=0;38;2;249;226;175:*.ml=0;38;2;166;227;161:*.mn=0;38;2;166;227;161:*.nb=0;38;2;166;227;161:*.pl=0;38;2;166;227;161:*.pm=0;38;2;166;227;161:*.pp=0;38;2;166;227;161:*.ps=0;38;2;243;139;168:*.py=0;38;2;166;227;161:*.rb=0;38;2;166;227;161:*.rm=0;38;2;242;205;205:*.rs=0;38;2;166;227;161:*.sh=0;38;2;166;227;161:*.so=1;38;2;243;139;168:*.td=0;38;2;166;227;161:*.ts=0;38;2;166;227;161:*.ui=0;38;2;249;226;175:*.vb=0;38;2;166;227;161:*.wv=0;38;2;242;205;205:*.xz=4;38;2;116;199;236:*css=0;38;2;166;227;161:*.aif=0;38;2;242;205;205:*.apk=4;38;2;116;199;236:*.arj=4;38;2;116;199;236:*.asa=0;38;2;166;227;161:*.aux=0;38;2;88;91;112:*.avi=0;38;2;242;205;205:*.awk=0;38;2;166;227;161:*.bag=4;38;2;116;199;236:*.bak=0;38;2;88;91;112:*.bat=1;38;2;243;139;168:*.bbl=0;38;2;88;91;112:*.bcf=0;38;2;88;91;112:*.bib=0;38;2;249;226;175:*.bin=4;38;2;116;199;236:*.blg=0;38;2;88;91;112:*.bmp=0;38;2;242;205;205:*.bsh=0;38;2;166;227;161:*.bst=0;38;2;249;226;175:*.bz2=4;38;2;116;199;236:*.c++=0;38;2;166;227;161:*.cfg=0;38;2;249;226;175:*.cgi=0;38;2;166;227;161:*.clj=0;38;2;166;227;161:*.com=1;38;2;243;139;168:*.cpp=0;38;2;166;227;161:*.csv=0;38;2;249;226;175:*.csx=0;38;2;166;227;161:*.cxx=0;38;2;166;227;161:*.deb=4;38;2;116;199;236:*.def=0;38;2;166;227;161:*.dll=1;38;2;243;139;168:*.dmg=4;38;2;116;199;236:*.doc=0;38;2;243;139;168:*.dot=0;38;2;166;227;161:*.dox=0;38;2;148;226;213:*.dpr=0;38;2;166;227;161:*.elm=0;38;2;166;227;161:*.epp=0;38;2;166;227;161:*.eps=0;38;2;242;205;205:*.erl=0;38;2;166;227;161:*.exe=1;38;2;243;139;168:*.exs=0;38;2;166;227;161:*.fls=0;38;2;88;91;112:*.flv=0;38;2;242;205;205:*.fnt=0;38;2;242;205;205:*.fon=0;38;2;242;205;205:*.fsi=0;38;2;166;227;161:*.fsx=0;38;2;166;227;161:*.gif=0;38;2;242;205;205:*.git=0;38;2;88;91;112:*.gvy=0;38;2;166;227;161:*.h++=0;38;2;166;227;161:*.hpp=0;38;2;166;227;161:*.htc=0;38;2;166;227;161:*.htm=0;38;2;249;226;175:*.hxx=0;38;2;166;227;161:*.ico=0;38;2;242;205;205:*.ics=0;38;2;243;139;168:*.idx=0;38;2;88;91;112:*.ilg=0;38;2;88;91;112:*.img=4;38;2;116;199;236:*.inc=0;38;2;166;227;161:*.ind=0;38;2;88;91;112:*.ini=0;38;2;249;226;175:*.inl=0;38;2;166;227;161:*.ipp=0;38;2;166;227;161:*.iso=4;38;2;116;199;236:*.jar=4;38;2;116;199;236:*.jpg=0;38;2;242;205;205:*.kex=0;38;2;243;139;168:*.kts=0;38;2;166;227;161:*.log=0;38;2;88;91;112:*.ltx=0;38;2;166;227;161:*.lua=0;38;2;166;227;161:*.m4a=0;38;2;242;205;205:*.m4v=0;38;2;242;205;205:*.mid=0;38;2;242;205;205:*.mir=0;38;2;166;227;161:*.mkv=0;38;2;242;205;205:*.mli=0;38;2;166;227;161:*.mov=0;38;2;242;205;205:*.mp3=0;38;2;242;205;205:*.mp4=0;38;2;242;205;205:*.mpg=0;38;2;242;205;205:*.nix=0;38;2;249;226;175:*.odp=0;38;2;243;139;168:*.ods=0;38;2;243;139;168:*.odt=0;38;2;243;139;168:*.ogg=0;38;2;242;205;205:*.otf=0;38;2;242;205;205:*.out=0;38;2;88;91;112:*.pas=0;38;2;166;227;161:*.pbm=0;38;2;242;205;205:*.pdf=0;38;2;243;139;168:*.pgm=0;38;2;242;205;205:*.php=0;38;2;166;227;161:*.pid=0;38;2;88;91;112:*.pkg=4;38;2;116;199;236:*.png=0;38;2;242;205;205:*.pod=0;38;2;166;227;161:*.ppm=0;38;2;242;205;205:*.pps=0;38;2;243;139;168:*.ppt=0;38;2;243;139;168:*.pro=0;38;2;148;226;213:*.ps1=0;38;2;166;227;161:*.psd=0;38;2;242;205;205:*.pyc=0;38;2;88;91;112:*.pyd=0;38;2;88;91;112:*.pyo=0;38;2;88;91;112:*.rar=4;38;2;116;199;236:*.rpm=4;38;2;116;199;236:*.rst=0;38;2;249;226;175:*.rtf=0;38;2;243;139;168:*.sbt=0;38;2;166;227;161:*.sql=0;38;2;166;227;161:*.sty=0;38;2;88;91;112:*.svg=0;38;2;242;205;205:*.swf=0;38;2;242;205;205:*.swp=0;38;2;88;91;112:*.sxi=0;38;2;243;139;168:*.sxw=0;38;2;243;139;168:*.tar=4;38;2;116;199;236:*.tbz=4;38;2;116;199;236:*.tcl=0;38;2;166;227;161:*.tex=0;38;2;166;227;161:*.tgz=4;38;2;116;199;236:*.tif=0;38;2;242;205;205:*.tml=0;38;2;249;226;175:*.tmp=0;38;2;88;91;112:*.toc=0;38;2;88;91;112:*.tsx=0;38;2;166;227;161:*.ttf=0;38;2;242;205;205:*.txt=0;38;2;249;226;175:*.vcd=4;38;2;116;199;236:*.vim=0;38;2;166;227;161:*.vob=0;38;2;242;205;205:*.wav=0;38;2;242;205;205:*.wma=0;38;2;242;205;205:*.wmv=0;38;2;242;205;205:*.xcf=0;38;2;242;205;205:*.xlr=0;38;2;243;139;168:*.xls=0;38;2;243;139;168:*.xml=0;38;2;249;226;175:*.xmp=0;38;2;249;226;175:*.yml=0;38;2;249;226;175:*.zip=4;38;2;116;199;236:*.zsh=0;38;2;166;227;161:*.zst=4;38;2;116;199;236:*TODO=1:*hgrc=0;38;2;148;226;213:*.bash=0;38;2;166;227;161:*.conf=0;38;2;249;226;175:*.dart=0;38;2;166;227;161:*.diff=0;38;2;166;227;161:*.docx=0;38;2;243;139;168:*.epub=0;38;2;243;139;168:*.fish=0;38;2;166;227;161:*.flac=0;38;2;242;205;205:*.h264=0;38;2;242;205;205:*.hgrc=0;38;2;148;226;213:*.html=0;38;2;249;226;175:*.java=0;38;2;166;227;161:*.jpeg=0;38;2;242;205;205:*.json=0;38;2;249;226;175:*.less=0;38;2;166;227;161:*.lisp=0;38;2;166;227;161:*.lock=0;38;2;88;91;112:*.make=0;38;2;148;226;213:*.mpeg=0;38;2;242;205;205:*.opus=0;38;2;242;205;205:*.orig=0;38;2;88;91;112:*.pptx=0;38;2;243;139;168:*.psd1=0;38;2;166;227;161:*.psm1=0;38;2;166;227;161:*.purs=0;38;2;166;227;161:*.rlib=0;38;2;88;91;112:*.tbz2=4;38;2;116;199;236:*.tiff=0;38;2;242;205;205:*.toml=0;38;2;249;226;175:*.webm=0;38;2;242;205;205:*.xlsx=0;38;2;243;139;168:*.yaml=0;38;2;249;226;175:*.cabal=0;38;2;166;227;161:*.cache=0;38;2;88;91;112:*.class=0;38;2;88;91;112:*.cmake=0;38;2;148;226;213:*.dyn_o=0;38;2;88;91;112:*.ipynb=0;38;2;166;227;161:*.mdown=0;38;2;249;226;175:*.patch=0;38;2;166;227;161:*.scala=0;38;2;166;227;161:*.shtml=0;38;2;249;226;175:*.swift=0;38;2;166;227;161:*.toast=4;38;2;116;199;236:*.xhtml=0;38;2;249;226;175:*README=0;38;2;30;30;46;48;2;249;226;175:*passwd=0;38;2;249;226;175:*shadow=0;38;2;249;226;175:*.config=0;38;2;249;226;175:*.dyn_hi=0;38;2;88;91;112:*.flake8=0;38;2;148;226;213:*.gradle=0;38;2;166;227;161:*.groovy=0;38;2;166;227;161:*.ignore=0;38;2;148;226;213:*.matlab=0;38;2;166;227;161:*COPYING=0;38;2;147;153;178:*INSTALL=0;38;2;30;30;46;48;2;249;226;175:*LICENSE=0;38;2;147;153;178:*TODO.md=1:*.desktop=0;38;2;249;226;175:*.gemspec=0;38;2;148;226;213:*Doxyfile=0;38;2;148;226;213:*Makefile=0;38;2;148;226;213:*TODO.txt=1:*setup.py=0;38;2;148;226;213:*.DS_Store=0;38;2;88;91;112:*.cmake.in=0;38;2;148;226;213:*.fdignore=0;38;2;148;226;213:*.kdevelop=0;38;2;148;226;213:*.markdown=0;38;2;249;226;175:*.rgignore=0;38;2;148;226;213:*CHANGELOG=0;38;2;30;30;46;48;2;249;226;175:*COPYRIGHT=0;38;2;147;153;178:*README.md=0;38;2;30;30;46;48;2;249;226;175:*configure=0;38;2;148;226;213:*.gitconfig=0;38;2;148;226;213:*.gitignore=0;38;2;148;226;213:*.localized=0;38;2;88;91;112:*.scons_opt=0;38;2;88;91;112:*CODEOWNERS=0;38;2;148;226;213:*Dockerfile=0;38;2;249;226;175:*INSTALL.md=0;38;2;30;30;46;48;2;249;226;175:*README.txt=0;38;2;30;30;46;48;2;249;226;175:*SConscript=0;38;2;148;226;213:*SConstruct=0;38;2;148;226;213:*.gitmodules=0;38;2;148;226;213:*.synctex.gz=0;38;2;88;91;112:*.travis.yml=0;38;2;166;227;161:*INSTALL.txt=0;38;2;30;30;46;48;2;249;226;175:*LICENSE-MIT=0;38;2;147;153;178:*MANIFEST.in=0;38;2;148;226;213:*Makefile.am=0;38;2;148;226;213:*Makefile.in=0;38;2;88;91;112:*.applescript=0;38;2;166;227;161:*.fdb_latexmk=0;38;2;88;91;112:*CHANGELOG.md=0;38;2;30;30;46;48;2;249;226;175:*CONTRIBUTORS=0;38;2;30;30;46;48;2;249;226;175:*appveyor.yml=0;38;2;166;227;161:*configure.ac=0;38;2;148;226;213:*.clang-format=0;38;2;148;226;213:*CHANGELOG.txt=0;38;2;30;30;46;48;2;249;226;175:*.gitattributes=0;38;2;148;226;213:*CMakeCache.txt=0;38;2;88;91;112:*CMakeLists.txt=0;38;2;148;226;213:*LICENSE-APACHE=0;38;2;147;153;178:*CODE_OF_CONDUCT=0;38;2;30;30;46;48;2;249;226;175:*CONTRIBUTORS.md=0;38;2;30;30;46;48;2;249;226;175:*.sconsign.dblite=0;38;2;88;91;112:*CONTRIBUTORS.txt=0;38;2;30;30;46;48;2;249;226;175:*requirements.txt=0;38;2;148;226;213:*package-lock.json=0;38;2;88;91;112:*CODE_OF_CONDUCT.md=0;38;2;30;30;46;48;2;249;226;175:*docker-compose.yml=0;38;2;249;226;175:*.CFUserTextEncoding=0;38;2;88;91;112:*CODE_OF_CONDUCT.txt=0;38;2;30;30;46;48;2;249;226;175