aboutsummaryrefslogtreecommitdiff
path: root/mkshrc
diff options
context:
space:
mode:
authorMitch Riedstra <mitch@riedstra.us>2019-09-12 23:10:58 -0400
committerMitch Riedstra <mitch@riedstra.us>2019-09-12 23:10:58 -0400
commit75ed7b4f86cd883f32b88d5613ff46d8a21f6794 (patch)
treed38260dd255458b2a02193d4e0e2e0f6fe9f6027 /mkshrc
parent879d857e0eafa1f716d9e156862154baf49d7655 (diff)
downloaddotfiles-75ed7b4f86cd883f32b88d5613ff46d8a21f6794.tar.gz
dotfiles-75ed7b4f86cd883f32b88d5613ff46d8a21f6794.tar.xz
Split my shell configuration into multiple files and a build script to generate for multiple shells
Diffstat (limited to 'mkshrc')
-rw-r--r--mkshrc558
1 files changed, 0 insertions, 558 deletions
diff --git a/mkshrc b/mkshrc
deleted file mode 100644
index b03d4be..0000000
--- a/mkshrc
+++ /dev/null
@@ -1,558 +0,0 @@
-# Copyright 2019 Mitchell Riedstra
-
-# Permission to use, copy, modify, and/or distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-# PERFORMANCE OF THIS SOFTWARE.
-
-# If you wish to prevent non KSH shells from running this
-# [ -z "$KSH_VERSION" ] && return
-
-# Restrict this to KSH only
-if ! [ -z "$KSH_VERSION" ] ; then
- precmd() {
- typeset e=$?
-
- (( e )) && print -n "$e|"
- }
- set_ps1() {
- PS1='$(precmd)${BG}${ACCENT_C}${ACCENT_P}${USER_C}${USER:=$(id -un)}@$(hostname)${ACCENT_C}${ACCENT_P} ${ACCENT_P}${PATH_C}${PWD:-?}${ACCENT_C}${ACCENT_P}${END_C}
- ${END_P} '
- export PS1;
- }
- set_root_ps1() {
- PS1='$(precmd)${BG}${ACCENT_C}${ACCENT_P}${HOST_C}$(hostname)${ACCENT_C}${ACCENT_P} ${ACCENT_P}${PATH_C}${PWD:-?}${ACCENT_C}${ACCENT_P}${END_C}
- ${END_P} '
- export PS1;
- }
- # RED: 31, GREEN: 32, YELLOW: 33, BLUE: 34, MAGENTA: 35, CYAN: 36, WHITE: 37, GREY 38. and No color which is 0.
- set_prompt() {
- if [ `id -u` -eq 0 ] ; then
- # Previously
- # Red for root, and no username
- # PS1="$(hostname) \$PWD
- echo $TERM | grep "256color$" > /dev/null 2>&1
- if [ $? -eq 0 ] ; then
- BG=""
- ACCENT_C=""
- ACCENT_P="|"
- HOST_C=""
- PATH_C=""
- END_C=""
- set_root_ps1
- END_P="#"
- else
- BG=""
- ACCENT_C=""
- ACCENT_P="|"
- HOST_C=""
- PATH_C=""
- END_P="#"
- fi
- set_root_ps1
- else
- # Previously
- # PS1="${USER:=$(id -un)}@$(hostname) \$PWD
- echo $TERM | grep "256color$" > /dev/null 2>&1
- if [ $? -eq 0 ] ; then
- BG=""
- ACCENT_C=""
- ACCENT_P="|"
- USER_C=""
- PATH_C=""
- END_C=""
- END_P="%"
- else
- BG=""
- ACCENT_C=""
- ACCENT_P="|"
- USER_C=""
- PATH_C=""
- END_C=""
- END_P="$"
- fi
- set_ps1
- fi
- }
- set_basic_prompt() {
- if [ $(id -u) -eq 0 ] ; then
- PS1='$(precmd)'"${USER:=$(id -un)}@$(hostname) \$PWD # "
- else
- PS1='$(precmd)'"${USER:=$(id -un)}@$(hostname) \$PWD $ "
- fi
- export PS1;
- }
-fi
-
-setaliases() {
- alias ls="ls -F";
- alias lt="ls -tF";
- alias ll="ls -lhF";
- alias llt="ls -tlhF";
- alias g="grep";
- alias m="more";
- alias j="jobs";
- alias p="pwd";
- alias c="column"
- alias ct="column -t"
- alias eg='grep -E'
- alias egv='grep -Ev'
- alias search='grep -niRIE'
- alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'"
- alias setxkbmap-list="man xkeyboard-config"
- alias showsshhosts="cat ~/.ssh/config ~/.ssh/inc/* | awk '/^[hH]ost /{print \$2}'"
- # docker-getip $container_id
- alias docker-getip="docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'"
- alias xa='xargs -I{}'
- alias gdb='gdb -q'
- alias bc='bc -q'
- alias python='/usr/bin/env python3 -q'
- # Fun fact, Gnucash doesn't play nice when built against musl as a libc...
- # go figure
- alias gnucash_locale_fix='export LC_ALL=C; unset LANGUAGE; gnucash'
-
- if [ "$(uname)" = "Linux" ] ; then
- # Sets capslock to be another control key, only works with PS2 keyboards
- alias unfuck_capslock='setkeycodes 3a 29'
- fi
-}
-
-setcoloraliases() {
- if [ `uname` = "Linux" ] ; then
- alias ls="ls --color=auto -F";
- alias lm='ls -lh --color=force | more';
- elif [ `uname` = "FreeBSD" ] ; then
- alias ls="ls -FG";
- alias lm='CLICOLOR_FORCE="1" ls -l | less -r';
- fi
-
- grep --help | grep fucks - >/dev/null 2>&1
- if [ $? -eq 0 ] ; then
- alias grep="grep --color=auto";
- alias egrep='egrep --color=auto'
- alias search='egrep --color=auto -rnI';
- fi
-
- alias diff="$(which diff colordiff 2>/dev/null | tail -n 1)";
- alias t='tree -CdL'
-}
-
-setsudoaliases() {
- # Prefer doas if available, as it's likely to be configured by me over sudo
- _sudo="$(which doas sudo 2>/dev/null | sed 1q)"
- if [ -x "$_sudo" ] ; then
- # Package managers
- # Isn't it amazing how many distros you end up using?
- alias apt-get="$_sudo apt-get"
- alias apt="$_sudo apt"
- alias apt-file="$_sudo apt-file"
- alias yum="$_sudo yum"
- alias dnf="$_sudo dnf"
- alias pacman="$_sudo pacman"
- alias xbps-install="$_sudo xbps-install"
- alias xbps-remove="$_sudo xbps-remove"
- alias pkg="$_sudo pkg"
- alias pkg_add="$_sudo pkg_add"
-
- # Filesystem utilities
- alias zfs="$_sudo zfs"
- alias zpool="$_sudo zpool"
- alias btrfs="$_sudo btrfs"
- alias mount="$_sudo mount"
- alias umount="$_sudo umount"
- fi
-}
-
-# Usage debugstarttls $ipaddr:$port
-debugstarttls() {
- openssl s_client -starttls smtp -crlf -connect "$1" "$2"
-}
-
-randmacgen() {
- if [ "$(uname)" = "FreeBSD" ] ; then
- LC_COLLATE=c
- fi
- tr -c -d '0123456789abcdef' < /dev/urandom \
- | head -c 12 \
- | sed 's!^M$!!;s!\-!!g;s!\.!!g;s!\(..\)!\1:!g;s!:$!!'
- echo ""
-}
-# Run Steam
-unfuck_steam() {
-LD_PRELOAD='/usr/$LIB/libstdc++.so.6 /usr/$LIB/libgcc_s.so.1 /usr/$LIB/libxcb.so.1 /usr/$LIB/libgpg-error.so' /usr/bin/steam
-}
-# First argument is the interface on which to scan
-ipv6_local_hosts() {
-if ! [ -z $1 ] ; then
- interface="$1"
- ping6 -c 3 ff02::2%$interface \
- | grep 'bytes from' \
- | awk '{print $4}' \
- | sort \
- | uniq \
- | sed -e's/:$//'
-else
- echo "You need to specify an interface"
-fi
-}
-pulltermcolors() {
- file="$HOME/bin/terminal-colors"
- if ! [ -d $HOME/bin ] ; then
- mkdir $HOME/bin
- fi
- pull -u ${UPDATE_URL}/terminal-colors -f $file
- chmod +x $file
-}
-set_nocaps() {
- setxkbmap -layout "us,de"
- setxkbmap -option ctrl:nocaps
- setxkbmap -option shift:breaks_caps
- setxkbmap -option numpad:microsoft
- setxkbmap -option grp:alt_space_toggle
-}
-set_go() {
- export GOPATH="${GOPATH:-$HOME/go}"
- export PATH="$GOPATH/bin:$PATH"
-
- _gobin="/usr/local/go/bin"
- if [ -e "$_gobin" ] ; then
- export PATH="$_gobin:$PATH"
- fi
-}
-pkg_switch_branch() {
- _f="/etc/pkg/FreeBSD.conf"
- cp $_f ${_f}.orig
- sed -e's/quarterly/latest/' < ${_f}.orig > ${_f}
-}
-# System setup `chroot`, useful mainly on Linux
-syschroot() {
- CHDIR=$1
- PROG=$2
- CUR_PS1="$PS1"
- PS1="(CHROOT) # "
- mount -t proc none "$CHDIR/proc"
- mount -o bind /dev "$CHDIR/dev"
- mount -o bind /dev/pts "$CHDIR/dev/pts"
- mount -o bind /sys "$CHDIR/sys"
- mount -o bind /run "$CHDIR/run"
- if [ "$PROG" = "/bin/bash" ] ; then
- PS1="(CHROOT) [ \u@\h \w ] # "
- fi
- chroot "$CHDIR" "$PROG"
- umount "$CHDIR/dev/pts" "$CHDIR/dev" "$CHDIR/sys" "$CHDIR/proc" \
- "$CHDIR/run"
- PS1="$CUR_PS1"
-}
-
-# Usage: dir_oct:file_oct path
-setperms() {
- _perm="$1"; shift
- dir_perms=$(echo "$_perm" | awk -F: '{print $1}')
- file_perms=$(echo "$_perm" | awk -F: '{print $2}')
- find "$@" -type f -print0 | xargs -0 chmod "$file_perms"
- find "$@" -type d -print0 | xargs -0 chmod "$dir_perms"
-}
-
-set_title() {
- printf $'\033]0;'"%s"$'\007' "$1"
-}
-
-set_my_title() {
- _load="Load Avg: $(_sys_load)"
- _free_mem="M Free: $(_sys_memory)"
- _uptime="Uptime: $(_sys_uptime)"
- set_title "$(id -un)[$(hostname)] -- $_load $_free_mem $_uptime"
-}
-
-_sys_memory() {
- ! [ -e $(which vmstat) ] && return
- if [ `uname` = "Linux" ] ; then
- vmstat | tail -n1 | awk '{print $4/1024}' | sed -e's/\..*$//g'
- elif [ `uname` = "FreeBSD" ] ; then
- vmstat | tail -n1 | awk '{print $5/1024}' | sed -e's/\..*$//g'
- elif [ `uname` = "OpenBSD" ] ; then
- vmstat | sed -n '$p' | awk '{print $4}' | sed 's/M$//'
- fi
-}
-
-_sys_load() {
- # Works on BSD too, neat.
- uptime | sed -re's/^.*load averages?: ([0-9]+\.[0-9]+).*$/\1/g'
-}
-
-_sys_uptime() {
- # Took awhile to figure out, but this works on BSD as well
- uptime | sed -re's/^.*up[ ]+//g' -e's/^([^,]*),.*/\1/g' -e's/^([^ ]+)[ ]*(.).*/\1\2/g'
-}
-
-
-timestamp() {
- date +%m.%d.%y_%H.%M.%S
-}
-
-checkSSHAgent() {
- ssh_agent_conf="$HOME/.ssh/agent"
- if [ -e "$ssh_agent_conf" ] ; then
- . "$ssh_agent_conf"
- fi
- if ! ps -eo pid | grep -q "$SSH_AGENT_PID" \
- || ! [ -e "$ssh_agent_conf" ] \
- || [ -z "$SSH_AGENT_PID" ] ; \
- then
- ssh-agent -s | grep -v echo > "$ssh_agent_conf"
- . "$ssh_agent_conf"
- fi
-}
-
-pull() {
- url=""
- file=""
- while [ $# -gt 0 ] ; do
- case $1 in
- -f)
- file="$2"
- shift; shift; ;;
- -u)
- url="$2"
- shift; shift; ;;
- esac
- done
- CMD="$(which curl wget fetch 2>/dev/null | tail -n1)"
-
- case $CMD in
- *curl) "$CMD" "$url" > "$file" ;;
- *wget) "$CMD" "$url" -O "$file" ;;
- *fetch) "$CMD" "$url" -o "$file" ;;
- esac
-}
-pulldotfile() {
- file="$1"
- pull -u "${UPDATE_URL}${file}" -f "$HOME/.${file}"
-}
-_make_ssh_dir_if_not_exists() {
- auth_keys="$HOME/.ssh/authorized_keys"
- if ! [ -d $HOME/.ssh ] ; then mkdir $HOME/.ssh ; fi
- chmod 700 $HOME/.ssh
- chmod 600 $auth_keys
-}
-_pullkeys() {
- url="$1"; shift
- _timestamp="$(timestamp)"
- _make_ssh_dir_if_not_exists
- auth_keys="$HOME/.ssh/authorized_keys"
- mv "$auth_keys" "${auth_keys}.${_timestamp}" || \
- echo "Authorized Keys do not currently exist"
- pull -u "$url" -f "$auth_keys" || \
- mv "${auth_keys}.${_timestamp}" "$auth_keys"
- ssh-keygen -lf "$auth_keys" || \
- mv "${auth_keys}.${_timestamp}" "$auth_keys"
-
- chmod 600 $auth_keys
-}
-pullkeys() {
- file="keys/$1"; shift;
- url="${UPDATE_URL}${file}"
- _pullkeys "$url"
-}
-pullkeys_github() {
- _username="$1"; shift;
- url="https://github.com/${_username}.keys"
- _pullkeys "$url"
-}
-updatetmuxconf() {
- pulldotfile "tmux.conf"
- pulldotfile "tmux_helper.sh"
- if ! [ -e $HOME/.tmux.conf.local ] && [ `id -u` -eq 0 ] ; then
- # If I ever change the color from green this will have to be updated I guess
- grep 'green' $HOME/.tmux.conf | sed -e's/green/red/g' > $HOME/.tmux.conf.local
- elif ! [ -e $HOME/.tmux.conf.local ] ; then
- touch $HOME/.tmux.conf.local
- fi
-}
-updategitconf() {
- file="gitconfig/$1"
- pull -u "${UPDATE_URL}${file}" -f "$HOME/.gitconfig"
-}
-updateshell() {
- pulldotfile "mkshrc"
- . $HOME/.mkshrc
-}
-updatevimrc() {
- OLDWD="$(pwd)"
- cd $HOME
- git clone $VIM_GIT_URL .vim
- if [ $? -gt 0 ] ; then
- cd $HOME/.vim
- git pull origin master
- else
- cd $HOME/.vim
- fi
- ./setup.sh && \
- ./link-vimrc.sh
- cd $OLDWD
-}
-updatevimrc_basic() {
- pull -u "$VIM_BASIC_URL" -f ~/.vimrc
-}
-placebasicvimrc() {
- if [ -z "$1" ] ; then
- echo All arguments are passed to SSH, but you need at least one
- return
- fi
- _TMP="$(mktemp)"
- if [ -z "$_TMP" ] ; then
- echo Cannot continue, temp file cannot be zero length!;
- return
- fi
- pull -u "$VIM_BASIC_URL" -f "$_TMP"
- cat "$_TMP" | ssh "$@" "cat - > ~/.vimrc"
- rm "$_TMP"
-}
-
-setcolorterminal() {
- case $TERM in
- xterm-kitty)
- # Prevent xterm-kitty from being turned into xterm-256color
- return;
- ;;
- xterm*)
- export TERM=xterm-256color
- # printf $'\033]0;'"$(hostname)"$'\007';
- ;;
- screen*)
- export TERM=screen-256color
- # printf $'\033k'"$(whoami)"$'\033\\';
- ;;
- esac
-}
-
-setlscolors() {
- if [ "$(uname)" = "Linux" ] ; then
- export LS_COLORS='di=36;40:ln=1;31;40:so=32;40:pi=33;40:ex=1;32;40:bd=34;46:cd=34;43:su=0;41:sg=0;46:tw=0;42:ow=0;43:'
- elif [ "$(uname)" = "FreeBSD" ] ; then
- export LSCOLORS='gxBxcxdxCxegedabagacad'
- fi
-}
-
-colormanpages() {
- export LESS_TERMCAP_mb=""
- export LESS_TERMCAP_md=""
- export LESS_TERMCAP_me=""
- export LESS_TERMCAP_se=""
- export LESS_TERMCAP_so=""
- export LESS_TERMCAP_ue=""
- export LESS_TERMCAP_us=""
-
- ## Gentoo is nuts
- export GROFF_NO_SGR=1
-}
-
-set_editor() {
- if [ -z "$EDITORS" ] ; then
- export EDITOR="vi"
- else
- export EDITOR="$(which $EDITORS 2>/dev/null | tail -n1)"
- fi
-
- export VISUAL="$EDITOR"
-
- # Set an alias for our editor of choice
- alias vi="$EDITOR"
- alias vim="$EDITOR"
- alias edit="$EDITOR"
- alias e="$EDITOR"
-}
-set_pager() {
- export PAGER="$(which cat more less 2>/dev/null | tail -n1)"
-}
-set_lang() {
-export CHARSET="$1";
-export LANG="$1";
-}
-
-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-NEWLINE='$(printf "\n")'
-SHELL_CONFIG=".mkshrc"
-COLOR=0
-MY_LANG="en_US.UTF-8"
-
-export EDITORS="ed vi vim "
-export PATH="$HOME/bin:$PATH"
-
-UPDATE_URL="https://www.rygel.us/etc/"
-VIM_GIT_URL="https://git.riedstra.us/mitch/vim-cfg.git"
-VIM_BASIC_URL="https://git.riedstra.us/mitch/vim-cfg.git/plain/basic.vim"
-
-PRELOAD="$HOME/${SHELL_CONFIG}.pre"
-LOCAL="$HOME/${SHELL_CONFIG}.local"
-
-# Don't put any variables below this, as they can't be overridden before the
-# functions if you do that
-
-# Load pre config
-if [ -e $PRELOAD ] ; then
- . $PRELOAD
-fi
-
-set_go
-set_pager
-set_editor
-set_lang $MY_LANG
-
-setaliases
-setsudoaliases
-
-
-# Nasty conditional for support of many different shells
-if
- [ $SHELL = "/bin/ksh" ] ||
- [ $SHELL = "/bin/mksh" ] ||
- [ $SHELL = "/usr/bin/mksh" ] ||
- [ $SHELL = "/usr/local/bin/mksh" ] ||
- ! [ -z "$KSH_VERSION" ]
-then
- export HISTFILE="$HOME/.ksh_history"
- set -o emacs
- bind ^L=clear-screen
- if [ $COLOR -eq 1 ] ; then
- set_prompt
- else
- set_basic_prompt
- fi
-elif [ $SHELL = "/bin/zsh" ] ||
- [ $SHELL = "/usr/bin/zsh" ] ||
- [ $SHELL = "/usr/local/bin/zsh" ] ; then
- set -o emacs
-elif [ $SHELL = "/bin/sh" ] && [ "$(uname)" = "FreeBSD" ] ; then
- set -o emacs
- export PS1="$(whoami)"'@\h:\w \$ '
-else
- [ $SHELL = "/bin/sh" ] && set_super_basic_prompt
-fi
-
-if [ $COLOR -eq 1 ] ; then
- colormanpages
- setcolorterminal
- setcoloraliases
- setlscolors
-fi
-
-# Include local configuration options
-if [ -f $LOCAL ] ; then
- . $LOCAL
-fi