diff --git a/.fehbg b/.fehbg index 8a2bcc5..aaf6dc6 100755 --- a/.fehbg +++ b/.fehbg @@ -1,2 +1,2 @@ #!/bin/sh -feh --randomize --recursive --bg-scale ~/wallpaper/wallpaper +feh --bg-scale --no-fehbg --recursive --randomize ~/wallpaper/wallpaper diff --git a/.i3/config b/.i3/config index 0c34518..f14ed3e 100755 --- a/.i3/config +++ b/.i3/config @@ -14,7 +14,7 @@ exec "setxkbmap dvorak" exec --no-startup-id ~/.fehbg exec /home/ahosking/.screenlayout/home_desktop.sh exec --no-startup-id nm-applet -exec --no-startup-id owncloud +exec --no-startup-id nextcloud exec --no-startup-id insync start set $mod Mod4 diff --git a/install.sh b/install.sh index 7e22da5..c8cccae 100755 --- a/install.sh +++ b/install.sh @@ -9,6 +9,12 @@ export EXTRA_DIR [ -d "$DOTFILES_DIR/.git" ] && git --work-tree="$DOTFILES_DIR" --git-dir="$DOTFILES_DIR/.git" pull origin master +#local tools +mkdir -p ~/apps + +### install packages +sudo apt-get install -y -f python-pip python-dev powerline + #vim backup folders mkdir -p ~/.vim/{backup_files,swap_files,undo_files} #install vundle @@ -23,6 +29,7 @@ ln -sfv ~/dotfiles ~/.dotfiles ln -sfv "$DOTFILES_DIR/run/.profile" ~ ln -sfv "$DOTFILES_DIR/run/.xprofile" ~ ln -sfv "$DOTFILES_DIR/run/.bashrc" ~ +ln -sfv "$DOTFILES_DIR/run/bruise" ~/apps/bruise ln -sfv "$DOTFILES_DIR/git/.gitconfig" ~ ln -sfv "$DOTFILES_DIR/system/.vimrc" ~ ln -sfv "$DOTFILES_DIR/system/.dir_colors" ~ diff --git a/run/.bashrc b/run/.bashrc index 968e4ef..b94bb8b 100755 --- a/run/.bashrc +++ b/run/.bashrc @@ -183,6 +183,9 @@ setxkbmap dvorak export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" +source ~/apps/bruise export PATH="$PATH:$HOME/.local/bin" export PATH="$PATH:/opt/trello:/opt/pycharm/bin" export XDG_CURRENT_DESKTOP=GNOME + +alias nemo='nemo --no-desktop' diff --git a/system/.bruise b/system/.bruise new file mode 100755 index 0000000..046ada8 --- /dev/null +++ b/system/.bruise @@ -0,0 +1,163 @@ +#!/usr/bin/env bash +# tabstop: 4 +_VENV_BASE=$HOME/.venvs +## get the name of the branch, within the following revision control systems +function __fetch_repo_details() { + if [ -d ".git" ]; then + BRANCHNAME=`git rev-parse --abbrev-ref HEAD` + # create an SSH wrapper if the tree we're in is "special" + # then use that special wrapper + BBNAME=`cat .git/config|grep bitbucket|cut -d "@" -f 2|cut -d "." -f 1` + if [ $? -eq 0 ]; then + if [ -f "~/bin/${BBNAME}bitbucketwrapper.sh" ]; then + GIT_SSH="~/bin/${BBNAME}bitbucketwrapper.sh" + fi + fi + elif [ -d ".hg" ]; then + BRANCHNAME=`hg branch` + elif [ -d ".bzr" ]; then + BRANCHNAME=`cat .bzr/branch/branch.conf|awk -F/ '{print $(NF-1)}'` + fi + if [ -z $BRANCHNAME ]; then + return + else + REPONAME=`basename "$PWD"` + fi + # figure out our virtual env type + if [ -f requirements.txt ]; then + VENV_TYPE="python" + _VENV_ROOT=$_VENV_BASE/python + fi + if [ ! -d $_VENV_ROOT ]; then + mkdir -p $_VENV_ROOT + fi + # pyenv users get an environment prefixed with python version + if [ -f .python-version ]; then + PYTHON_VERSION=`cat .python-version` + VENV_NAME=$PYTHON_VERSION.$REPONAME.$BRANCHNAME + else + VENV_NAME=$REPONAME.$BRANCHNAME + fi + VENV_PATH=$_VENV_ROOT/$VENV_NAME +} +# create the pythonbrew venv combination +# if there's a requirements.txt we'll pip that puppy +function bruisemake() { + if [ ! -z $2 ]; then + export PATH=$2:$PATH + fi + if [ -z $VENV_TYPE ]; then + echo "You are not in a repository root" + return 1 + fi + if [ $VENV_TYPE == "python" ]; then + if [ ! -z $1 ]; then + VENV_PATH=$_VENV_BASE/python/$1 + fi + if [ ! -d $VENV_PATH ]; then + virtualenv --no-site-packages $VENV_PATH + fi + source $VENV_PATH/bin/activate + pip install -r requirements.txt + fi +} +function bruise3make() { + if [ ! -z $2 ]; then + export PATH=$2:$PATH + fi + if [ -z $VENV_TYPE ]; then + echo "You are not in a repository root" + return 1 + fi + if [ $VENV_TYPE == "python" ]; then + if [ ! -z $1 ]; then + VENV_PATH=$_VENV_BASE/python/$1 + fi + if [ ! -d $VENV_PATH ]; then + virtualenv -p python3 --no-site-packages $VENV_PATH + fi + source $VENV_PATH/bin/activate + pip install -r requirements.txt + fi +} +function __bruise() { + # pyenv support or not ;) + if [ -z $PYTHON_VERSION ]; then + VENV_PREFIX="${PYTHON_VERSION}" + else + VENV_PREFIX="${PYTHON_VERSION}." + fi + # if for some reason we're testing in a local venv, it wins + if [ -d `pwd`/venv ]; then + BRUISE_DIR=`pwd`/venv + else + bruisebase="${_VENV_ROOT}/${VENV_PREFIX}${REPONAME}" + if [ -d ${bruisebase}.${BRANCHNAME} ]; then + BRUISE_DIR=${bruisebase}.${BRANCHNAME} + elif [ -d ${bruisebase}.master ]; then + BRUISE_DIR=${bruisebase}.master + elif [ -d ${bruisebase} ]; then + BRUISE_DIR=${bruisebase} + fi + fi + if [ -f .python-version ]; then + pyenv versions|grep `cat .python-version` + if [ $? -ne 0 ]; then + echo "Looks like you need pyenv to install your version, I'll go do that now." + pyenv install `cat .python-version` + pyenv rehash + pip install virtualenv + cd . + fi + fi + if [ -z $BRUISE_DIR ]; then + echo "No environment exists, try running bruisemake" + return 1 + fi + if [ $VENV_TYPE == "python" ]; then + echo "Environment loaded from ${BRUISE_DIR}" + source $BRUISE_DIR/bin/activate + fi + # todo, compare modified times on requirements.txt and the $VENV_PATH + if [ requirements.txt -nt $BRUISE_DIR ]; then + pip install -r requirements.txt + fi +} +function bruiselist() { + for i in `ls $_VENV_BASE`; do + ls $_VENV_BASE/$i + done +} +function bruiseuse() { + if [ -z $1 ]; then + __bruise + else + source $_VENV_BASE/python/$1/bin/activate + fi +} +function bruisedelete() { + for i in $*; do + _bruisedelete $i + done +} +function _bruisedelete() { + if [ -z $1 ]; then + echo "bruisedelete bruise_to_delete" + return 1 + fi + for i in `ls $_VENV_BASE`; do + envs=`ls $_VENV_BASE/$i` + for e in $envs; do + if [ "X$e" == "X$1" ]; then + rm -rf $_VENV_BASE/$i/$e + fi + done + done +} +cd() { + builtin cd "$@" + __fetch_repo_details + if [ ! -z $VENV_TYPE ]; then + __bruise + fi +} diff --git a/system/.vimrc b/system/.vimrc index 3c3b6a8..38017c0 100755 --- a/system/.vimrc +++ b/system/.vimrc @@ -27,7 +27,7 @@ set ruler " Always show info along bottom. set autoindent " auto-indent set tabstop=4 " tab spacing set softtabstop=4 " unify -set shiftwidth=4 " indent/outdent by 4 columns +set shiftwidth=2 " indent/outdent by 2 columns set shiftround " always indent/outdent to the nearest tabstop set expandtab " use spaces instead of tabs set smarttab " use tabs at the start of a line, spaces elsewhere