# ksh environment file ######################################################################## # ENVIRONMENT VARIABLES ######################################################################## ### SEARCH PATHS PATH=~/.bin\ :~/.local/bin\ :/bin\ :/sbin\ :/usr/bin\ :/usr/sbin\ :/usr/local/bin\ :/usr/local/sbin\ :/usr/X11R6/bin\ :/usr/games\ :/usr/ports/infrastructure/bin JAVA_HOME=/usr/local/jdk-11/bin PATH=${PATH}:${JAVA_HOME} export PATH ### LANGUAGE LANG=en_US.UTF-8 LC_MESSAGES=C LC_NUMERIC=C LC_TIME=de_DE.UTF-8 export LANG LC_ALL LC_MESSAGES LC_NUMERIC LC_TIME ### SOFTWARE PREFERENCES EDITOR="vim" VISUAL="vim" BROWSER="chrome" PAGER="less" export EDITOR VISUAL BROWSER PAGER PRINTER="rp" export PRINTER ######################################################################## # STOP HERE IF NON INTERACTIVE ######################################################################## [[ $- != *i* ]] && return ######################################################################## # MANDATORY ENVIRONMENT ######################################################################## ### HISTORY HISTCONTROL=ignoredups:ignorespace:erasedups HISTFILE=$HOME/.ksh-history HISTSIZE=2000 export HISTCONTROL HISTFILE HISTSIZE # LESS LESS="-giJmR--tilde" LESSHISTFILE="$HOME/.less-history" export LESS LESSHISTFILE ######################################################################## # PROMPT (SIMPLE) ######################################################################## PS1="\h|\${?}\w\\$ " ######################################################################## # SHELL SETTINGS ######################################################################## ulimit -c 0 stty -ixon -ixoff set -o emacs set bell-style none alias sudo="doas" alias su="doas su" ######################################################################## # MODULE LOADER ######################################################################## load() { [ -f ~/.ksh/$1 ] && . ~/.ksh/$1; } load environment.ksh load functions.ksh load aliases.ksh load email.ksh load porttools.ksh load remind.ksh load ytdl.ksh ######################################################################## # ALIASES ######################################################################## # packages alias pkg_add="doas \pkg_add ${PKGOPT}" alias pkg_delete="doas \pkg_delete ${PKGOPT}" alias pkg_info="\pkg_info ${PKGOPT}" # mount alias mount_msdos="doas \mount_msdos -o nodev,nosuid,noatime -u 1000 -g 1000" mount_tank() { awk '$3=="nfs"{print $2}' /etc/fstab | xargs -n1 doas mount; } umount_tank() { awk '$3=="nfs"{print $2}' /etc/fstab | xargs -n1 doas umount; } pw() { pwgen -1 -y --remove-chars=\~\`\"\'{}\(\)\[\]\*.\;\|,\<\> 22; } # monitoring lr() { [ -z "$1" ] && return 2 [ -z "$2" ] \ && ssh -t "$1" -- doas tail -n 4000 -f /var/log/{messages,daemon,secure,maillog} \ || ssh -t "$1" -- doas tail -n 4000 -f /var/log/{messages,daemon,secure,maillog} \ | fgrep -i "$2" } l() { [ -z "$1" ] \ && doas tail -n 4000 -f /var/log/{messages,daemon,secure,maillog} \ || doas tail -n 4000 -f /var/log/{messages,daemon,secure,maillog} \ | fgrep -i "$1" } # cam alias camformats="ffplay -f v4l2 -list_formats all -i /dev/video" alias cam="ffplay -loglevel quiet -f v4l2 -input_format mjpeg -video_size 640x480 -i /dev/video" setcam() { _dev=$1 echo ln -sf /dev/video${_dev:=0} /dev/video doas ln -sf /dev/video${_dev:=0} /dev/video } alias mypkg_add="PKG_PATH=http://openbsd.codevoid.de/pub/OpenBSD/snapshots/packages/amd64 pkg_add -Dsnap -Dunsigned" alias mypkg_info="PKG_PATH=http://openbsd.codevoid.de/pub/OpenBSD/snapshots/packages/amd64 pkg_info -Dsnap -Dunsigned" openbsd-gitupdate() { cd ~/code/OpenBSD/src && git pull cd ~/code/OpenBSD/ports && git pull cd ~/code/OpenBSD/xenocara && git pull cd ~/code/OpenBSD } # mygdb mygdb() { [ -z $3 ] \ && echo "mygdb " \ && return break="$1"; shift; prog="$1"; shift; args="$@"; egdb -ex "break $break" -ex "run $args" $prog } ######################################################################## # KERNEL STUFF ######################################################################## alias update-ksh="cd /usr/src/bin/ksh \ && doas make clean \ && doas make obj \ && doas make -j $MAKE_JOBS \ && doas make install" ######################################################################## # TWITCH FROM CLI ######################################################################## alias twitch-play="mpv https://www.twitch.tv/c0dev0id" twitch-stream() { local API_KEY=$(pass Internet/Twitch | head -1) local RES=$(xrandr | grep "*+" | awk '{print $1}') local FAUX_OPTS="-d snd/default -m -vmic 5.0 -vmon 0.2 -r $RES -f 20 -b 4000" fauxstream $FAUX_OPTS rtmp://live-ams.twitch.tv/app/$API_KEY } ######################################################################## # DOTFILES WITH GIT ######################################################################## alias config='git --git-dir=${HOME}/.cfg/ --work-tree=${HOME}' dotfiles_autoupdate() { config add -u && \ config commit -m "Update $(date +"%Y-%m-%d %H:%M") \ $(uname -s)/$(uname -m)-$(hostname -s)" && config push } dotfiles_init() { git --no-replace-objects clone --bare --depth 1 \ _gitea@git.uugrn.org:sdk/dotfiles.git $HOME/.cfg; config config --local status.showUntrackedFiles no; config checkout -f } ######################################################################## # FILE SHARING ######################################################################## doupload-http() { [ ! -f "$1" ] && return 2 chmod ugo+r "$1" _name=$(basename "$1"); scp -r "$1" codevoid.de:/tmp ssh codevoid.de "doas mv /tmp/$_name /home/www/htdocs/http/$_name" echo "https://codevoid.de/h/$_name"; } doupload-gopher() { [ ! -f "$1" ] && return 2 chmod ugo+r "$1" _name=$(basename "$1"); scp -r "$1" codevoid.de:/tmp ssh codevoid.de "doas mv /tmp/$_name /home/www/htdocs/gopher/p/$_name" case "$(file --mime-type -b "$1")" in image/*) S="I";; text/*) S="0";; message/*) S="0";; */x-shellscript) S="0";; */pgp-keys) S="0";; application/*) S="9";; esac echo "https://codevoid.de/$S/p/$_name"; echo "gopher://codevoid.de/$S/p/$_name"; } ######################################################################## # KSH COMPLETIONS ######################################################################## [ -f $HOME/.ksh-complete ] && . $HOME/.ksh-complete ######################################################################## # SCREEN CONFIGURATION ######################################################################## xr_primary() { xrandr --listmonitors | awk '/ 0:/{ print $4 }' } xr_secondary() { xrandr | awk '/ connected/ { print $1 }' | fgrep -v $(xr_primary) } xr_off() { xrandr | awk '/disconnected/ { print $1 }' } xrandr_list() { echo "primary: " $(xr_primary) echo "secondary:" $(xr_secondary) echo "offline: " $(xr_off) } xrandr_set() { set -x for scr in $(xr_secondary) do xrandr --output $scr --$1 $(xr_primary) --$2 $3 done for scr in $(xr_off) do xrandr --output $scr --off done } xrandr_only_primary() { pri=$(xr_primary) sec=$(xr_secondary) off=$(xr_off) set -x xrandr --output $pri --auto for scr in $sec $off do xrandr --output $scr --off done } xrandr_mirror() { xrandr_set same-as auto } xrandr_mirror_hd() { xrandr_set same-as mode 1920x1080 } xrandr_extend_above() { xrandr_set above auto } xrandr_extend_right() { xrandr_set right-of auto } xrandr_extend_left() { xrandr_set left-of auto } xrandr_native() { xrandr --output $(xr_primary) --auto } xrandr_720p() { xrandr --output $(xr_primary) --mode 1280x720 } xrandr_1080p() { xrandr --output $(xr_primary) --mode 1920x1080 } xrandr_4k() { xrandr --output $(xr_primary) --mode 3840x2160 } alias xrandr_portrait="xrandr --output DP-1 --rotate left" alias xrandr_mirror_hdmi="xrandr --output HDMI-A-0 --same-as eDP --mode 1920x1080" ######################################################################## # GNUPG AGENT ######################################################################## #eval $(keychain -Q -q --noask --agents ssh,gpg --noask --eval --eval id_rsa id_dsa id_ed25519) if [ -f $HOME/.enable_gpg ] then GPG_TTY=$(tty) SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket) SSH_AUTH_SOCK_EXTRA=${SSH_AUTH_SOCK%%.ssh}.extra export GPG_TTY SSH_AUTH_SOCK SSH_AUTH_SOCK_EXTRA pgrep -qu sdk gpg-agent || gpg-connect-agent -q /bye fi