summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.zsh/rc/10colors44
-rw-r--r--.zsh/rc/10keybindings15
-rw-r--r--.zsh/rc/10variables14
-rw-r--r--.zsh/rc/15prompt54
-rw-r--r--.zsh/rc/30functions209
-rw-r--r--.zsh/rc/50options52
-rw-r--r--.zsh/rc/60aliases108
-rw-r--r--.zsh/rc/70completion/10misc57
-rw-r--r--.zsh/rc/70completion/10own_functions16
-rw-r--r--.zsh/rc/99greetings15
-rw-r--r--.zshrc570
11 files changed, 565 insertions, 589 deletions
diff --git a/.zsh/rc/10colors b/.zsh/rc/10colors
deleted file mode 100644
index 667f319..0000000
--- a/.zsh/rc/10colors
+++ /dev/null
@@ -1,44 +0,0 @@
-#--------------------
-# Colors
-#--------------------
-#use these in functions/shell scripts
-export red='\e[0;31m'
-export RED='\e[1;31m'
-export green='\e[0;32m'
-export GREEN='\e[1;32m'
-export blue='\e[0;34m'
-export BLUE='\e[1;34m'
-export purple='\e[0;35m'
-export PURPLE='\e[1;35m'
-export cyan='\e[0;36m'
-export CYAN='\e[1;36m'
-export NC='\e[0m'
-
-# these are for use in PROMPT
-fg_green=$'%{\e[0;32m%}'
-fg_blue=$'%{\e[0;34m%}'
-fg_cyan=$'%{\e[0;36m%}'
-fg_red=$'%{\e[0;31m%}'
-fg_brown=$'%{\e[0;33m%}'
-fg_purple=$'%{\e[0;35m%}'
-fg_light_gray=$'%{\e[0;37m%}'
-fg_dark_gray=$'%{\e[1;30m%}'
-fg_light_blue=$'%{\e[1;34m%}'
-fg_light_green=$'%{\e[1;32m%}'
-fg_light_cyan=$'%{\e[1;36m%}'
-fg_light_red=$'%{\e[1;31m%}'
-fg_light_purple=$'%{\e[1;35m%}'
-fg_no_colour=$'%{\e[0m%}'
-fg_white=$'%{\e[1;37m%}'
-fg_black=$'%{\e[0;30m%}'
-
-# colors in framebuffer!
-if [ "$TERM" = "linux" ]; then
- ${HOME}/bin/parse_xdefaults.sh
- clear #for background artifacting
-fi
-
-# some better colors for ls
-eval "`dircolors -b`"
-
-# vim: set ft=zsh:
diff --git a/.zsh/rc/10keybindings b/.zsh/rc/10keybindings
deleted file mode 100644
index 0761957..0000000
--- a/.zsh/rc/10keybindings
+++ /dev/null
@@ -1,15 +0,0 @@
-#--------------------
-# Keybindings
-#--------------------
-bindkey -e
-bindkey '\e[1~' beginning-of-line
-bindkey '\e[4~' end-of-line
-bindkey '\e[3~' delete-char
-bindkey '\e[2~' overwrite-mode
-bindkey "^[[7~" beginning-of-line # Pos1
-bindkey "^[[8~" end-of-line # End
-# HOWTO make your own:
-# bindkey '<crtl+alt+key>' <action> (do this in a shell)
-# for some actions run `bindkey`
-
-# vim: set ft=zsh:
diff --git a/.zsh/rc/10variables b/.zsh/rc/10variables
deleted file mode 100644
index ebdaae7..0000000
--- a/.zsh/rc/10variables
+++ /dev/null
@@ -1,14 +0,0 @@
-#-----------------------
-# Variables
-#-----------------------
-#export CDPATH=.:$HOME
-export OOO_FORCE_DESKTOP=gnome
-export PATH=${HOME}/misc/scripts:${PATH}
-export EDITOR=vim
-export PAGER=vimpager
-export LESSCHARSET="UTF-8"
-export LESSOPEN='|/usr/bin/lesspipe.sh %s 2>&-'
-export LESS='-F -i -n -w -g -M -R -P%t?f%f \
-:stdin .?pb%pb\%:?lbLine %lb:?bbByte %bb:-...'
-
-# vim: set ft=zsh:
diff --git a/.zsh/rc/15prompt b/.zsh/rc/15prompt
deleted file mode 100644
index a897e19..0000000
--- a/.zsh/rc/15prompt
+++ /dev/null
@@ -1,54 +0,0 @@
-#--------------------
-# Terminal title
-#--------------------
-# also found somewhere
-prompt_eof_setup() {
- # preexec() is run after you press enter on your command but before the command is run.
- preexec() {
- # define screen/terminal title with the current command (http://aperiodic.net/phil/prompt/)
- case $TERM in
- rxvt-unicode*)
- printf '\33]2;%s\007' $1
- ;;
- screen*)
- local CMD=${1[(wr)^(*=*|sudo|ssh|exec|-*)]}
- printf '\ek%s\e\\' $CMD;;
- esac
- }
-}
-
-prompt_eof_setup "$@"
-
-EXITCODE="%(?..(%?%1) )"
-
-# function to show the current git branch in prompt
-parse_git_branch() {
- git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
-}
-
-#--------------------
-# Prompt
-#--------------------
-# necessary if you want to use functions in the prompt
-# without this they wouldn't be run again
-precmd () {
-# this has to be on the edge or you have some spaces in the prompt
-# if you have any workaround please tell
-if [[ $UID != 0 ]]; then
- local username_color=$fg_blue
-else
- local username_color=$fg_red
-fi
-local host_color=$fg_light_green
-local path_color=$fg_light_blue
-local gitbranch_color=$fg_purple
-local exitcode_color=$fg_red
-PROMPT="${username_color}$USERNAME${fg_no_colour}@${host_color}%m${fg_no_colour}\
-:${path_color}%~${fg_no_colour} ${gitbranch_color}$(parse_git_branch)${fg_no_colour}
-${exitcode_color}$EXITCODE${fg_no_colour}> "
-}
-
-## Spelling prompt
-SPROMPT='zsh: correct '%R' to '%r' ? ([Y]es/[N]o/[E]dit/[A]bort) '
-
-# vim: set ft=zsh:
diff --git a/.zsh/rc/30functions b/.zsh/rc/30functions
deleted file mode 100644
index 4345412..0000000
--- a/.zsh/rc/30functions
+++ /dev/null
@@ -1,209 +0,0 @@
-#--------------------
-# Functions
-#--------------------
-
-# always /etc/rc.d/blub is a bit too much work ;)
-rc() {
- sudo /etc/rc.d/$1 $2
-}
-
-# usefull if you have more machines and want to easily update the config here
-update_zshrc() {
- old_pwd="$PWD"
- builtin cd "$HOME/.zsh"
- wget http://flo.server-speed.net/stuff/dotfiles/zshrc -O $HOME/.zshrc
- wget http://flo.server-speed.net/stuff/dotfiles/zsh/filelist -O /tmp/zsh_filelist
- wget -B "http://flo.server-speed.net/stuff/dotfiles/zsh/" -i /tmp/zsh_filelist -x --cut-dirs=3 -nH
- rm /tmp/zsh_fileslist
- rm **/index.html
- builtin cd "$old_pwd"
- exec zsh
-}
-
-# add current time to a file
-mbk() {
- mv -b "${1}" "$(echo $1 | sed "s/\./_`date +%Y-%m-%d_%T`./")"
-}
-
-# easily make backups
-bk() {
- cp -b "${1}" "$(echo $1 | sed "s/\./_`date +%Y-%m-%d_%T`./")"
-}
-
-# chpwd () => a function which is executed whenever the directory is changed
-chpwd() {
- ls
-}
-
-# idea by Gigamo http://bbs.archlinux.org/viewtopic.php?pid=478094#p478094
-ls () {
- /bin/ls -rhbtF --color=auto $@ &&
- echo "${PURPLE}Files: ${BLUE}$(/bin/ls -l $@ | grep -v "^[l|d|total]" | wc -l) ${GREEN}--- ${PURPLE}Directories: ${BLUE}$(/bin/ls -l $@ | grep "^d" | wc -l)${NC}"
-}
-
-password() {
- if [ -z "$1" ]; then
- count=8
- else
- count="$1"
- fi
- < /dev/urandom tr -dc A-Za-z0-9_ | head -c$count
-}
-
-# jump between directories
-# Copyright 2005 Nikolai Weibull <nikolai@bitwi.se>
-# notice: option AUTO_PUSHD has to be set
-d(){
- emulate -L zsh
- autoload -U colors
- local color=$fg_bold[blue]
- integer i=0
- dirs -p | while read dir; do
- local num="${$(printf "%-4d " $i)/ /.}"
- printf " %s $color%s$reset_color\n" $num $dir
- (( i++ ))
- done
- integer dir=-1
- read -r 'dir?Jump to directory: ' || return
- (( dir == -1 )) && return
- if (( dir < 0 || dir >= i )); then
- echo d: no such directory stack entry: $dir
- return 1
- fi
- cd ~$dir
-}
-
-# from the grml zshrc iirc
-hglob() {
- echo -e "
- / directories
- . plain files
- @ symbolic links
- = sockets
- p named pipes (FIFOs)
- * executable plain files (0100)
- % device files (character or block special)
- %b block special files
- %c character special files
- r owner-readable files (0400)
- w owner-writable files (0200)
- x owner-executable files (0100)
- A group-readable files (0040)
- I group-writable files (0020)
- E group-executable files (0010)
- R world-readable files (0004)
- W world-writable files (0002)
- X world-executable files (0001)
- s setuid files (04000)
- S setgid files (02000)
- t files with the sticky bit (01000)
- print *(m-1) # Dateien, die vor bis zu einem Tag modifiziert wurden.
- print *(a1) # Dateien, auf die vor einem Tag zugegriffen wurde.
- print *(@) # Nur Links
- print *(Lk+50) # Dateien die ueber 50 Kilobytes grosz sind
- print *(Lk-50) # Dateien die kleiner als 50 Kilobytes sind
- print **/*.c # Alle *.c - Dateien unterhalb von \$PWD
- print **/*.c~file.c # Alle *.c - Dateien, aber nicht 'file.c'
- print (foo|bar).* # Alle Dateien mit 'foo' und / oder 'bar' am Anfang
- print *~*.* # Nur Dateien ohne '.' in Namen
- chmod 644 *(.^x) # make all non-executable files publically readable
- print -l *(.c|.h) # Nur Dateien mit dem Suffix '.c' und / oder '.h'
- print **/*(g:users:) # Alle Dateien/Verzeichnisse der Gruppe >users<
- echo /proc/*/cwd(:h:t:s/self//) # Analog zu >ps ax | awk '{print $1}'<"
-}
-
-# let vim highlight any file for us and save it as html
-2html() {
- vim -n -c ':syntax on' -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 > /dev/null 2> /dev/null
-}
-
-# download any package's PKGBUILD and go into that dir
-yd(){
- pbget --aur $1
- builtin cd $1
-}
-
-# some script to make this damn agent work easier
-if [ "x$DISPLAY" != "x" ]; then
- source ${HOME}/bin/gpg-agent.sh
-fi
-
-# yeah I know you shouldn't use it...
-google(){
- firefox "http://www.google.com/search?&num=100&q=$*" &
- disown firefox
-}
-
-# swaps 2 files
-swap() {
- if [ "$1" = "" ] || [ "$2" = "" ] || [ "$1" = "-h" ]; then
- echo -e "${blue}Usage:$NC swap <file> <file>";
- echo -e "Swaps files";
- return 1
- fi
- if [ -f $1 ] && [ -f $2 ]; then
- local TMPFILE=tmp.$$
- mv "$1" $TMPFILE
- mv "$2" "$1"
- mv $TMPFILE "$2"
- else
- echo -e "${RED}Error:$NC One or more files don't exist"
- return 1
- fi
-}
-
-# get your internal and external IPs
-# also found somewhere on the net
-my_ip() {
- MY_IP=$(/sbin/ifconfig eth0 | awk '/inet/ { print $2 } ' | \
- sed -e s/addr://)
- MY_ISP=$(curl www.wieistmeineip.de | awk '(/[0-9]?[0-9]?[0-9]\.[0-9]?[0-9]?[0-9]\.[0-9]?[0-9]?[0-9]\.[0-9]?[0-9]?[0-9]/) {print}' | awk 'gsub(/[>||<]/," ")' | awk '{print $3}')
-}
-
-ii() {
- echo -e "\nUser ${RED}"${USER:-"N/A"}"$NC on "${RED}${HOST:-"N/A"}"$NC"
- echo -e "\n${RED}Additionnal information:$NC " ; uname -a
- echo -e "\n${RED}Users logged on:$NC " ; w -h
- echo -e "\n${RED}Current date:$NC " ; date
- echo -e "\n${RED}Machine stats:$NC " ; uptime
- echo -e "\n${RED}Memory stats:$NC " ; free
- my_ip 2>&- ;
- echo -e "\n${RED}Local IP Address:$NC" ; echo ${MY_IP:-"N/A"}
- echo -e "\n${RED}ISP Address:$NC" ; echo ${MY_ISP:-"N/A"}
- echo
-}
-
-# short info to display when opening a new shell
-short_ii() {
- echo -e "\nUser ${RED}"${USER:-"N/A"}"$NC on "${RED}${HOST:-"N/A"}"$NC"
- echo -e "\n${RED}Machine stats:$NC " ; uptime
- echo
-}
-
-# actually it converts any mp4 or flv to mp3...
-youtube2mp3() {
- for file in "$@"
- do
- if [ -f "${file}" ] ; then
- title=$(echo ${file} | sed 's/\(.*\)\..*/\1/')
- case $(file -b --mime-type "${file}") in
- video/mp4)
- faad "${file}" &&
- lame "${title}.wav" "${title}.mp3" &&
- rm "${title}.wav"
- ;;
- video/x-flv)
- ffmpeg -i "${file}" -vn -acodec copy "${title}.mp3"
- ;;
- *)
- echo -e "${RED}Error:$NC No rule how to convert \"${file}\""
- ;;
- esac
- else
- echo -e "${RED}Error:$NC \"${file}\" doesn't exist"
- fi
- done
-}
-
-
-# vim: set ft=zsh:
diff --git a/.zsh/rc/50options b/.zsh/rc/50options
deleted file mode 100644
index 8e1a573..0000000
--- a/.zsh/rc/50options
+++ /dev/null
@@ -1,52 +0,0 @@
-#--------------------
-# History
-#--------------------
-export HISTFILE=~/.zsh/histfile
-# for some odd reason allocating RAM to save the histfile takes ages..
-export HISTSIZE=5000
-export SAVEHIST=$HISTSIZE
-
-#--------------------
-# Other ZSH options
-#--------------------
-autoload colors
-colors
-# .. -> cd ../
-setopt autocd
-
-setopt correct_all
-
-# cd /etc/**/foo/blub searches ;)
-setopt extendedglob
-
-# push cds to directory stack
-setopt auto_pushd
-
-# don't push something twice
-setopt pushd_ignore_dups
-
-# don't kill jobs when exiting shell
-setopt no_hup
-
-# show us when some command didn't exit with 0
-setopt print_exit_value
-
-# makepkg -g > PKGBUILD
-# zsh: file exists: PKGBUILD
-#
-# work saved ;)
-setopt no_clobber
-
-setopt INC_APPEND_HISTORY
-setopt SHARE_HISTORY
-setopt EXTENDED_HISTORY
-setopt HIST_REDUCE_BLANKS
-setopt HIST_IGNORE_SPACE
-setopt nohistverify
-setopt prompt_subst
-setopt HIST_FCNTL_LOCK
-
-# disable XON/XOFF flow control (^s/^q)
-stty -ixon
-
-# vim: set ft=zsh:
diff --git a/.zsh/rc/60aliases b/.zsh/rc/60aliases
deleted file mode 100644
index 47a74bd..0000000
--- a/.zsh/rc/60aliases
+++ /dev/null
@@ -1,108 +0,0 @@
-#--------------------
-# Aliases
-#--------------------
-# better ask before we loose data
-alias rm='rm -Iv'
-alias cp='cp -iv'
-alias mv='mv -iv'
-
-# I don't like bytes
-alias dum='du -kh --max-depth=2'
-alias du='du -kh'
-alias dus='du -skh'
-#alias df='df -kTh'
-alias df='pydf'
-
-# function to make ls look nice is below
-alias ll='ls -l'
-alias la='ls -a'
-alias lla='ls -la'
-alias lld='ls -ld'
-
-alias newpkgb=' cp $HOME/misc/aur/PKGBUILD.proto PKGBUILD'
-
-# well I got used to that name ;)
-alias aurball='makepkg --source -f'
-alias pkgbuild='makepkg -fc && aurball'
-alias pushpkg='cp *.pkg.tar.gz *.src.tar.gz /mnt/mistral/srv/drop'
-
-alias sudo="sudo " #Sudo wont recognize aliases without this
-alias s='sudo'
-alias x='x -v'
-alias xx='x -Rv'
-alias u='upload.sh'
-alias mtr='mtr -t'
-alias wcl='wc -l'
-alias mdstat='cat /proc/mdstat'
-alias keymap='setxkbmap de -variant nodeadkeys'
-alias hexdump='hexdump -C'
-
-alias pager='${PAGER}'
-alias more='${PAGER}'
-alias less='${PAGER}'
-alias c='${PAGER}'
-alias v='vim'
-alias gv='gvim'
-alias sc='sudo ${PAGER}'
-alias sv='sudo vim'
-alias sgv='sudo gvim'
-
-alias g='git'
-alias gitk='giggle'
-# python is too long to type...
-alias q='python'
-
-alias ncmpc='ncmpc -c'
-alias youtube='youtube-dl -b '
-alias rscp='rsync --partial --progress --rsh=ssh'
-
-alias mkdir='nocorrect mkdir'
-alias wget='nocorrect noglob wget'
-
-# updating commands can be long...
-alias yup='yaourt -Syu --aur'
-alias yu='yaourt -Syu'
-
-# can't they make it use sudo on it's own like yaourt?
-alias p='sudo powerpill'
-alias pa='sudo powerpill -Syu'
-alias py='sudo powerpill -S'
-alias pacman='sudo pacman-color'
-
-alias su='su -'
-
-alias y='yaourt'
-alias ys='yaourt -S'
-alias ysb='yaourt -Sb'
-alias ysi='yaourt -Si'
-alias yr='yaourt -Rs'
-alias yrc='yaourt -Rcs'
-alias yrn='yaourt -Rns'
-alias yqo='yaourt -Qo'
-
-# too long to remember
-alias asciidoc_full='asciidoc -a icons -a toc'
-
-# other random aliases
-alias ☠='pkill -9'
-alias nocomment='egrep -v "^\s*(#|$)"'
-
-# global aliases work EVERYWHERE
-# e.g. dmesg tt
-# show last 20 lines of dmesg
-alias -g gg='| grep --color'
-alias -g eg='| egrep --color'
-alias -g tt='| tail -n 20'
-# I always hit y instead of | ...
-alias -g vv='|'
-
-# who doesn't need pastebins?
-alias -g sp="2>&1 | curl -F 'sprunge=<-' http://sprunge.us"
-alias -g pp="2>&1 | wgetpaste -X "
-
-# e.g. "blub.txt" opens the file instead of showing command not found
-alias -s txt=mousepad
-alias -s jpg=gpicview
-alias -s png=gpicview
-
-# vim: set ft=zsh:
diff --git a/.zsh/rc/70completion/10misc b/.zsh/rc/70completion/10misc
deleted file mode 100644
index 6e3c0c9..0000000
--- a/.zsh/rc/70completion/10misc
+++ /dev/null
@@ -1,57 +0,0 @@
-#--------------------
-# Completion stuff
-#--------------------
-autoload -Uz compinit
-compinit
-
-# correct 7etc/foo to /etc/foo
-# if anyone has a working solution for /etc7foo please contact me
-function _7slash {
- if [[ $words[CURRENT] = 7(#b)(*)(#e) ]]
- then
- compadd -U -X 'Correct leading 7 to /' -f /$match[1]
- fi
-}
-
-zstyle :compinstall filename '$HOME/.zshrc'
-
-# cache results because yaourt is slow
-zstyle ':completion:*' use-cache on
-zstyle ':completion:*' cache-path $HOME/.zsh/cache
-zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
-zstyle ':completion:*' completer _complete _match _approximate _7slash
-zstyle ':completion:*:match:*' original only
-
-# allow more mistypes if longer command
-zstyle -e ':completion:*:approximate:*' \
- max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3))numeric)'
-
-# ignore completion for commands we don't have
-zstyle ':completion:*:functions' ignored-patterns '_*'
-
-# show menu when tabbing
-zstyle ':completion:*' menu yes select
-
-# better completion for kill
-zstyle ':completion:*:*:kill:*' command 'ps -u$USER -o pid,%cpu,tty,cputime,cmd'
-
-# bugged with zsh 4.3.10 for whatever reason
-#zstyle ':completion:*' file-sort time
-zstyle ':completion:*' file-sort name
-
-# remove / after dirnames
-# e.g. ls foo/ -> ls foo
-#zstyle ':completion:*' squeeze-slashes true
-zstyle ':completion:*' squeeze-slashes false
-
-# if in foo/bar don't show bar when cd ../<TAB>
-zstyle ':completion:*:cd:*' ignore-parents parent pwd
-
-# ignore case when completing
-zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
-
-# make some stuff look better
-zstyle ':completion:*:descriptions' format $'%{\e[0;31m%}completing %B%d%b%{\e[0m%}'
-zstyle ':completion:*:warnings' format $'%{\e[0;31m%}No matches for:%{\e[0m%} %d'
-
-# vim: set ft=zsh:
diff --git a/.zsh/rc/70completion/10own_functions b/.zsh/rc/70completion/10own_functions
deleted file mode 100644
index fc6e446..0000000
--- a/.zsh/rc/70completion/10own_functions
+++ /dev/null
@@ -1,16 +0,0 @@
-# complete my little rc function (archlinux startscripts)
-function _rc () {
- case $CURRENT in
- 2) compadd $(find /etc/rc.d/ -maxdepth 1 -type f -executable -printf '%f ');;
- 3) compadd $(/etc/rc.d/$words[2] 2> /dev/null | grep -i usage | sed 's/.*{\(.*\)}/\1/; s/|/ /g');;
- esac
-}
-compdef _rc rc
-
-# easier way to use sshfs ;)
-function _ssh-mount () {
- compadd $(cat ${HOME}/bin/ssh-mount.sh | egrep "Servers:.*" | sed "s#echo \-e \"\${green}Servers\:\$NC##g; s#\"\;##g; s#,##g")
-}
-compdef _ssh-mount ssh-mount.sh
-
-# vim: set ft=zsh:
diff --git a/.zsh/rc/99greetings b/.zsh/rc/99greetings
deleted file mode 100644
index 47cf822..0000000
--- a/.zsh/rc/99greetings
+++ /dev/null
@@ -1,15 +0,0 @@
-# machine dependent stuff
-. $HOME/.private_stuff.zsh
-#--------------------
-# Greetings
-#--------------------
-#cat /etc/motd
-#echo -e "${CYAN}Welcome to ZSH ${RED}${ZSH_VERSION}$NC"
-sysinfo
-# don't want to read the same every time I open a new shell
-if [ -x /usr/bin/fortune ]; then
- /usr/bin/fortune -s
-fi
-echo
-
-# vim: set ft=zsh:
diff --git a/.zshrc b/.zshrc
index 75c9aa7..4eb4118 100644
--- a/.zshrc
+++ b/.zshrc
@@ -7,11 +7,571 @@
stty -echo
ZDOTDIR="$HOME/.zsh"
-# Makes this file smaller ;)
-for file in $ZDOTDIR/rc/**/*
-do
- . "$file"
-done
+
+# Colors {{{
+#use these in functions/shell scripts
+export red='\e[0;31m'
+export RED='\e[1;31m'
+export green='\e[0;32m'
+export GREEN='\e[1;32m'
+export blue='\e[0;34m'
+export BLUE='\e[1;34m'
+export purple='\e[0;35m'
+export PURPLE='\e[1;35m'
+export cyan='\e[0;36m'
+export CYAN='\e[1;36m'
+export NC='\e[0m'
+
+# these are for use in PROMPT
+fg_green=$'%{\e[0;32m%}'
+fg_blue=$'%{\e[0;34m%}'
+fg_cyan=$'%{\e[0;36m%}'
+fg_red=$'%{\e[0;31m%}'
+fg_brown=$'%{\e[0;33m%}'
+fg_purple=$'%{\e[0;35m%}'
+fg_light_gray=$'%{\e[0;37m%}'
+fg_dark_gray=$'%{\e[1;30m%}'
+fg_light_blue=$'%{\e[1;34m%}'
+fg_light_green=$'%{\e[1;32m%}'
+fg_light_cyan=$'%{\e[1;36m%}'
+fg_light_red=$'%{\e[1;31m%}'
+fg_light_purple=$'%{\e[1;35m%}'
+fg_no_colour=$'%{\e[0m%}'
+fg_white=$'%{\e[1;37m%}'
+fg_black=$'%{\e[0;30m%}'
+
+# colors in framebuffer!
+if [ "$TERM" = "linux" ]; then
+ ${HOME}/bin/parse_xdefaults.sh
+ clear #for background artifacting
+fi
+
+# some better colors for ls
+eval "`dircolors -b`"
+
+# }}}
+# Keybindings {{{
+bindkey -e
+bindkey '\e[1~' beginning-of-line
+bindkey '\e[4~' end-of-line
+bindkey '\e[3~' delete-char
+bindkey '\e[2~' overwrite-mode
+bindkey "^[[7~" beginning-of-line # Pos1
+bindkey "^[[8~" end-of-line # End
+# HOWTO make your own:
+# bindkey '<crtl+alt+key>' <action> (do this in a shell)
+# for some actions run `bindkey`
+# }}}
+# Variables {{{
+#export CDPATH=.:$HOME
+export OOO_FORCE_DESKTOP=gnome
+export PATH=${HOME}/misc/scripts:${PATH}
+export EDITOR=vim
+export PAGER=vimpager
+export LESSCHARSET="UTF-8"
+export LESSOPEN='|/usr/bin/lesspipe.sh %s 2>&-'
+export LESS='-F -i -n -w -g -M -R -P%t?f%f \
+:stdin .?pb%pb\%:?lbLine %lb:?bbByte %bb:-...'
+
+# }}}
+# Terminal title {{{
+# also found somewhere
+prompt_eof_setup() {
+ # preexec() is run after you press enter on your command but before the command is run.
+ preexec() {
+ # define screen/terminal title with the current command (http://aperiodic.net/phil/prompt/)
+ case $TERM in
+ rxvt-unicode*)
+ printf '\33]2;%s\007' $1
+ ;;
+ screen*)
+ local CMD=${1[(wr)^(*=*|sudo|ssh|exec|-*)]}
+ printf '\ek%s\e\\' $CMD;;
+ esac
+ }
+}
+
+prompt_eof_setup "$@"
+
+EXITCODE="%(?..(%?%1) )"
+
+# function to show the current git branch in prompt
+parse_git_branch() {
+ git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
+}
+# }}}
+# Prompt {{{
+# necessary if you want to use functions in the prompt
+# without this they wouldn't be run again
+precmd () {
+# this has to be on the edge or you have some spaces in the prompt
+# if you have any workaround please tell
+if [[ $UID != 0 ]]; then
+ local username_color=$fg_blue
+else
+ local username_color=$fg_red
+fi
+local host_color=$fg_light_green
+local path_color=$fg_light_blue
+local gitbranch_color=$fg_purple
+local exitcode_color=$fg_red
+PROMPT="${username_color}$USERNAME${fg_no_colour}@${host_color}%m${fg_no_colour}\
+:${path_color}%~${fg_no_colour} ${gitbranch_color}$(parse_git_branch)${fg_no_colour}
+${exitcode_color}$EXITCODE${fg_no_colour}> "
+}
+
+## Spelling prompt
+SPROMPT='zsh: correct '%R' to '%r' ? ([Y]es/[N]o/[E]dit/[A]bort) '
+
+# }}}
+# Functions {{{
+
+# always /etc/rc.d/blub is a bit too much work ;)
+rc() {
+ sudo /etc/rc.d/$1 $2
+}
+
+# usefull if you have more machines and want to easily update the config here
+update_zshrc() {
+ old_pwd="$PWD"
+ builtin cd "$HOME/.zsh"
+ wget http://flo.server-speed.net/stuff/dotfiles/zshrc -O $HOME/.zshrc
+ wget http://flo.server-speed.net/stuff/dotfiles/zsh/filelist -O /tmp/zsh_filelist
+ wget -B "http://flo.server-speed.net/stuff/dotfiles/zsh/" -i /tmp/zsh_filelist -x --cut-dirs=3 -nH
+ rm /tmp/zsh_fileslist
+ rm **/index.html
+ builtin cd "$old_pwd"
+ exec zsh
+}
+
+# add current time to a file
+mbk() {
+ mv -b "${1}" "$(echo $1 | sed "s/\./_`date +%Y-%m-%d_%T`./")"
+}
+
+# easily make backups
+bk() {
+ cp -b "${1}" "$(echo $1 | sed "s/\./_`date +%Y-%m-%d_%T`./")"
+}
+
+# chpwd () => a function which is executed whenever the directory is changed
+chpwd() {
+ ls
+}
+
+# idea by Gigamo http://bbs.archlinux.org/viewtopic.php?pid=478094#p478094
+ls () {
+ /bin/ls -rhbtF --color=auto $@ &&
+ echo "${PURPLE}Files: ${BLUE}$(/bin/ls -l $@ | grep -v "^[l|d|total]" | wc -l) ${GREEN}--- ${PURPLE}Directories: ${BLUE}$(/bin/ls -l $@ | grep "^d" | wc -l)${NC}"
+}
+
+password() {
+ if [ -z "$1" ]; then
+ count=8
+ else
+ count="$1"
+ fi
+ < /dev/urandom tr -dc A-Za-z0-9_ | head -c$count
+}
+
+# jump between directories
+# Copyright 2005 Nikolai Weibull <nikolai@bitwi.se>
+# notice: option AUTO_PUSHD has to be set
+d(){
+ emulate -L zsh
+ autoload -U colors
+ local color=$fg_bold[blue]
+ integer i=0
+ dirs -p | while read dir; do
+ local num="${$(printf "%-4d " $i)/ /.}"
+ printf " %s $color%s$reset_color\n" $num $dir
+ (( i++ ))
+ done
+ integer dir=-1
+ read -r 'dir?Jump to directory: ' || return
+ (( dir == -1 )) && return
+ if (( dir < 0 || dir >= i )); then
+ echo d: no such directory stack entry: $dir
+ return 1
+ fi
+ cd ~$dir
+}
+
+# from the grml zshrc iirc
+hglob() {
+ echo -e "
+ / directories
+ . plain files
+ @ symbolic links
+ = sockets
+ p named pipes (FIFOs)
+ * executable plain files (0100)
+ % device files (character or block special)
+ %b block special files
+ %c character special files
+ r owner-readable files (0400)
+ w owner-writable files (0200)
+ x owner-executable files (0100)
+ A group-readable files (0040)
+ I group-writable files (0020)
+ E group-executable files (0010)
+ R world-readable files (0004)
+ W world-writable files (0002)
+ X world-executable files (0001)
+ s setuid files (04000)
+ S setgid files (02000)
+ t files with the sticky bit (01000)
+ print *(m-1) # Dateien, die vor bis zu einem Tag modifiziert wurden.
+ print *(a1) # Dateien, auf die vor einem Tag zugegriffen wurde.
+ print *(@) # Nur Links
+ print *(Lk+50) # Dateien die ueber 50 Kilobytes grosz sind
+ print *(Lk-50) # Dateien die kleiner als 50 Kilobytes sind
+ print **/*.c # Alle *.c - Dateien unterhalb von \$PWD
+ print **/*.c~file.c # Alle *.c - Dateien, aber nicht 'file.c'
+ print (foo|bar).* # Alle Dateien mit 'foo' und / oder 'bar' am Anfang
+ print *~*.* # Nur Dateien ohne '.' in Namen
+ chmod 644 *(.^x) # make all non-executable files publically readable
+ print -l *(.c|.h) # Nur Dateien mit dem Suffix '.c' und / oder '.h'
+ print **/*(g:users:) # Alle Dateien/Verzeichnisse der Gruppe >users<
+ echo /proc/*/cwd(:h:t:s/self//) # Analog zu >ps ax | awk '{print $1}'<"
+}
+
+# let vim highlight any file for us and save it as html
+2html() {
+ vim -n -c ':syntax on' -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 > /dev/null 2> /dev/null
+}
+
+# download any package's PKGBUILD and go into that dir
+yd(){
+ pbget --aur $1
+ builtin cd $1
+}
+
+# some script to make this damn agent work easier
+if [ "x$DISPLAY" != "x" ]; then
+ source ${HOME}/bin/gpg-agent.sh
+fi
+
+# yeah I know you shouldn't use it...
+google(){
+ firefox "http://www.google.com/search?&num=100&q=$*" &
+ disown firefox
+}
+
+# swaps 2 files
+swap() {
+ if [ "$1" = "" ] || [ "$2" = "" ] || [ "$1" = "-h" ]; then
+ echo -e "${blue}Usage:$NC swap <file> <file>";
+ echo -e "Swaps files";
+ return 1
+ fi
+ if [ -f $1 ] && [ -f $2 ]; then
+ local TMPFILE=tmp.$$
+ mv "$1" $TMPFILE
+ mv "$2" "$1"
+ mv $TMPFILE "$2"
+ else
+ echo -e "${RED}Error:$NC One or more files don't exist"
+ return 1
+ fi
+}
+
+# get your internal and external IPs
+# also found somewhere on the net
+my_ip() {
+ MY_IP=$(/sbin/ifconfig eth0 | awk '/inet/ { print $2 } ' | \
+ sed -e s/addr://)
+ MY_ISP=$(curl www.wieistmeineip.de | awk '(/[0-9]?[0-9]?[0-9]\.[0-9]?[0-9]?[0-9]\.[0-9]?[0-9]?[0-9]\.[0-9]?[0-9]?[0-9]/) {print}' | awk 'gsub(/[>||<]/," ")' | awk '{print $3}')
+}
+
+ii() {
+ echo -e "\nUser ${RED}"${USER:-"N/A"}"$NC on "${RED}${HOST:-"N/A"}"$NC"
+ echo -e "\n${RED}Additionnal information:$NC " ; uname -a
+ echo -e "\n${RED}Users logged on:$NC " ; w -h
+ echo -e "\n${RED}Current date:$NC " ; date
+ echo -e "\n${RED}Machine stats:$NC " ; uptime
+ echo -e "\n${RED}Memory stats:$NC " ; free
+ my_ip 2>&- ;
+ echo -e "\n${RED}Local IP Address:$NC" ; echo ${MY_IP:-"N/A"}
+ echo -e "\n${RED}ISP Address:$NC" ; echo ${MY_ISP:-"N/A"}
+ echo
+}
+
+# short info to display when opening a new shell
+short_ii() {
+ echo -e "\nUser ${RED}"${USER:-"N/A"}"$NC on "${RED}${HOST:-"N/A"}"$NC"
+ echo -e "\n${RED}Machine stats:$NC " ; uptime
+ echo
+}
+
+# actually it converts any mp4 or flv to mp3...
+youtube2mp3() {
+ for file in "$@"
+ do
+ if [ -f "${file}" ] ; then
+ title=$(echo ${file} | sed 's/\(.*\)\..*/\1/')
+ case $(file -b --mime-type "${file}") in
+ video/mp4)
+ faad "${file}" &&
+ lame "${title}.wav" "${title}.mp3" &&
+ rm "${title}.wav"
+ ;;
+ video/x-flv)
+ ffmpeg -i "${file}" -vn -acodec copy "${title}.mp3"
+ ;;
+ *)
+ echo -e "${RED}Error:$NC No rule how to convert \"${file}\""
+ ;;
+ esac
+ else
+ echo -e "${RED}Error:$NC \"${file}\" doesn't exist"
+ fi
+ done
+}
+
+
+# }}}
+# History {{{
+export HISTFILE=~/.zsh/histfile
+# for some odd reason allocating RAM to save the histfile takes ages..
+export HISTSIZE=5000
+export SAVEHIST=$HISTSIZE
+# }}}
+# Other ZSH options {{{
+autoload colors
+colors
+# .. -> cd ../
+setopt autocd
+
+setopt correct_all
+
+# cd /etc/**/foo/blub searches ;)
+setopt extendedglob
+
+# push cds to directory stack
+setopt auto_pushd
+
+# don't push something twice
+setopt pushd_ignore_dups
+
+# don't kill jobs when exiting shell
+setopt no_hup
+
+# show us when some command didn't exit with 0
+setopt print_exit_value
+
+# makepkg -g > PKGBUILD
+# zsh: file exists: PKGBUILD
+#
+# work saved ;)
+setopt no_clobber
+
+setopt INC_APPEND_HISTORY
+setopt SHARE_HISTORY
+setopt EXTENDED_HISTORY
+setopt HIST_REDUCE_BLANKS
+setopt HIST_IGNORE_SPACE
+setopt nohistverify
+setopt prompt_subst
+setopt HIST_FCNTL_LOCK
+
+# disable XON/XOFF flow control (^s/^q)
+stty -ixon
+
+# }}}
+# Aliases {{{
+# better ask before we loose data
+alias rm='rm -Iv'
+alias cp='cp -iv'
+alias mv='mv -iv'
+
+# I don't like bytes
+alias dum='du -kh --max-depth=2'
+alias du='du -kh'
+alias dus='du -skh'
+#alias df='df -kTh'
+alias df='pydf'
+
+# function to make ls look nice is below
+alias ll='ls -l'
+alias la='ls -a'
+alias lla='ls -la'
+alias lld='ls -ld'
+
+alias newpkgb=' cp $HOME/misc/aur/PKGBUILD.proto PKGBUILD'
+
+# well I got used to that name ;)
+alias aurball='makepkg --source -f'
+alias pkgbuild='makepkg -fc && aurball'
+alias pushpkg='cp *.pkg.tar.gz *.src.tar.gz /mnt/mistral/srv/drop'
+
+alias sudo="sudo " #Sudo wont recognize aliases without this
+alias s='sudo'
+alias x='x -v'
+alias xx='x -Rv'
+alias u='upload.sh'
+alias mtr='mtr -t'
+alias wcl='wc -l'
+alias mdstat='cat /proc/mdstat'
+alias keymap='setxkbmap de -variant nodeadkeys'
+alias hexdump='hexdump -C'
+
+alias pager='${PAGER}'
+alias more='${PAGER}'
+alias less='${PAGER}'
+alias c='${PAGER}'
+alias v='vim'
+alias gv='gvim'
+alias sc='sudo ${PAGER}'
+alias sv='sudo vim'
+alias sgv='sudo gvim'
+
+alias g='git'
+alias gitk='giggle'
+# python is too long to type...
+alias q='python'
+
+alias ncmpc='ncmpc -c'
+alias youtube='youtube-dl -b '
+alias rscp='rsync --partial --progress --rsh=ssh'
+
+alias mkdir='nocorrect mkdir'
+alias wget='nocorrect noglob wget'
+
+# updating commands can be long...
+alias yup='yaourt -Syu --aur'
+alias yu='yaourt -Syu'
+
+# can't they make it use sudo on it's own like yaourt?
+alias p='sudo powerpill'
+alias pa='sudo powerpill -Syu'
+alias py='sudo powerpill -S'
+alias pacman='sudo pacman-color'
+
+alias su='su -'
+
+alias y='yaourt'
+alias ys='yaourt -S'
+alias ysb='yaourt -Sb'
+alias ysi='yaourt -Si'
+alias yr='yaourt -Rs'
+alias yrc='yaourt -Rcs'
+alias yrn='yaourt -Rns'
+alias yqo='yaourt -Qo'
+
+# too long to remember
+alias asciidoc_full='asciidoc -a icons -a toc'
+
+# other random aliases
+alias ☠='pkill -9'
+alias nocomment='egrep -v "^\s*(#|$)"'
+
+# global aliases work EVERYWHERE
+# e.g. dmesg tt
+# show last 20 lines of dmesg
+alias -g gg='| grep --color'
+alias -g eg='| egrep --color'
+alias -g tt='| tail -n 20'
+# I always hit y instead of | ...
+alias -g vv='|'
+
+# who doesn't need pastebins?
+alias -g sp="2>&1 | curl -F 'sprunge=<-' http://sprunge.us"
+alias -g pp="2>&1 | wgetpaste -X "
+
+# e.g. "blub.txt" opens the file instead of showing command not found
+alias -s txt=mousepad
+alias -s jpg=gpicview
+alias -s png=gpicview
+
+# }}}
+# Completion stuff {{{
+autoload -Uz compinit
+compinit
+
+# correct 7etc/foo to /etc/foo
+# if anyone has a working solution for /etc7foo please contact me
+function _7slash {
+ if [[ $words[CURRENT] = 7(#b)(*)(#e) ]]
+ then
+ compadd -U -X 'Correct leading 7 to /' -f /$match[1]
+ fi
+}
+
+zstyle :compinstall filename '$HOME/.zshrc'
+
+# cache results because yaourt is slow
+zstyle ':completion:*' use-cache on
+zstyle ':completion:*' cache-path $HOME/.zsh/cache
+zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
+zstyle ':completion:*' completer _complete _match _approximate _7slash
+zstyle ':completion:*:match:*' original only
+
+# allow more mistypes if longer command
+zstyle -e ':completion:*:approximate:*' \
+ max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3))numeric)'
+
+# ignore completion for commands we don't have
+zstyle ':completion:*:functions' ignored-patterns '_*'
+
+# show menu when tabbing
+zstyle ':completion:*' menu yes select
+
+# better completion for kill
+zstyle ':completion:*:*:kill:*' command 'ps -u$USER -o pid,%cpu,tty,cputime,cmd'
+
+# bugged with zsh 4.3.10 for whatever reason
+#zstyle ':completion:*' file-sort time
+zstyle ':completion:*' file-sort name
+
+# remove / after dirnames
+# e.g. ls foo/ -> ls foo
+#zstyle ':completion:*' squeeze-slashes true
+zstyle ':completion:*' squeeze-slashes false
+
+# if in foo/bar don't show bar when cd ../<TAB>
+zstyle ':completion:*:cd:*' ignore-parents parent pwd
+
+# ignore case when completing
+zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
+
+# make some stuff look better
+zstyle ':completion:*:descriptions' format $'%{\e[0;31m%}completing %B%d%b%{\e[0m%}'
+zstyle ':completion:*:warnings' format $'%{\e[0;31m%}No matches for:%{\e[0m%} %d'
+
+# vim: set ft=zsh:
+# complete my little rc function (archlinux startscripts)
+function _rc () {
+ case $CURRENT in
+ 2) compadd $(find /etc/rc.d/ -maxdepth 1 -type f -executable -printf '%f ');;
+ 3) compadd $(/etc/rc.d/$words[2] 2> /dev/null | grep -i usage | sed 's/.*{\(.*\)}/\1/; s/|/ /g');;
+ esac
+}
+compdef _rc rc
+
+# easier way to use sshfs ;)
+function _ssh-mount () {
+ compadd $(cat ${HOME}/bin/ssh-mount.sh | egrep "Servers:.*" | sed "s#echo \-e \"\${green}Servers\:\$NC##g; s#\"\;##g; s#,##g")
+}
+compdef _ssh-mount ssh-mount.sh
+
+# vim: set ft=zsh:
+# machine dependent stuff
+. $HOME/.private_stuff.zsh
+# }}}
+# Greetings {{{
+#cat /etc/motd
+#echo -e "${CYAN}Welcome to ZSH ${RED}${ZSH_VERSION}$NC"
+sysinfo
+# don't want to read the same every time I open a new shell
+if [ -x /usr/bin/fortune ]; then
+ /usr/bin/fortune -s
+fi
+echo
+
+# }}}
# Show again
stty echo
+
+# vim: set ft=zsh: