Awesome
Pure-Agnoster
The bastard child prompt I put together because I liked much of how both pure and agnoster worked. Works on light and dark terminal backgrounds
<img src="screenshot.png" width="864">Overview
I am a fan of the powerline-esq theme that agnoster provides, but also really liked how pure handled git status and all of the asyncronus functionality, so I married the two together.
Why?
- Indicates when you have unpushed/unpulled
git
commits with up/down arrows. (Check is done asynchronously!) - Prompt character turns red if the last command didn't exit with
0
. - Command execution time will be displayed if it exceeds the set threshold.
- Username and host only displayed when in an SSH session.
- Shows the current path in the title and the current folder & command when a process is running.
Install
Requires Git 2.0.0+ and ZSH 5.2+. Older versions of ZSH are known to work, but they are not recommended.
It should be noted that you also need a powerline compadable font for most of the features to work, and if you want to use the python virtual-env symbol that I use you will need to manually edit your own font. It isn't as hard as it sounds with free a download of fontforge and a perusing of flaticon. You want an eps file.
Manually
- Either…
- Clone this repo
- add it as a submodule, or
- just download
pure-agnoster.zsh
andasync.zsh
-
Symlink
pure-agonster.zsh
to somewhere in$fpath
with the nameprompt_pure_setup
. -
Symlink
async.zsh
in$fpath
with the nameasync
.
Example
$ ln -s "$PWD/pure-agnoster.zsh" /usr/local/share/zsh/site-functions/prompt_pure_setup
$ ln -s "$PWD/async.zsh" /usr/local/share/zsh/site-functions/async
Run echo $fpath
to see possible locations.
For a user-specific installation (which would not require escalated privileges), simply add a directory to $fpath
for that user:
# .zshenv or .zshrc
fpath=( "$HOME/.zfunctions" $fpath )
Then install the theme there:
$ ln -s "$PWD/pure-agnoster.zsh" "$HOME/.zfunctions/prompt_pure_setup"
$ ln -s "$PWD/async.zsh" "$HOME/.zfunctions/async"
Getting started
Initialize the prompt system (if not so already) and choose pure-agnoster
:
# .zshrc
autoload -U promptinit; promptinit
prompt pure-agnoster
Options
PURE_CMD_MAX_EXEC_TIME
The max execution time of a process before its run time is shown when it exits. Defaults to 5
seconds.
PURE_GIT_PULL
Set PURE_GIT_PULL=0
to prevent pure-agnoster from checking whether the current Git remote has been updated.
PURE_GIT_UNTRACKED_DIRTY
Set PURE_GIT_UNTRACKED_DIRTY=0
to not include untracked files in dirtiness check. Only really useful on extremely huge repos like the WebKit repo.
PURE_GIT_DELAY_DIRTY_CHECK
Time in seconds to delay git dirty checking for large repositories (git status takes > 5 seconds). The check is performed asynchronously, this is to save CPU. Defaults to 1800
seconds.
PURE_PROMPT_SYMBOL
Defines the prompt symbol. The default value is ❯
.
PURE_GIT_DOWN_ARROW
Defines the git down arrow symbol. The default value is ⇣
.
PURE_GIT_UP_ARROW
Defines the git up arrow symbol. The default value is ⇡
.
Example
# .zshrc
autoload -U promptinit; promptinit
# optionally define some options
PURE_CMD_MAX_EXEC_TIME=10
prompt pure-agnoster
Tips
In the screenshot you see Pure-agnoster running in termite with a pm-me on reddit font.
The Tomorrow Night Eighties theme with the Droid Sans Mono font (15pt) is also a nice combination.<br> Just make sure you have anti-aliasing enabled in your terminal.
To have auto-ls after cd'ing like you see in the example, check out my little fork of @desyncr's auto-ls
To have commands colorized as seen in the screenshot, install zsh-syntax-highlighting.
Integration
oh-my-zsh
- Set
ZSH_THEME=""
in your.zshrc
to disable oh-my-zsh themes. - Follow the Pure Install instructions.
antigen
Update your .zshrc
file with the following two lines (order matters). Do not use the antigen theme
function.
antigen bundle mafredri/zsh-async
antigen bundle yourfin/pure-agnoster
antibody
Update your .zshrc
file with the following two lines (order matters):
antibody bundle mafredri/zsh-async
antibody bundle yourfin/pure-agnoster
zplug
Update your .zshrc
file with the following two lines:
zplug mafredri/zsh-async, from:github
zplug "YourFin/pure", use:pure-agnoster.zsh, from:github, as:theme
FAQ
I am stuck in a shell loop in my terminal that ask me to authenticate. What should I do ?
This is a known issue.
Using git pull
when you get the username prompt should help you to break the loop by giving you a real prompt for this. This has been fixed in git 2.3
I am seeing the error zpty: can't open pseudo terminal: bad file descriptor
.
This is a known issue. zsh/zpty
requires either legacy bsd ptys or access to /dev/ptmx
. Here are some known solutions.
Gentoo
$ sudo sh -c "echo 'SANDBOX_WRITE=\"/dev/ptmx\"' > /etc/sandbox.d/10zsh"
$ sudo emerge -1 zsh
FreeBSD 10.1
On a default setup, running the command kldload pty
should do the trick. If you have a custom kernel, you might need to add device pty
to the configuration file (example).
Licenses
MIT © Sindre Sorhus