diff --git a/lib/aliases.zsh b/lib/aliases.zsh index 0555be264..64123931e 100644 --- a/lib/aliases.zsh +++ b/lib/aliases.zsh @@ -9,16 +9,15 @@ alias -- -='cd -' # Super user alias _='sudo' -#alias g='grep -in' - # Show history alias history='fc -l 1' # List direcory contents -alias lsa='ls -lah' -alias l='ls -la' +alias lla='ls -lah' +alias la='ls -la' alias ll='ls -l' -alias sl=ls # often screw this up +alias llh='ls -hl' +alias lt='ls -lrthF' +#alias sl=ls # often screw this up alias afind='ack-grep -il' - diff --git a/lib/battcharge.py b/lib/battcharge.py new file mode 100755 index 000000000..e4aa4d4d8 --- /dev/null +++ b/lib/battcharge.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python +# coding=UTF-8 + +import math, subprocess + +p = subprocess.Popen(["ioreg", "-rc", "AppleSmartBattery"], stdout=subprocess.PIPE) +output = p.communicate()[0] + +o_max = [l for l in output.splitlines() if 'MaxCapacity' in l][0] +o_cur = [l for l in output.splitlines() if 'CurrentCapacity' in l][0] + +b_max = float(o_max.rpartition('=')[-1].strip()) +b_cur = float(o_cur.rpartition('=')[-1].strip()) + +charge = b_cur / b_max +charge_threshold = int(math.ceil(10 * charge)) + +# Output + +total_slots, slots = 10, [] +filled = int(math.ceil(charge_threshold * (total_slots / 10.0))) * u'▸' +empty = (total_slots - len(filled)) * u'▹' + +out = (filled + empty).encode('utf-8') +import sys + +color_green = '%{%}' +color_yellow = '%{%}' +color_red = '%{%}' +color_reset = '%{%}' +color_out = ( + color_green if len(filled) > 6 + else color_yellow if len(filled) > 4 + else color_red +) + +out = color_out + out + color_reset +sys.stdout.write(out) \ No newline at end of file diff --git a/plugins/zshmarks/_go b/plugins/zshmarks/_go new file mode 100644 index 000000000..6c8fe693f --- /dev/null +++ b/plugins/zshmarks/_go @@ -0,0 +1,4 @@ +#compdef go +#autoload + +_arguments "1: :(`grep "|" $HOME/.bookmarks | cut -d\| -f2`)" \ No newline at end of file diff --git a/plugins/zshmarks/zshmarks.plugin.zsh b/plugins/zshmarks/zshmarks.plugin.zsh new file mode 100644 index 000000000..7a49154c9 --- /dev/null +++ b/plugins/zshmarks/zshmarks.plugin.zsh @@ -0,0 +1,53 @@ +# ------------------------------------------------------------------------------ +# FILE: zshmarks.plugin.zsh +# DESCRIPTION: oh-my-zsh plugin file. +# AUTHOR: Jocelyn Mallon (jocelyn.e.mallon@gmail.com) +# VERSION: 1.0 +# ------------------------------------------------------------------------------ + +bookmarks_file="$HOME/.bookmarks" + +# Create bookmarks_file it if it doesn't exist +if [[ ! -f $bookmarks_file ]]; then + touch $bookmarks_file +fi + +function bookmark() { + bookmark_name=$1 + if [[ -z $bookmark_name ]]; then + echo 'Invalid name, please provide a name for your bookmark. For example:' + echo ' bookmark foo' + return 1 + else + bookmark="$(pwd)|$bookmark_name" # Store the bookmark as folder|name + if [[ -z $(grep "$bookmark" $bookmarks_file) ]]; then + echo $bookmark >> $bookmarks_file + echo "Bookmark '$bookmark_name' saved" + else + echo "Bookmark already existed" + return 1 + fi + fi +} + +function go() { + bookmark_name=$1 + bookmark="$(grep "|$bookmark_name$" "$bookmarks_file")" + if [[ -z $bookmark ]]; then + echo "Invalid name, please provide a valid bookmark name. For example:" + echo " go foo" + echo + echo "To bookmark a folder, go to the folder then do this (naming the bookmark 'foo'):" + echo " bookmark foo" + return 1 + else + dir="${bookmark%%|*}" + cd "${dir}" + unset dir + fi +} + +# Show a list of the bookmarks +function showmarks() { + cat ~/.bookmarks | awk '{ printf "%-40s%-40s%s\n",$1,$2,$3}' FS=\| +} \ No newline at end of file diff --git a/themes/jocelyn.zsh-theme b/themes/jocelyn.zsh-theme new file mode 100644 index 000000000..a741b8d09 --- /dev/null +++ b/themes/jocelyn.zsh-theme @@ -0,0 +1,7 @@ +PROMPT='(%{$fg_bold[magenta]%}%n%{$reset_color%}@%{$fg_bold[blue]%}%m%{$reset_color%}) - (%{$fg_bold[blue]%}%T%{$reset_color%}) - (%{$fg_bold[blue]%}%~%{$reset_color%}%) +$(git_prompt_info)%{$reset_color%}$fg_bold[green]%}➜ %{$reset_color%}' + +ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:%{$reset_color%}(%{$fg_bold[yellow]%}" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_DIRTY="%{$reset_color%}) %{$fg_bold[red]%}✗%{$reset_color%} " +ZSH_THEME_GIT_PROMPT_CLEAN="%{$reset_color%}) " diff --git a/themes/jocelyn_new.zsh-theme b/themes/jocelyn_new.zsh-theme new file mode 100644 index 000000000..0bac73a72 --- /dev/null +++ b/themes/jocelyn_new.zsh-theme @@ -0,0 +1,108 @@ +function title { + [ "$DISABLE_AUTO_TITLE" != "true" ] || return + if [[ "$TERM" == screen* ]]; then + print -Pn "\ek$1:q\e\\" + elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then + print -Pn "\e]2;$2:q\a" + print -Pn "\e]1;$1:q\a" + fi +} + +ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" +ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~" + +function precmd { + local TERMWIDTH + (( TERMWIDTH = ${COLUMNS} - 1 )) + PR_FILLBAR="" + PR_PWDLEN="" + local promptsize=${#${(%):--(%n@%m)-()-(%D{%H:%M:%})-}} + local rubyprompt=`rvm_prompt_info` + local rubypromptsize=${#${rubyprompt}} + local pwdsize=${#${(%):-%~}} + if [[ "$promptsize + $rubypromptsize + $pwdsize" -gt $TERMWIDTH ]]; then + ((PR_PWDLEN=$TERMWIDTH - $promptsize)) + else + PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $rubypromptsize + $pwdsize)))..${PR_HBAR}.)}" + fi + title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE +} + +setopt extended_glob +preexec () { + if [[ "$TERM" == "screen" ]]; then + local CMD=${1[(wr)^(*=*|sudo|-*)]} + echo -n "\ek$CMD\e\\" + fi + local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} + title "$CMD" "%100>...>$2%<<" + echo -en $reset_color +} + +function battery_charge { + $ZSH/lib/battcharge.py + echo `$BAT_CHARGE` 2>/dev/null +} + +setprompt () { +# Need this so the prompt will work. + setopt prompt_subst + autoload colors zsh/terminfo + if [[ "$terminfo[colors]" -ge 8 ]]; then + colors + fi + for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE GREY; do + eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}' + eval PR_LIGHT_$color='%{$fg[${(L)color}]%}' + (( count = $count + 1 )) + done + PR_NO_COLOUR="%{$terminfo[sgr0]%}" + +# Modify Git prompt + ZSH_THEME_GIT_PROMPT_PREFIX="$PR_MAGENTA($PR_BLUE% git:$PR_YELLOW" + ZSH_THEME_GIT_PROMPT_SUFFIX="$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_DIRTY="" + ZSH_THEME_GIT_PROMPT_CLEAN="" + ZSH_THEME_GIT_PROMPT_ADDED="$PR_MAGENTA($PR_GREEN✚$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_MODIFIED="$PR_MAGENTA($PR_BLUE✹$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_DELETED="$PR_MAGENTA($PR_RED✖$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_RENAMED="$PR_MAGENTA($PR_MAGENTA➜$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_UNMERGED="$PR_MAGENTA($PR_YELLOW═$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_UNTRACKED="$PR_MAGENTA($PR_CYAN✭$PR_MAGENTA)" + +# See if we can use extended characters to look nicer. + typeset -A altchar + set -A altchar ${(s..)terminfo[acsc]} + PR_SET_CHARSET="%{$terminfo[enacs]%}" + PR_SHIFT_IN="%{$terminfo[smacs]%}" + PR_SHIFT_OUT="%{$terminfo[rmacs]%}" + PR_HBAR=${altchar[q]:--} + PR_ULCORNER=${altchar[l]:--} + PR_LLCORNER=${altchar[m]:--} + PR_LRCORNER=${altchar[j]:--} + PR_URCORNER=${altchar[k]:--} + +# set return code to display if greater than zero + return_code="%(?..$PR_MAGENTA($PR_RED%?↩ $PR_MAGENTA%))" + +PROMPT='$PR_SET_CHARSET\ +$PR_MAGENTA$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ +$PR_BLUE%n$PR_MAGENTA@$PR_CYAN%m$PR_MAGENTA)\ +$PR_SHIFT_IN$PR_HBAR${(e)PR_FILLBAR}$PR_SHIFT_OUT\ +($PR_BLUE%$PR_PWDLEN<...<%~%<<\ +$PR_MAGENTA)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\ +($PR_GREEN%D{%H}$PR_MAGENTA:$PR_GREEN%D{%M}$PR_MAGENTA:$PR_GREEN%D{%S}$PR_MAGENTA)\ + +$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR\ +$return_code\ +`git_prompt_info`\ +`git_prompt_status`\ +$PR_MAGENTA$PR_SHIFT_IN$PR_HBAR\ +$PR_GREEN❯$PR_SHIFT_OUT ' + +RPROMPT='$(battery_charge)$PR_GREEN' + +PS2='$PR_MAGENTA$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_HBAR$PR_SHIFT_OUT$PR_GREEN\ ' +} + +setprompt \ No newline at end of file diff --git a/themes/jocelyn_new2.zsh-theme b/themes/jocelyn_new2.zsh-theme new file mode 100644 index 000000000..9651ce97f --- /dev/null +++ b/themes/jocelyn_new2.zsh-theme @@ -0,0 +1,108 @@ +function title { + [ "$DISABLE_AUTO_TITLE" != "true" ] || return + if [[ "$TERM" == screen* ]]; then + print -Pn "\ek$1:q\e\\" + elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then + print -Pn "\e]2;$2:q\a" + print -Pn "\e]1;$1:q\a" + fi +} + +ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" +ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~" + +function precmd { + local TERMWIDTH + (( TERMWIDTH = ${COLUMNS} - 1 )) + PR_FILLBAR="" + PR_PWDLEN="" + local promptsize=${#${(%):--(%n@%m)-()-(%D{%H:%M:%})-}} + local rubyprompt=`rvm_prompt_info` + local rubypromptsize=${#${rubyprompt}} + local pwdsize=${#${(%):-%~}} + if [[ "$promptsize + $rubypromptsize + $pwdsize" -gt $TERMWIDTH ]]; then + ((PR_PWDLEN=$TERMWIDTH - $promptsize)) + else + PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $rubypromptsize + $pwdsize)))..${PR_HBAR}.)}" + fi + title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE +} + +setopt extended_glob +preexec () { + if [[ "$TERM" == "screen" ]]; then + local CMD=${1[(wr)^(*=*|sudo|-*)]} + echo -n "\ek$CMD\e\\" + fi + local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} + title "$CMD" "%100>...>$2%<<" + echo -en $reset_color +} + +function battery_charge { + $ZSH/lib/battcharge.py + echo `$BAT_CHARGE` 2>/dev/null +} + +setprompt () { +# Need this so the prompt will work. + setopt prompt_subst + autoload colors zsh/terminfo + if [[ "$terminfo[colors]" -ge 8 ]]; then + colors + fi + for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE GREY; do + eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}' + eval PR_LIGHT_$color='%{$fg[${(L)color}]%}' + (( count = $count + 1 )) + done + PR_NO_COLOUR="%{$terminfo[sgr0]%}" + +# Modify Git prompt + ZSH_THEME_GIT_PROMPT_PREFIX="$PR_WHITE($PR_BLUE% git:$PR_YELLOW" + ZSH_THEME_GIT_PROMPT_SUFFIX="$PR_WHITE)" + ZSH_THEME_GIT_PROMPT_DIRTY="" + ZSH_THEME_GIT_PROMPT_CLEAN="" + ZSH_THEME_GIT_PROMPT_ADDED="$PR_WHITE($PR_GREEN✚$PR_WHITE)" + ZSH_THEME_GIT_PROMPT_MODIFIED="$PR_WHITE($PR_BLUE✹$PR_WHITE)" + ZSH_THEME_GIT_PROMPT_DELETED="$PR_WHITE($PR_RED✖$PR_WHITE)" + ZSH_THEME_GIT_PROMPT_RENAMED="$PR_WHITE($PR_MAGENTA➜$PR_WHITE)" + ZSH_THEME_GIT_PROMPT_UNMERGED="$PR_WHITE($PR_YELLOW═$PR_WHITE)" + ZSH_THEME_GIT_PROMPT_UNTRACKED="$PR_WHITE($PR_CYAN✭$PR_WHITE)" + +# See if we can use extended characters to look nicer. + typeset -A altchar + set -A altchar ${(s..)terminfo[acsc]} + PR_SET_CHARSET="%{$terminfo[enacs]%}" + PR_SHIFT_IN="%{$terminfo[smacs]%}" + PR_SHIFT_OUT="%{$terminfo[rmacs]%}" + PR_HBAR=${altchar[q]:--} + PR_ULCORNER=${altchar[l]:--} + PR_LLCORNER=${altchar[m]:--} + PR_LRCORNER=${altchar[j]:--} + PR_URCORNER=${altchar[k]:--} + +# set return code to display if greater than zero + return_code="%(?..$PR_WHITE($PR_RED%?↩ $PR_WHITE%))" + +PROMPT='$PR_SET_CHARSET\ +$PR_WHITE$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ +$PR_MAGENTA%n$PR_WHITE@$PR_BLUE%m$PR_WHITE)\ +$PR_SHIFT_IN$PR_HBAR${(e)PR_FILLBAR}$PR_SHIFT_OUT\ +($PR_BLUE%$PR_PWDLEN<...<%~%<<\ +$PR_WHITE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\ +($PR_GREEN%D{%H}$PR_WHITE:$PR_GREEN%D{%M}$PR_WHITE:$PR_GREEN%D{%S}$PR_WHITE)\ + +$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR\ +$return_code\ +`git_prompt_info`\ +`git_prompt_status`\ +$PR_WHITE$PR_SHIFT_IN$PR_HBAR\ +$PR_GREEN❯$PR_SHIFT_OUT ' + +RPROMPT='$(battery_charge)$PR_GREEN' + +PS2='$PR_MAGENTA$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_HBAR$PR_SHIFT_OUT$PR_GREEN\ ' +} + +setprompt \ No newline at end of file diff --git a/themes/jocelyn_new3.zsh-theme b/themes/jocelyn_new3.zsh-theme new file mode 100644 index 000000000..e59f39a41 --- /dev/null +++ b/themes/jocelyn_new3.zsh-theme @@ -0,0 +1,108 @@ +function title { + [ "$DISABLE_AUTO_TITLE" != "true" ] || return + if [[ "$TERM" == screen* ]]; then + print -Pn "\ek$1:q\e\\" + elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then + print -Pn "\e]2;$2:q\a" + print -Pn "\e]1;$1:q\a" + fi +} + +ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" +ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~" + +function precmd { + local TERMWIDTH + (( TERMWIDTH = ${COLUMNS} - 1 )) + PR_FILLBAR="" + PR_PWDLEN="" + local promptsize=${#${(%):--(%n@%m)-()-(%D{%H:%M:%})-}} + local rubyprompt=`rvm_prompt_info` + local rubypromptsize=${#${rubyprompt}} + local pwdsize=${#${(%):-%~}} + if [[ "$promptsize + $rubypromptsize + $pwdsize" -gt $TERMWIDTH ]]; then + ((PR_PWDLEN=$TERMWIDTH - $promptsize)) + else + PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $rubypromptsize + $pwdsize)))..${PR_HBAR}.)}" + fi + title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE +} + +setopt extended_glob +preexec () { + if [[ "$TERM" == "screen" ]]; then + local CMD=${1[(wr)^(*=*|sudo|-*)]} + echo -n "\ek$CMD\e\\" + fi + local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} + title "$CMD" "%100>...>$2%<<" + echo -en $reset_color +} + +function battery_charge { + $ZSH/lib/battcharge.py + echo `$BAT_CHARGE` 2>/dev/null +} + +setprompt () { +# Need this so the prompt will work. + setopt prompt_subst + autoload colors zsh/terminfo + if [[ "$terminfo[colors]" -ge 8 ]]; then + colors + fi + for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE GREY; do + eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}' + eval PR_LIGHT_$color='%{$fg[${(L)color}]%}' + (( count = $count + 1 )) + done + PR_NO_COLOUR="%{$terminfo[sgr0]%}" + +# Modify Git prompt + ZSH_THEME_GIT_PROMPT_PREFIX="$PR_BLUE($PR_MAGENTA% git:$PR_YELLOW" + ZSH_THEME_GIT_PROMPT_SUFFIX="$PR_BLUE)" + ZSH_THEME_GIT_PROMPT_DIRTY="" + ZSH_THEME_GIT_PROMPT_CLEAN="" + ZSH_THEME_GIT_PROMPT_ADDED="$PR_BLUE($PR_GREEN✚$PR_BLUE)" + ZSH_THEME_GIT_PROMPT_MODIFIED="$PR_BLUE($PR_BLUE✹$PR_BLUE)" + ZSH_THEME_GIT_PROMPT_DELETED="$PR_BLUE($PR_RED✖$PR_BLUE)" + ZSH_THEME_GIT_PROMPT_RENAMED="$PR_BLUE($PR_MAGENTA➜$PR_BLUE)" + ZSH_THEME_GIT_PROMPT_UNMERGED="$PR_BLUE($PR_YELLOW═$PR_BLUE)" + ZSH_THEME_GIT_PROMPT_UNTRACKED="$PR_BLUE($PR_CYAN✭$PR_BLUE)" + +# See if we can use extended characters to look nicer. + typeset -A altchar + set -A altchar ${(s..)terminfo[acsc]} + PR_SET_CHARSET="%{$terminfo[enacs]%}" + PR_SHIFT_IN="%{$terminfo[smacs]%}" + PR_SHIFT_OUT="%{$terminfo[rmacs]%}" + PR_HBAR=${altchar[q]:--} + PR_ULCORNER=${altchar[l]:--} + PR_LLCORNER=${altchar[m]:--} + PR_LRCORNER=${altchar[j]:--} + PR_URCORNER=${altchar[k]:--} + +# set return code to display if greater than zero + return_code="%(?..$PR_BLUE($PR_RED%?↩ $PR_BLUE%))" + +PROMPT='$PR_SET_CHARSET\ +$PR_BLUE$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ +$PR_MAGENTA%n$PR_BLUE@$PR_YELLOW%m$PR_BLUE)\ +$PR_SHIFT_IN$PR_HBAR${(e)PR_FILLBAR}$PR_SHIFT_OUT\ +($PR_MAGENTA%$PR_PWDLEN<...<%~%<<\ +$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\ +($PR_GREEN%D{%H}$PR_BLUE:$PR_GREEN%D{%M}$PR_BLUE:$PR_GREEN%D{%S}$PR_BLUE)\ + +$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR\ +$return_code\ +`git_prompt_info`\ +`git_prompt_status`\ +$PR_BLUE$PR_SHIFT_IN$PR_HBAR\ +$PR_GREEN❯$PR_SHIFT_OUT ' + +RPROMPT='$(battery_charge)$PR_GREEN' + +PS2='$PR_MAGENTA$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_HBAR$PR_SHIFT_OUT$PR_GREEN\ ' +} + +setprompt \ No newline at end of file