shopt -s checkwinsize #Pour pas s'écrire dessus shopt -s histappend shopt -s autocd #No more cd xx shopt -s cdspell #drain bramage shopt -s dirspell ##shopt -s autocd #Like zsh PROMPT_COMMAND='history -a' alias dvorak='setxkbmap dvorak; setxkbmap -option compose:ralt' #dvorak alias qwertz='setxkbmap ch,fr' #For autocompletions #function have() { return 1; } #Some files use have: suppress warnings (yeah: 2>.. ) #function _completion_loader() { return 1; } #cd /usr/share/bash-completion/completions #for i in *; do source ./$i; done #unset have #unset _completion_loader complete -cf sudo complete -cf man #####ON DEFINIT LES COULEURS red='\033[31m' RED='\033[31m\033[01m' YELLOW='\033[33m' GREEN='\033[32m' blue='\033[34m' BLUE='\033[34m' cyan='\033[36m' CYAN='\033[36m' magenta='\033[35m' DFT='\033[0m' white='\033[37m' #####ON DÉFINIT LE TITRE DE LA FENETRE PAR LE REP EN COURS case "$TERM" in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"' ;; *) ;; esac #####LA COULEUR DU SHELL #PS1="$RED\u$DFT$white@$magenta\h $DFT>>$CYAN\w $DFT" #PS1="\u@\h >>\w " #PS1="\[$RED\u$DFT$white@$magenta\h $DFT>>$CYAN\w $DFT\]" #PS1="\[$RED\]\u\[$DFT$white\]@\[$magenta\]\h \[$DFT\]>>\[$CYAN\]\w \[$DFT\]" #PROMPT_COMMAND='history -a;echo -en "\033[m\033[38;5;2m"$(( `sed -nu "s/MemFree:[\t ]\+\([0-9]\+\) kB/\1/p" /proc/meminfo`/1024))"\033[38;5;22m/"$((`sed -nu "s/MemTotal:[\t ]\+\([0-9]\+\) kB/\1/Ip" /proc/meminfo`/1024 ))MB"\t\033[m\033[38;5;55m$(< /proc/loadavg)\033[m"' #if [ "$HOSTNAME" == "chuck" ]; then # MY_HOST_COL='[31m' #ugly ! #else # MY_HOST_COL='[34m' #fi #PS1='\[\e[0;36m\]\t \[\e[1;30m\][\[\e$MY_HOST_COL\]\u@\H\[\e[1;30m\]\[\e[0;32m\]\[\e[1;30m\]] \[\e[1;37m\]\w\[\e[0;37m\] \n$ ' source ~/.bash_ps1 #PS1='\[\e[0;36m\] \T \[\e[1;30m\][\[\e$MY_HOST_COL\]\u@\H\[\e[1;30m\]\[\e[0;32m\]\[\e[1;30m\]] \[\e[1;37m\]\w\[\e[0;37m\] \n$ ' ############### #### ALIAS #### ############### # {{{ alias ..='cd ..' alias vf='cd' alias xs='cd' alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias vm='mv -i' alias df='dfc' alias free='freec' alias shred='shred -n 35 -z -u -v -f' if [ "$TERM" != "dumb" ]; then eval "`dircolors -b`" alias ls='ls --color=auto -N' fi alias sl='ls -N' alias la='ls -lahN' alias sudp='sudo' #fuck tpyos :p alias sudpo='sudo' alias halt='sudo poweroff' #alias pacman='pacman-color' alias pacmacn='pacman' # '[r]emove [o]rphans' - recursively remove ALL orphaned packages alias pacro="/usr/bin/pacman -Qtdq > /dev/null && sudo /usr/bin/pacman -Rns \$(/usr/bin/pacman -Qtdq | sed -e ':a;N;\$!ba;s/\n/ /g')" alias grep='grep --color' alias b+='xbacklight -inc 10% -steps 1 -time 0' alias b-='xbacklight -dec 10% -steps 1 -time 0' alias svim='sudo vim' alias bim='vim' alias vi='vim' alias VIM='vim' alias ivm='vim' alias vmi='vim' alias gl='git log --graph --abbrev-commit --pretty=oneline --decorate' alias gitst='git status' alias gti='git' alias git_mail='git send-email --annotate --compose origin' alias poule='git pull' alias gs='git status' alias gci='git commit' alias push='git push' alias makew='make' alias mkae='make' alias amke='make' alias mak='make' alias amek='make' alias BSI2='cd ~/Documents/Studies/BSI2*/' UNI_STUDY_PATH='/home/frank/Documents/Studies/MUSE1/' alias BSI3='cd "$UNI_STUDY_PATH"' OCTOPUS=~/.my_utils/octopus.sh alias dual='$OCTOPUS monitor dual' alias laptop='$OCTOPUS monitor laptop' alias programming='$OCTOPUS monitor programming' alias extern='$OCTOPUS monitor extern' alias clone='$OCTOPUS monitor clone' alias CV='$OCTOPUS monitor CV' alias volup='$OCTOPUS volume up' alias voldown='$OCTOPUS volume down' alias volmute='$OCTOPUS volume mute' alias suspend='$OCTOPUS suspend' alias mfilms='cd /dev/shm && mkdir films && sshfs frank@vi-di.fr:/media/ films/' alias muni='cd /dev/shm && mkdir uni && sshfs villaro0@pc69240:/user/l1/2011/villaro0/ uni/' alias mlakes='cd /dev/shm && mkdir lakes && sshfs frank@lilakes:/home/frank lakes' alias upgrub='sudo grub-mkconfig -o /boot/grub/grub.cfg' alias upkey='gpg --keyserver subkeys.pgp.net --send-key 6F36914A' alias shm='cd /dev/shm' alias ip6='ip -6' alias disk-usage-analyser='baobab' alias o='octave --quiet --no-gui' alias R='R --quiet' alias cdu='cdu -idh' alias dus='du -sh * | sort -h' alias im='profanity' alias eclipseJEE='/home/frank/Programmation/J2EE/eclipse/eclipse' alias mst='mvn install -DskipTests' alias arc='tig' alias ccat='pygmentize -g' #python-fragments alias phpserver='php -S localhost:8080' # }}} ############### ## FONCTIONS ## ############### # {{{ function toGVA { wget http://frank.villaro-dixon.eu/TPG/ -q -O - echo "" } function fuck { killall -9 "$1" echo "fucking $1" killed } function cd #{{{ { MY_LAST=`pwd` if [ $# -eq 0 ]; then builtin cd ~ && cons_set > /dev/null && ls else builtin cd "$*" && cons_set > /dev/null && ls fi } #}}} function back { cd $MY_LAST } function pdfsearch #{{{ { for pdf in *.pdf; do pdftotext "$pdf" - | grep --color --with-filename --label="$pdf" "$1"; done } #}}} function man { #{{{ env LESS_TERMCAP_mb=$'\E[01;31m' \ LESS_TERMCAP_md=$'\E[01;38;5;74m' \ LESS_TERMCAP_me=$'\E[0m' \ LESS_TERMCAP_se=$'\E[0m' \ LESS_TERMCAP_so=$'\E[38;5;246m' \ LESS_TERMCAP_ue=$'\E[0m' \ LESS_TERMCAP_us=$'\E[04;38;5;146m' \ man "$@" } #}}} if [[ -z $SSH_CLIENT ]]; then alias ssh='my_ssh' function my_ssh #{{{ { ssh-add -l | grep id_rsa.auth > /dev/null if [ $? -eq 1 ]; then echo -e "$RED Please enter ssh passphrase ;) $DFT" ssh-add ~/.ssh/id_rsa.auth fi; /usr/bin/ssh "$@" } # }}} alias scp='my_scp' function my_scp #{{{ { ssh-add -l | grep id_rsa.auth > /dev/null if [ $? -eq 1 ]; then echo -e "$RED Please enter ssh passphrase ;) $DFT" ssh-add ~/.ssh/id_rsa.auth fi; /usr/bin/scp "$@" } # }}} fi function logs #{{{ { tail -f $1 | ccze -A } # }}} function mkcd #{{{ { mkdir -p "$@" cd "$@" } # }}} function extract #{{{ { local e=0 i c for i; do if [ -f $i && -r $i ]; then c= case $i in *.tar.bz2) c='tar xjf' ;; *.tar.gz) c='tar xzf' ;; *.bz2) c='bunzip2' ;; *.gz) c='gunzip' ;; *.tar) c='tar xf' ;; *.tbz2) c='tar xjf' ;; *.tgz) c='tar xzf' ;; *.7z) c='7z x' ;; *.Z) c='uncompress' ;; *.exe) c='cabextract' ;; *.rar) c='unrar x' ;; *.xz) c='unxz' ;; *.zip) c='unzip' ;; *) echo "$0: cannot extract \`$i': Unrecognized file extension" >&2; e=1 ;; esac [ $c ] && command $c "$i" else echo "$0: cannot extract \`$i': File is unreadable" >&2; e=2 fi done return $e } # }}} function study #{{{ { if [ -z $1 ]; then STUDY_PATH='' else if [ -d "$UNI_STUDY_PATH$1" ]; then STUDY_PATH="$1" else STUDY_PATH='' fi fi builtin cd "$UNI_STUDY_PATH$STUDY_PATH" if [ -e calendar ]; then echo -e "$RED WORK TO DO SOON:$BLUE" calendar -A10 echo -e "$DFT" fi ls } #}}} _StudyCompletion() { # {{{ local cur # Pointer to current completion word. COMPREPLY=() # Array variable storing the possible completions. cur=${COMP_WORDS[COMP_CWORD]} _STUDY_ACTUAL_DIR=`pwd` builtin cd "$UNI_STUDY_PATH" ALL_POSSIBLE_WORDS=(*) builtin cd "$_STUDY_ACTUAL_DIR" for i in ${ALL_POSSIBLE_WORDS[@]}; do # echo ">>>$i" WORD=$(echo $i | grep "^$cur" | tr -d ' ') #ugly if [ $WORD ]; then COMPREPLY+=("$WORD"); fi; done return 0 } # }}} complete -F _StudyCompletion -o filenames study RO_ROOT_DIRECTORY=/dev/shm/ro_$USER ro() { # {{{ if [ ! -d $RO_ROOT_DIRECTORY ]; then mkdir $RO_ROOT_DIRECTORY fi if [ -z $1 ]; then my_root_set=`cat $RO_ROOT_DIRECTORY/default 2>/dev/null` else my_root_set=`cat $RO_ROOT_DIRECTORY/$1 2>/dev/null` fi; if [ -n "$my_root_set" ]; then cd $my_root_set; else if [ -z $1 ]; then echo -e "root for flag $1 not set.\nSet-it with roset $1" else echo "root not set ! set it with roset !"; fi fi; } # }}} roset() { # {{{ if [ ! -d $RO_ROOT_DIRECTORY ]; then mkdir $RO_ROOT_DIRECTORY fi if [ -z $1 ]; then pwd > $RO_ROOT_DIRECTORY/default else pwd > $RO_ROOT_DIRECTORY/$1 fi } # }}} _RoRosetCompletion() { # {{{ local cur # Pointer to current completion word. COMPREPLY=() # Array variable storing the possible completions. cur=${COMP_WORDS[COMP_CWORD]} _ROSET_ACTUAL_DIR=`pwd` builtin cd $RO_ROOT_DIRECTORY ALL_POSSIBLE_WORDS=(*) builtin cd $_ROSET_ACTUAL_DIR # echo "Cur: >>$cur<<" for i in ${ALL_POSSIBLE_WORDS[@]}; do # echo ">>>$i" WORD=$(echo $i | grep "^$cur" | tr -d ' ') #ugly if [ $WORD ]; then # echo "blah!: >>$WORD<<" COMPREPLY+=("$WORD"); fi; done return 0 } # }}} complete -F _RoRosetCompletion -o filenames ro roset function calc #{{{ { echo "scale=3;$@" | bc -l } #}}} function xournal { #{{{ if [ -e "$1".xoj ]; then /usr/bin/xournal "$1".xoj else /usr/bin/xournal "$1" fi } #}}} function mutt { #{{{ if [ $# -eq 0 ]; then if [ "$(pidof mutt)" ]; then /usr/bin/mutt -R else /usr/bin/mutt fi; else /usr/bin/mutt $@ fi; } #}}} function up2frank { #{{{ if [ ! $# -eq 1 ]; then echo "usage: up2frank FILE" return else file=$(echo $1 | sed 's/ /_/g') scp "$1" "frank@vi-di.fr:public_html/upload/$file" > /dev/null echo "https://frank.villaro-dixon.eu/upload/$file" fi; } #}}} function rfc { #{{{ firefox http://www.ietf.org/rfc/rfc$1.txt } #}}} function tobed { #{{{ if [ $? -eq 0 ]; then #want to sleep now tstmp=`date +%s` tstmp=$(($tstmp+1000)) #16 min to fall asleep tomorrow=$(($tstmp + 82800)) cycles=0; one_cycle=5580 #93 min while true; do tstmp=$(($tstmp + $one_cycle)) ((cycles++)) hour=`echo $tstmp | date --date=@$tstmp +%-H` if [[ $hour -gt 4 && $hour -lt 12 ]]; then min=`echo $tstmp | date --date=@$tstmp +%M` stime=`echo "scale=1; $one_cycle * $cycles / 3600" | bc` if [ $cycles -lt 5 ]; then #Not quite right: btw 7 and 9 hours -> 5/6 cycles echo -ne $RED elif [ $cycles -lt 6 ]; then echo -ne $YELLOW else echo -ne $GREEN fi echo -e "$cycles cycles ($stime h)\t\tGet up: [$hour:$min]" echo -ne $DFT fi if [[ $tstmp -gt $tomorrow && $cycles -gt 6 ]]; then break; fi done; fi } #}}} function bpm { read n start=`date +%s` beats=0 while true; do read n ((beats++)) actual=`date +%s` diff=`echo "scale=1; $beats / (($actual - $start) / 60)" | bc` echo $diff bpm done } function op { file="$1" ext=${file##*\.} echo file is "$ext" case $ext in "pdf") echo "toto" evince "$1" ;; "zip") file-roller "$1" ;; "latex"|"tex") vim "$1" ;; "java") vim "$1" ;; "uxf") umlet "$1" ;; "html") firefox "$1" ;; "odt") libreoffice "$1" ;; "png"|"jpg"|"jpeg") eog "$i" ;; *) xdg-open "$1" ;; esac } function vim { #Pour Ctrl-S sur vim local STTYOPTS="$(stty --save)" stty stop '' -ixoff command vim "$@" stty "$STTYOPTS" } #CONS(OLE) function, a pretty useful functions that keeps track of # the lasts whereabouts (in terms of folders) of the terminal CONS_ROOT_DIRECTORY=/dev/shm/cons_$USER function cons { if [ ! -d $CONS_ROOT_DIRECTORY ]; then mkdir $CONS_ROOT_DIRECTORY fi; if [ $# -eq 0 ]; then for f in $CONS_ROOT_DIRECTORY/*; do echo -e "`echo $f|rev|cut -d/ -f1|rev` >>\n\t`cat $f`" #XXX basename done elif [ $# -eq 1 ]; then if [ -e $CONS_ROOT_DIRECTORY/$1 ]; then cd $(cat $CONS_ROOT_DIRECTORY/$1) else echo $1 does not exist fi; fi; } function cons_set { TTY=$(tty) if [ ! -d $CONS_ROOT_DIRECTORY ]; then mkdir $CONS_ROOT_DIRECTORY fi; TTYNO=`echo $TTY | cut -d/ -f 4` pwd > $CONS_ROOT_DIRECTORY/$TTYNO } #cttc: Copy To my Tty Cwd # cttc TTY_NO FILE function cttc { if [ $# -eq 2 ]; then cwd=`cat $CONS_ROOT_DIRECTORY/$1` cp -r "$2" "$cwd" else echo "cons to see terminals - cttc TERM FILE" fi } function dockat { docker attach -ti $1 bash } # }}} SSHAGENT=/usr/bin/ssh-agent SSHAGENTARGS="-s" if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then eval `$SSHAGENT $SSHAGENTARGS` trap "kill $SSH_AGENT_PID" 0 fi ############### ### EXPORTS ### ############### # {{{ export EDITOR="vim" GPG_TTY=`tty` export GPG_TTY export GPGKEY=016106A6AF223DBE export PYTHONPATH=/usr/local/lib/python2.7/dist-packages ###export CC=clang #export OMPI_MPICC=clang++ export DEVKITPRO=/opt/devkitpro export DEVKITARM=$DEVKITPRO/devkitARM export PATH=$PATH:$DEVKITARM/bin export MANPATH=$MANPATH:$DEVKITARM/man export PATH=$PATH:~/Programmation/dotfiles/Utils export HISTCONTROL=erasedups export HISTSIZE=99999999 HISTTIMEFORMAT="%d/%m/%y %T " # }}} export PATH="$HOME/opt/cross/bin:$PATH" export PATH="$HOME/.gem/ruby/2.2.0/bin:$PATH" export PYTHONSTARTUP=~/Programmation/dotfiles/startup.py #Launch startx when login [[ -z $DISPLAY && $XDG_VTNR -le 4 && -z $SSH_CLIENT ]] && exec startx