diff --git a/themes/taktoa/README.md b/themes/taktoa/README.md new file mode 100644 index 0000000..2a946c7 --- /dev/null +++ b/themes/taktoa/README.md @@ -0,0 +1,12 @@ +## taktoa + +A theme by taktoa + +#### Characteristics + +* Shows current git information +* Shows hostname if you are connected via ssh +* Show current terminal multiplexer status (screen/tmux pane name and number) +* Arrow is a lambda + +![taktoa theme](http://taktoa.me/oh-my-fish/images/taktoa-screenshot.png) diff --git a/themes/taktoa/fish_prompt.fish b/themes/taktoa/fish_prompt.fish new file mode 100644 index 0000000..b16a145 --- /dev/null +++ b/themes/taktoa/fish_prompt.fish @@ -0,0 +1,81 @@ +# name: taktoa +# by taktoa (Remy Goldschmidt) +# License: public domain + +function _git_branch_name + echo (command git symbolic-ref HEAD ^/dev/null | sed -e 's|^refs/heads/||') +end + +function _git_status_symbol + set -l git_status (git status --porcelain ^/dev/null) + if test -n "$git_status" + if git status --porcelain ^/dev/null | grep '^.[^ ]' >/dev/null + echo '*' # dirty + else + echo '#' # all staged + end + else + echo '' # clean + end +end + +function _remote_hostname + echo (whoami) + if test -n "$SSH_CONNECTION" + echo " (ssh)" + end +end + +function _get_tmux_window + tmux lsw | grep active | sed 's/\*.*$//g;s/: / /1' | awk '{ print $2 "-" $1 }' - +end + +function _get_screen_window + set initial (screen -Q windows; screen -Q echo "") + set middle (echo $initial | sed 's/ /\n/g' | grep '\*' | sed 's/\*\$ / /g') + echo $middle | awk '{ print $2 "-" $1 }' - +end + +function _is_multiplexed + set multiplexer "" + if test -z $TMUX + else + set multiplexer "tmux" + end + if test -z $WINDOW + else + set multiplexer "screen" + end + echo $multiplexer +end + +function fish_prompt + set -l cyan (set_color cyan) + set -l brown (set_color brown) + set -l normal (set_color normal) + + set -l arrow "λ" + set -l cwd (set_color $fish_color_cwd)(prompt_pwd) + set -l git_status (_git_status_symbol)(_git_branch_name) + + if test -n "$git_status" + set git_status " $git_status" + end + + set multiplexer (_is_multiplexed) + + switch $multiplexer + case screen + set pane (_get_screen_window) + case tmux + set pane (_get_tmux_window) + end + + if test -z $pane + set window "" + else + set window " ($pane)" + end + + echo -n -s (_remote_hostname) ' ' $cwd $brown $window $cyan $git_status $normal ' ' $arrow ' ' +end \ No newline at end of file