diff --git a/config.yaml b/config.yaml index ebb2d13..9d69c75 100644 --- a/config.yaml +++ b/config.yaml @@ -1,11 +1,10 @@ actions: pre: - vundle-install: test -e ~/.vim/bundle/Vundle.vim || (mkdir -p ~/.vim/bundle; git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim ) + vundle-install: test -e ~/.vim/bundle/Vundle.vim || (mkdir -p ~/.vim/bundle; git + clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim ) vundle-refresh: vim +VundleClean! +VundleInstall +VundleInstall! +qall font-cache: fc-cache -f -v xresources-reload: xrdb ~/.Xresources - zsh-source: source ~/.zshrc - bash-source: source ~/.bashrc config: backup: true create: true @@ -14,8 +13,6 @@ dotfiles: f_bashrc: src: bashrc dst: ~/.bashrc - actions: - - bash-source f_vimrc: src: vimrc dst: ~/.vimrc @@ -36,9 +33,6 @@ dotfiles: f_i3status_config: src: i3status_config dst: ~/.config/i3status/config - f_inconsolata-regular.ttf: - src: fonts/Inconsolata-Regular/Inconsolata-Regular.ttf - dst: ~/.fonts/Inconsolata-Regular/Inconsolata-Regular.ttf actions: - font-cache f_gdbinit: @@ -50,14 +44,15 @@ dotfiles: f_zshrc: src: zshrc dst: ~/.zshrc - actions: - - zsh-source d_oh-my-zsh: src: oh-my-zsh dst: ~/.oh-my-zsh f_zsh_theme: - src: zsh/marc-pygmalion.zsh-theme - dst: ~/.oh-my-zsh/themes/marc-pygmalion.zsh-theme + src: zsh + dst: ~/.oh-my-zsh/themes + d_fonts: + src: fonts + dst: ~/.local/share/fonts profiles: home: include: @@ -117,7 +112,7 @@ profiles: - f_i3status_config font: dotfiles: - - f_inconsolata-regular.ttf + - d_fonts git: dotfiles: - f_gitconfig diff --git a/dotfiles/Xresources b/dotfiles/Xresources index 7a5832d..0f28c0b 100644 --- a/dotfiles/Xresources +++ b/dotfiles/Xresources @@ -46,7 +46,7 @@ *.color14: nord7 *.color15: nord6 -XTerm.vt100.faceName: xft:Inconsolata:antialias=true +XTerm.vt100.faceName: xft:Inconsolata for Powerline:antialias=true {%@@ if profile == "work" @@%} XTerm.vt100.faceSize: 13 {%@@ endif @@%} diff --git a/dotfiles/fonts/Inconsolata for Powerline.otf b/dotfiles/fonts/Inconsolata for Powerline.otf new file mode 100644 index 0000000..f22511c Binary files /dev/null and b/dotfiles/fonts/Inconsolata for Powerline.otf differ diff --git a/dotfiles/zsh/agnoster-plus.zsh-theme b/dotfiles/zsh/agnoster-plus.zsh-theme new file mode 100644 index 0000000..d233932 --- /dev/null +++ b/dotfiles/zsh/agnoster-plus.zsh-theme @@ -0,0 +1,209 @@ +# vim:ft=zsh ts=2 sw=2 sts=2 +# +# agnoster's Theme - https://gist.github.com/3712874 +# A Powerline-inspired theme for ZSH +# +# # README +# +# In order for this theme to render correctly, you will need a +# [Powerline-patched font](https://gist.github.com/1595572). +# +# In addition, I recommend the +# [Solarized theme](https://github.com/altercation/solarized/) and, if you're +# using it on Mac OS X, [iTerm 2](http://www.iterm2.com/) over Terminal.app - +# it has significantly better color fidelity. +# +# # Goals +# +# The aim of this theme is to only show you *relevant* information. Like most +# prompts, it will only show git information when in a git working directory. +# However, it goes a step further: everything from the current user and +# hostname to whether the last call exited with an error to whether background +# jobs are running in this shell will all be displayed automatically when +# appropriate. + +### Segment drawing +# A few utility functions to make it easy and re-usable to draw segmented prompts + +CURRENT_BG='NONE' +if [[ -z "$PRIMARY_FG" ]]; then + PRIMARY_FG=black +fi + +# Characters +SEGMENT_SEPARATOR="\ue0b0" +PLUSMINUS="\u00b1" +BRANCH="\ue0a0" +DETACHED="\u27a6" +CROSS="\u2718" +LIGHTNING="\u26a1" +GEAR="\u2699" + + +# Setup powerline style colouring +POWERLINE_COLOR_BG_GRAY=%K{240} +POWERLINE_COLOR_BG_LIGHT_GRAY=%K{240} +POWERLINE_COLOR_BG_WHITE=%K{255} + +POWERLINE_COLOR_FG_GRAY=%F{240} +POWERLINE_COLOR_FG_LIGHT_GRAY=%F{240} +POWERLINE_COLOR_FG_WHITE=%F{255} + +POWERLINE_SEPARATOR=$'\u2b80' +POWERLINE_R_SEPARATOR=$'\u2b82' + +# Begin a segment +# Takes two arguments, background and foreground. Both can be omitted, +# rendering default background/foreground. +prompt_segment() { + local bg fg + [[ -n $1 ]] && bg="%K{$1}" || bg="%k" + [[ -n $2 ]] && fg="%F{$2}" || fg="%f" + if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then + print -n "%{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%}" + else + print -n "%{$bg%}%{$fg%}" + fi + CURRENT_BG=$1 + [[ -n $3 ]] && print -n $3 +} + +# End the prompt, closing any open segments +prompt_end() { + if [[ -n $CURRENT_BG ]]; then + print -n "%{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR" + else + print -n "%{%k%}" + fi + print -n "%{%f%}" + CURRENT_BG='' +} + +### Prompt components +# Each component will draw itself, and hide itself if no information needs to be shown + +# Context: user@hostname (who am I and where am I) +prompt_context() { + local user=`whoami` + + if [[ "$user" != "$DEFAULT_USER" || -n "$SSH_CONNECTION" ]]; then + prompt_segment $PRIMARY_FG default " %(!.%{%F{yellow}%}.)$user@%m " + fi +} + +# Git: branch/detached head, dirty status +prompt_git() { + local color ref + is_dirty() { + test -n "$(git status --porcelain --ignore-submodules)" + } + ref="$vcs_info_msg_0_" + if [[ -n "$ref" ]]; then + if is_dirty; then + color=yellow + ref="${ref} $PLUSMINUS" + else + color=green + ref="${ref} " + fi + if [[ "${ref/.../}" == "$ref" ]]; then + ref="$BRANCH $ref" + else + ref="$DETACHED ${ref/.../}" + fi + prompt_segment $color $PRIMARY_FG + print -n " $ref" + fi +} + +# Dir: current working directory +prompt_dir() { + prompt_segment blue $PRIMARY_FG ' %~ ' +} + +# Status: +# - was there an error +# - am I root +# - are there background jobs? +prompt_status() { + local symbols + symbols=() + [[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}$CROSS" + [[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}$LIGHTNING" + [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}$GEAR" + + [[ -n "$symbols" ]] && prompt_segment $PRIMARY_FG default " $symbols " +} + +# Display current virtual environment +prompt_virtualenv() { + if [[ -n $VIRTUAL_ENV ]]; then + color=cyan + prompt_segment $color $PRIMARY_FG + print -Pn " $(basename $VIRTUAL_ENV) " + fi +} + +## Main prompt +prompt_agnoster_main() { + RETVAL=$? + CURRENT_BG='NONE' + prompt_status + # prompt_context + prompt_virtualenv + prompt_dir + prompt_git + prompt_end +} + + +function rvm_info_for_prompt { + if [[ -d ~/.rvm/ ]]; then + local ruby_version=$(~/.rvm/bin/rvm-prompt) + if [ -n "$ruby_version" ]; then + echo "$ruby_version" + fi + else + echo "" + fi +} + + +prompt_agnoster_precmd() { + vcs_info + + rvm_split=("${(s/@/)$(rvm_info_for_prompt)}") + local powerline_right_version=$rvm_split[1] + local powerline_right_gemset=$rvm_split[2] + + if [ -z $powerline_right_gemset ]; then + RVM_PROMPT="" + else + RVM_PROMPT=$POWERLINE_COLOR_BG_WHITE$POWERLINE_COLOR_FG_LIGHT_GRAY$powerline_right_version@$POWERLINE_COLOR_BG_WHITE$POWERLINE_COLOR_FG_GRAY$powerline_right_gemset + fi + PYENV_PROMPT=$POWERLINE_COLOR_BG_WHITE$POWERLINE_COLOR_FG_GRAY$python_info[virtualenv] + + PROMPT='$RVM_PROMPT$PYENV_PROMPT%{%f%b%k%}$(prompt_agnoster_main) ' +} + +prompt_agnoster_setup() { + autoload -Uz add-zsh-hook + autoload -Uz vcs_info + + prompt_opts=(cr subst percent) + + add-zsh-hook precmd prompt_agnoster_precmd + + zstyle ':vcs_info:*' enable git + zstyle ':vcs_info:*' check-for-changes false + zstyle ':vcs_info:git*' formats '%b' + zstyle ':vcs_info:git*' actionformats '%b (%a)' + + # Set python-info parameters. + zstyle ':prezto:module:python:info:virtualenv' format '(%v)' + + zstyle ':prezto:module:ruby' rvm '%r' + +} + +prompt_agnoster_setup "$@" diff --git a/dotfiles/zshrc b/dotfiles/zshrc index 94a7e7f..fb2b9a2 100644 --- a/dotfiles/zshrc +++ b/dotfiles/zshrc @@ -1,5 +1,5 @@ export ZSH="/home/$USER/.oh-my-zsh" -ZSH_THEME="marc-pygmalion" +ZSH_THEME="agnoster-plus" DISABLE_AUTO_UPDATE="true" COMPLETION_WAITING_DOTS="true" DISABLE_UNTRACKED_FILES_DIRTY="true" @@ -23,5 +23,6 @@ alias vimrc="vim ~/.vimrc" alias dotdrop="~/dotfiles/dotdrop.sh" --cfg="~/dotfiles/config.yaml" +alias fonts="/home/$USER/.local/share/fonts" alias listfonts="fc-list :scalable=true:spacing=mono: family" alias cachefonts="fc-cache -f -v"