I am trying to figure out why my oh-my-zsh themes don't work properly. The colors show up properly, but background stays white (with black text). below is my /.zshrc file and current path variable:
# Path to your oh-my-zsh configuration.
ZSH=$HOME/.oh-my-zsh
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
# Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it'll load a random theme each
# time that oh-my-zsh is loaded.
export ZSH_THEME="robbyrussell"
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
# Set to this to use case-sensitive completion
# CASE_SENSITIVE="true"
# Comment this out to disable weekly auto-update checks
# DISABLE_AUTO_UPDATE="true"
# Uncomment following line if you want to disable colors in ls
#DISABLE_LS_COLORS="true"
# Uncomment following line if you want to disable autosetting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment following line if you want red dots to be displayed while waiting for completion
# COMPLETION_WAITING_DOTS="true"
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
plugins=(git rails ruby brew)
source $ZSH/oh-my-zsh.sh
# Customize to your needs...
autoload -U colors
colors
here is $PATH :
➜ ~ echo $PATH
/Users/natascha/.rbenv/shims:/Users/natascha/.rbenv/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/usr/texbin
I am on Mac OS X 10.7.5 and installed oh-my-zsh months ago.. I have made a post in the git issue, https://github.com/robbyrussell/oh-my-zsh/issues/929#issuecomment-11652602, it seems to still have not been resolved? My plugins work ( i.e. i can type rails c for "rails console").
Thank you for any help.
Short answer: no, zsh
can't help you here. You need to change the terminal emulator color settings, not the zsh
settings.
This is what you're currently seeing:
and this is what you're expecting to see:
This is the line that produces this prompt:
PROMPT='%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c
%{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
The Z-Shell does have some foreground
, background
settings you can use in the PROMPT
- that's what the fg_bold
means (foreground to bold). You can replace this with bg_
for background, and omit the bold
to use a non-bold font.
For example, we can set the background of the PROMPT
to green
by adding %{bg[green]%}
:
PROMPT='%{$bg[green]%}%{$fg_bold[red]%}➜ %{$fg_bold[green]%}%p %{$fg[cyan]%}%c
%{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}'
This results in:
However, this more than likely is not what you want. Note several things:
bg[green]
does not extend to the edge of the terminal window - the PROMPT
settings only work where the line is drawn. %{$reset_color%}
(necessary to change the foreground
color to default). Getting a consistant, whole-line background color gets messy quickly. Roughly (I could be wrong in details, but the overall gist is correct, I believe): the shell you use sends a color code
to the terminal emulator. The terminal emulator is responsible for interpreting that color code, and displaying it on the screen. This means there are two settings you can fiddle with:
shell
color settings. That's what you're doing in your zshrc
. Primiarily, this allows for consistency - you can say "Display this bit of the prompt in the same $COLOR
as that bit of the prompt". This doesn't mean the user will see the prompt in $COLOR
; $COLOR
is a label, not much more. font
, background
, text color
, etc. It's where you can say "display everything the shell says is $COLOR_1
as red
, $COLOR_2
as green
", etc. There are 16 colors you can use in an ANSI
terminal, which may-or-may-not be displayed correctly. Check this table for some common terminal colors, and note the differences displayed between them!
If you're using Terminal.app
(on OS X, I'd recommend iTerm2
), open the preferences for Terminal (command+,), and select "Settings". There's a bunch of "profiles" you can choose from - to emulate the robbyrussell
screenshot above, you'd want to fiddle with the colors a little. "Homebrew" is pretty close, but has different "text" colors (green instead of white).
[Here is the robbyrussell
zsh
theme with the Homebrew
Terminal.app profile:
If you'd like a good, pre-set, easy-on-the-eyes color scheme, check out Solarized.