Awesome
silver
A cross-shell customizable powerline-like prompt heavily inspired by Agnoster. The faster rust port of bronze.<br/>
How does it work?
Unlike most shell prompts, silver is not written in shell script, but entirely in Rust.
When silver init
is run, it outputs shell code that sets your left prompt to run silver lprompt
and right prompt to silver rprompt
, which output the actual prompt.
Getting started
Since silver is not written in shell script, it should theoretically be compatible with any shell, but the supported shells are Powershell, Bash, Zsh, fish, Ion and Elvish.
Icons
To be able to use the custom icons (which are disabled by default), you must patch your font or install a pre-patched font from Nerd Fonts.
Installation
From source
- install and setup Rust
- run
cargo install --git https://github.com/reujab/silver
From pre-compiled binary
- download a binary on the releases page
- add binary to
PATH
environment variable
macOS prerequisite
On macOS, you will have to do a bit more:
- install Homebrew
- run
brew install coreutils
- run
brew install openssl
- add
alias date="gdate"
to your shell config
Configuration
Now that you have silver installed, you need to create silver.toml
and put it in the following path:
- Linux:
~/.config/silver/silver.toml
or$XDG_CONFIG_HOME/silver/silver.toml
- macOS:
~/Library/Preferences/rs.silver/silver.toml
To have your prompt look like the screenshot at the top of the readme, configure silver.toml
with:
[[left]]
name = "dir"
color.background = "blue"
color.foreground = "black"
[[left]]
name = "git"
color.background = "green"
color.foreground = "black"
[[right]]
name = "status"
color.background = "white"
color.foreground = "black"
[[right]]
name = "cmdtime"
color.background = "magenta"
color.foreground = "black"
[[right]]
name = "shell"
color.background = "green"
color.foreground = "black"
Now that silver is configured, you need to evaluate its bootstrap code.
Bash
~/.bashrc
:
source <(silver init)
Ion
~/.config/ion/initrc
:
eval $(silver init)
Powershell
Invoke-Expression -Command $(silver init | Out-String)
Zsh
See zsh plugin
Fish
See fish plugin
Elvish
See elvish plugin
Documentation
Documentation is available on the wiki.
Project structure
src/
modules/
cmdtime.rs
- source code for the
cmdtime
module
- source code for the
dir.rs
- source code for the
dir
module
- source code for the
env.rs
- source code for the
env
module
- source code for the
git.rs
- source code for the
git
module
- source code for the
mod.rs
- handles modules
os.rs
- source code for the
os
module
- source code for the
status.rs
- source code for the
status
module
- source code for the
time.rs
- source code for the
time
module
- source code for the
user.rs
- source code for the
user
module
- source code for the
virtualenv.rs
- source code for the
virtualenv
module
- source code for the
cli.rs
- parses command line arguments
config.rs
- parses TOML
icons.rs
- processes icons, separators, and Unicode
init.bash
- bootstrap code for Bash
init.ion
- bootstrap code for Ion
init.ps1
- bootstrap code for Powershell
main.rs
- does all the magic
print.rs
- prints prompt segments
sh.rs
- shell-specific code