You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

138 lines
4.0 KiB
Bash

# vim:ft=zsh:fenc=utf-8
# Prompt
eval "$(starship init zsh)"
# Plugins - Antigen
ADOTDIR="$HOME/.local/share/antigen"
if [[ ! -d "$ADOTDIR" ]]; then
mkdir -p "$ADOTDIR"
curl -L https://git.io/antigen > "$ADOTDIR/antigen.zsh"
chmod +x "$ADOTDIR"
fi
# Load Antigen
source "$ADOTDIR/antigen.zsh"
antigen use oh-my-zsh
antigen bundle colored-man-pages
antigen bundle colorize
antigen bundle command-not-found
antigen bundle git
antigen bundle jeffreytse/zsh-vi-mode
antigen bundle zsh-users/zsh-autosuggestions
antigen bundle zsh-users/zsh-completions
antigen bundle zsh-users/zsh-syntax-highlighting
antigen apply
# Make 'less' friendlier for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# Forcing 256 bit colour
export TERM=xterm-256color
# Keep History
export HISTFILE="$HOME/.zhistory"
export HISTSIZE=10000
export SAVEHIST=10000
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_IGNORE_DUPS
# Coloured GCC warnings and errors
export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
# Color support of 'ls' and also add aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias grep='grep --color=auto'
fi
# Make directories & cd into them
function mkcd() {
mkdir -p $@ && cd ${@:$#}
}
# Display images in the terminal
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 -i "$1" -vf scale=720:-1 -r 10 -f image2pipe -vcodec ppm - &>/dev/null | 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 <file|url>" && 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
}
# export M2_HOME="$HOME/.local/bin/apache-maven-3.8.6/bin"
# export PATH="$PATH:$M2_HOME"
# PATH
export PATH="$PATH:$HOME/.local/bin"
export PATH="$PATH:$HOME/.local/scripts"
# JetBrains Toolbox
export PATH="$PATH:$HOME/.local/share/JetBrains/Toolbox/scripts"
# Go
export PATH="$PATH:$HOME/.local/share/go/bin"
# Rust
source "$HOME/.cargo/env"
# Haskell (ghcup-env)
[ -f "$HOME/.ghcup/env" ] && source "$HOME/.ghcup/env"
# Node
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
# Deno
export DENO_INSTALL="$HOME/.deno"
export PATH="$DENO_INSTALL/bin:$PATH"
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"