powerline-rs
is a rewrite of powerline-shell, inspired by powerline-go.
Speed! I haven't done any extensive benchmarks, but it appears like
even the debug version of powerline-rs
is about 20 milliseconds faster than powerline-go
.
The Rust language is perfect for fast applications, since copying large structures isn't implicit.
cargo install powerline-rs
It's also available on Nix and the AUR (not officially maintained).
In order to use optional features, add something like --features "feature1,feature2,etc"
to the end of the command.
To disable default features, add --no-default-features
(and manually readd features you want to keep).
Optional features:
- flame (Not recommended for production; adds benchmarks)
Default features:
- chrono (Time support for --shell bare)
- git2 (Git support)
- users (Username support)
Then add the following code to your shell:
Bash
Fish
Zsh
Well, the default modules have changed to not include the username and hostname. I feel like most people already know that. But you can always enable it, of course!
- Generally just using Rust.
- Using
libgit2
over calling and parsinggit
output (Thanks tbodt for suggesting it!) libgit2
can be disabled at compile time if you don't plan on using git functionality.- Themes are using a simple small
key=value
scripts. No JSON overhead or similar. - The output of
powerline-rs
is slightly smaller than the 2 alternatives I mentioned. To be honest, I have no idea why.
Most of the service-specific modules are deleted. I am very lazy.
Pull requests are welcome, though.
Also, the jobs
module won't work with --shell bare
.
prompt() {
PS1="$(powerline-rs --shell bash $?)"
}
PROMPT_COMMAND=prompt
prompt() {
PS1="$(powerline-rs --shell zsh $?)"
}
precmd_functions+=(prompt)
function fish_prompt
powerline-rs --shell bare $status
end
We can't display the success status because ion now forbids the use $?
from
functions as a bi-product of the new namespacing
system. This will
of course eventually be resolved.
fn PROMPT
powerline-rs --shell bare
end