From d877aef2629619f9ca43469441505ceb585b34f7 Mon Sep 17 00:00:00 2001 From: ds6 Date: Wed, 11 Apr 2018 22:10:09 -0500 Subject: [PATCH] fixed zsh, renamed l -> lck, netbsd support zsh now sets its own path in zshrc zshenv.local is now loaded last all bsdisms have been moved to blocks netbsd support added for zsh fixed wscons issues with xterm escapes workaround for %f prompt escape on wscons --- base/.xinitrc | 0 base/.zshenv | 8 +- base/.zshrc | 99 ++++++++++++++++--------- bin/{l => lck} | 10 ++- install.sh | 37 ++++----- share/{l => lck}/overlay.png | Bin src/{share/l => lck/share}/overlay.xcf | Bin 7 files changed, 90 insertions(+), 64 deletions(-) mode change 100755 => 100644 base/.xinitrc rename bin/{l => lck} (77%) rename share/{l => lck}/overlay.png (100%) rename src/{share/l => lck/share}/overlay.xcf (100%) diff --git a/base/.xinitrc b/base/.xinitrc old mode 100755 new mode 100644 diff --git a/base/.zshenv b/base/.zshenv index 96c6d52..ab47bdf 100644 --- a/base/.zshenv +++ b/base/.zshenv @@ -1,7 +1,3 @@ -if [ -f ~/.zshenv.local ]; then - source ~/.zshenv.local -fi - export EDITOR=vim export XDG_CONFIG_HOME=~/etc export XDG_CONFIG_DIRS=~/.config:/etc/xdg @@ -14,3 +10,7 @@ export LS_COLORS='di=34:ln=35:so=32:pi=33:ex=31:bd=46;34:cd=43;34:su=41;30:sg=46 export GREP_OPTIONS=--color=auto export PYTHONSTARTUP=~/.pythonrc + +if [[ -f ~/.zshenv.local ]]; then + source ~/.zshenv.local +fi diff --git a/base/.zshrc b/base/.zshrc index 2285889..d688d2e 100644 --- a/base/.zshrc +++ b/base/.zshrc @@ -1,72 +1,74 @@ -## options +### options setopt autocd extendedglob unsetopt beep -## history +### path +# typeset -U makes every array entry unique; /usr/{pkg,local} are bsdisms +typeset -U path +path=({~/,/,/usr/}sbin {~/,/,/usr/}bin /usr/pkg/{s,}bin /usr/X11R{7,6}/bin + /usr/local/{s,}bin $path) + +### history setopt appendhistory HISTFILE=~/.histfile HISTSIZE=100 SAVEHIST=100 -## keys +### keys bindkey -v KEYTIMEOUT=1 -# xorg +## xorg bindkey "^[[7~" beginning-of-line #Home bindkey -a "^[[7~" beginning-of-line bindkey "^[[8~" end-of-line #End bindkey -a "^[[8~" end-of-line bindkey "^[[3~" delete-char #Del bindkey -a "^[[3~" delete-char -# bsd vt -bindkey "^[[H" beginning-of-line #Home -bindkey -a "^[[H" beginning-of-line -bindkey "^[[F" end-of-line #End -bindkey -a "^[[F" end-of-line - +## history search autoload -Uz up-line-or-beginning-search down-line-or-beginning-search zle -N up-line-or-beginning-search zle -N down-line-or-beginning-search [[ -n "$key[Up]" ]] && bindkey -- "$key[Up]" up-line-or-beginning-search [[ -n "$key[Down]" ]] && bindkey -- "$key[Down]" down-line-or-beginning-search -## aliases +### aliases alias h="history -25" alias j="jobs -l" alias l="ls -AF" alias ll="ls -lAFho" -# ps +## ps local p="ps -aSdxwwouser=USR -ogroup=GRP -opid,nice=N \ -o%cpu,%mem,tt,stat,start=START -oetime,command | ${PAGER:-more} -Se" alias pa="$p" alias spa="sudo $p" unset p -# sound source -function s { sysctl hw.snd.default_unit${1:+\=$1} } -# py venv +## py venv alias va="source bin/activate" alias vd="deactivate" -# be paranoid +## be paranoid alias cp='cp -ip' alias mv='mv -i' -alias rm='rm -I' -# ports -function portpkg { - case "$1" { - build|run) - sudo pkg install -AU $(make ${1}-depends-list | - sed 's_/usr/ports/_ _' | tr -d '\n') - ;; - *) echo "Usage: \`portpkg ' in a port directory" - return 1;; - } +if [[ "$OSTYPE" = "freebsd" ]] { + # don't confirm if only a few files are deleted + alias rm='rm -I' +} else { + alias rm='rm -i' } -## prompt +### prompt setopt prompt_subst -PROMPT='%F{$VICOL}%n%f@%F{$VICOL}%2m%f%(?../%F{red}$?%f)%# ' -RPROMPT='%F{yellow}${vcs_info_msg_0_:-%~}%f %T' +local f +if [[ "$TERM" = "wsvt25" ]] { + # fix for wscons + f="%F{white}" +} else { + f="%f" +} +PROMPT='%F{$VICOL}%n'"$f"'@%F{$VICOL}%2m'"$f"'%(?../%F{red}$?'"$f"')%# ' +RPROMPT='%F{yellow}${vcs_info_msg_0_:-%~}'"$f"' %T' +unset f +## change color based on zle vi mode function zle-line-init zle-keymap-select { VICOL="${${KEYMAP:/vicmd/red}:/(main|viins)/green}" zle reset-prompt @@ -74,21 +76,22 @@ function zle-line-init zle-keymap-select { zle -N zle-line-init zle -N zle-keymap-select +## vcs autoload -Uz vcs_info zstyle ':vcs_info:*' enable git -zstyle ':vcs_info:git*' formats "%c%u%%F{green}%r/%b%%f/%%F{yellow}%S%%f" -zstyle ':vcs_info:git*' actionformats "%%F{red}(%a)%%f %c%u%%F{green}%r/%b%%f/\ -%%F{yellow}%S%%f" +zstyle ':vcs_info:git*' formats "%c%u%%F{green}%r/%b%%F{white}/%%F{yellow}%S%%f" +zstyle ':vcs_info:git*' actionformats "%%F{red}(%a)$p %c%u%%F{green}%r/%b$p/%%F{yellow}%S$p" #zstyle ':vcs_info:git*' check-for-changes true #too slow zstyle ':vcs_info:git*:.dotfiles' check-for-changes true zstyle ':vcs_info:git*' check-for-staged-changes true zstyle ':vcs_info:git*' stagedstr "%F{blue}+" zstyle ':vcs_info:git*' unstagedstr "%F{red}*" -# hooks +### hooks +local _exectime function precmd { # change terminal title - print -Pn "\e]0;%(1j,%j,)%#${SSH_CLIENT+$USER@$HOST:}%~\a" + print -Pn "\e]2;%(1j,%j,)%#${SSH_CLIENT+$USER@$HOST:}%~\e\\" # update vcs vcs_info # bell if exec takes 5s @@ -96,7 +99,7 @@ function precmd { } function preexec { # change terminal title to show command - print -Pnf "\e]0;%s\a" "%#${SSH_CLIENT+$USER@$HOST:}$1" + print -Pnf "\e]2;%s\e\\" "%#${SSH_CLIENT+$USER@$HOST:}$1" # save last exec time for bell _exectime=$SECONDS } @@ -104,6 +107,30 @@ function chpwd { l } +### freebsd-specific +if [[ "$OSTYPE" = "freebsd" ]] { + ## vt binds + bindkey "^[[H" beginning-of-line #Home + bindkey -a "^[[H" beginning-of-line + bindkey "^[[F" end-of-line #End + bindkey -a "^[[F" end-of-line + + ## oss sound source + function s { sysctl hw.snd.default_unit${1:+\=$1} } + + ## install port dependencies from pkg (like pkgsrc `bmake bin-install') + function portpkg { + case "$1" { + build|run) + sudo pkg install -AU $(make ${1}-depends-list | + sed 's_/usr/ports/_ _' | tr -d '\n') + ;; + *) echo "Usage: \`portpkg ' in a port directory" + return 1;; + } + } +} + # The following lines were added by compinstall zstyle ':completion:*' auto-description 'specify: %d' zstyle ':completion:*' expand suffix diff --git a/bin/l b/bin/lck similarity index 77% rename from bin/l rename to bin/lck index f7e2d3d..172e813 100755 --- a/bin/l +++ b/bin/lck @@ -2,7 +2,11 @@ # term lock if [ -z "$DISPLAY" ]; then - lock -npv + if [ "$OSTYPE" = "freebsd" ]; then + lock -npv + else + lock -np + fi exit fi @@ -10,14 +14,14 @@ fi img=~/tmp/lock.png if [ -f "$img" ]; then # rudimentary attempt to prevent multiple locks - # XXX: could block lock and replace with malicious locker + # XXX: could block lock and replace with malicious locker to grab password echo "Lock file exists at '$img', exiting" exit 1 fi res="$(xdpyinfo | grep dimensions | awk '{print $2}')" scale=0.07 ffmpeg -y -loglevel 0 \ - -s "$res" -f x11grab -i $DISPLAY -i ~/share/l/overlay.png \ + -s "$res" -f x11grab -i $DISPLAY -i ~/share/lck/overlay.png \ -filter_complex " [0] scale=iw * $scale:ih * $scale, diff --git a/install.sh b/install.sh index 985717b..ae7c688 100755 --- a/install.sh +++ b/install.sh @@ -1,36 +1,31 @@ #!/bin/sh if [ 0 -eq 1 ]; then - alias mkdir="echo mkdir" + mkdir() { echo "$*"; } alias ln="echo ln" alias rm="echo rm" alias cap_mkdb="echo cap_mkdb" alias unlink="echo unlink" fi -#fix permissions from git (TODO: should probably move this to git hook) -chmod go= base/.zshenv base/.Xresources - #create preferred folder structure -cd "$HOME" +cd ~ mkdir -p bin etc share .urxvt/ext > /dev/null 2>&1 mkdir -m 700 tmp tmp/vim > /dev/null 2>&1 cd - #accomodate linuxisms fex='-perm -ugo=x' -# TODO: should probably do this better -case "`uname`" in - *BSD*) lnargs=-sFhvw - d1='-depth 1' - bsd=yes;; - *) lnargs=-sfnv - d1='-mindepth 1 -maxdepth 1' - #android busybox find doesn't have -execute - #and its sh doesn't set OSTYPE :DD - if [ -z "$ANDROID_ROOT" ]; then - fex=-executable - fi;; +case "$OSTYPE" in + # TODO: make links safer for systems without -Fw + freebsd) lnargs=-sFhvw;; + netbsd|openbsd) lnargs=-sfhv;; + *) lnargs=-sfnv + #android busybox find doesn't have -executable + #and its sh doesn't set OSTYPE :DD + if [ -z "$ANDROID_ROOT" ]; then + fex=-executable + fi;; esac l() { @@ -38,13 +33,13 @@ l() { [ -L "$1" -o \! -e "$1" ] && ln $lnargs "${2:-$x}" "$1" } -find "$PWD/base" $d1 | while read -r x; do +find "$PWD/base" -mindepth 1 -maxdepth 1 | while read -r x; do l "$HOME/`basename "$x"`" done -find bin share $d1 | while read -r x; do +find bin share -mindepth 1 -maxdepth 1 | while read -r x; do l "$HOME/$x" "$PWD/$x" done -find "$PWD/xdg" $d1 | while read -r x; do +find "$PWD/xdg" -mindepth 1 -maxdepth 1 | while read -r x; do l "${XDG_CONFIG_HOME:-$HOME/etc}/`basename "$x"`" done find "$PWD/urxvt-ext" -type f $fex -mindepth 1 -maxdepth 2 | while read -r x; do @@ -52,7 +47,7 @@ find "$PWD/urxvt-ext" -type f $fex -mindepth 1 -maxdepth 2 | while read -r x; do done cd ~ -if [ -n "$bsd" ]; then +if [ "$OSTYPE" = "freebsd" ]; then touch .hushlogin #FreeBSD tries `_secure_path' on `.login_conf' before reading the database, diff --git a/share/l/overlay.png b/share/lck/overlay.png similarity index 100% rename from share/l/overlay.png rename to share/lck/overlay.png diff --git a/src/share/l/overlay.xcf b/src/lck/share/overlay.xcf similarity index 100% rename from src/share/l/overlay.xcf rename to src/lck/share/overlay.xcf -- 2.47.0