Category Archives: productivity

How to see git/mercurial branch on your command line

Add this to your `~/.bashrc` file:


function parse_git_branch () {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

function hg_dirty() {
hg status --no-color 2> /dev/null \
| awk '$1 == "?" { unknown = 1 }
$1 != "?" { changed = 1 }
END {
if (changed) printf "!"
else if (unknown) printf "?"
}'
}

function hg_branch() {
hg branch 2> /dev/null | awk '{ printf " (" $1 ")" }'
hg bookmarks -a 2> /dev/null | awk '/\*/ { printf " (" $2 ")"}'
}

RED="\[\033[0;31m\]"
YELLOW="\[\033[0;33m\]"
GREEN="\[\033[0;32m\]"
NO_COLOR="\[\033[0m\]"

DEFAULT="[37;40m"
PINK="[35;40m"
RANGE="[33;40m"

PS1="$GREEN\u@\h$NO_COLOR:\w$YELLOW\$(parse_git_branch)$YELLOW\$(hg_branch)$NO_COLOR\$ "

Slate – windows manager for Mac

I have discovered Slate – windows manager for Mac which is doing exceptionally great job in improving my productivity.

Begin with reading of this article from Tristan Hume on how to start working with Slate:

http://thume.ca/howto/2012/11/19/using-slate/

And here is slate by itself with full tutorial:

https://github.com/jigish/slate

Here is part of config which explains the idea:


config windowHintsShowIcons true
config windowHintsIgnoreHiddenWindows false
config windowHintsSpread true
config windowHintsDuration 5

bind esc:cmd hint

alias mon-laptop      1680x1050
alias mon-monitor     2560x1600

alias right-top move screenOriginX+screenSizeX/2;screenOriginY                   screenSizeX/2;screenSizeY/2 ${mon-monitor}
alias right-bottom move screenOriginX+screenSizeX/2;screenOriginY+screenSizeY/2     screenSizeX/2;screenSizeY/2 ${mon-monitor}
alias left-top move screenOriginX;screenOriginY                                 screenSizeX/2;screenSizeY/2 ${mon-monitor}
alias left-bottom move screenOriginX;screenOriginY+screenSizeY/2                   screenSizeX/2;screenSizeY/2 ${mon-monitor}
alias full-screen move screenOriginX;screenOriginY                                 screenSizeX;screenSizeY ${mon-laptop}

bind pad9:cmd ${right-top}
bind pad3:cmd ${right-bottom}
bind pad7:cmd ${left-top}
bind pad1:cmd ${left-bottom}
bind pad5:cmd ${full-screen}

Here is my full config:
https://gist.github.com/mgalushka/d79c68464f191ba8e11a

I use next combinations to manage windows:

cmd+number on pad panel – I use it to move current active window to corresponding position: to corners/half the screen up and down.

For window hints I use cmd+esc