The bar prompt for the xonsh shell with customizable sections.
Screenshot made in Konsole with
$XONSH_COLOR_STYLE = "paraiso-dark".
If you like the idea of bar theme click ⭐ on the repo and tweet.
Features:
-
Zero dependencies. You don't need to install additional packages.
-
Clear concept. The bar is a delimiter and information panel. Three attention aspects: command line and path, output, sections with additional info.
-
The command beginning has fixed position to have a large command line every time and avoid mess of attention.
-
The sections placed to right but not in the same line as command and it allows you to copy the command and output without environmental disclosure.
-
Full customization. Change colors, add sections with info you need easily with Python.
Install
xpip install -U xontrib-prompt-bar
echo 'xontrib load prompt_bar' >> ~/.xonshrc
# Reload xonsh
Default theme
$XONTRIB_PROMPT_BAR_THEME = {
'left': '{hostname}{user}{cwd_abs#accent}',
'right': '{hist_status#section}{curr_branch#section}{env_name#strip_brackets#section}{date_time_tz}',
'bar_bg': '{BACKGROUND_#323232}',
'bar_fg': '{#AAA}',
'section_bg': '{BACKGROUND_#444}',
'section_fg': '{#CCC}',
'accent_fg': '{BOLD_#DDD}',
}
xontrib load prompt_bar
Use cases
Customize the fields
Supported fields:
- xonsh default fields and colors notation
screens- list of the windows that created by screen window manager i.e.screen -S mywin.cwd_abs- current absolute path (~disabled).date_time_tz- date and time with timezone i.e.21-12-25 18:00:00-01.hist_status- showhist offif history disabled byhistory offcommand.
To customize the appearance of the fields on the bar you can use wrappers and chaining them:
$XONTRIB_PROMPT_BAR_RIGHT = '{hostname#accent#section} {date_time_tz#nocolorx}'
xontrib load prompt_bar
Builtin wrappers:
section- add backlight for the text.accent- bold font and lighter color.noesc- remove the ANSI escape characters (colors).strip- remove the white spaces in the begin and end.strip_brackets- remove the white spaces in the begin and end and then remove the brackets()[]{}if the text begins from brackets.nonl- replace the new line symbols to spaces.nocolorx- remove the xonsh color tags i.e.{RED}or{#00ff00}.
To create your own fields and wrapper see the section below.
Add custom fields and wrappers
How to add two new fields called my_left_custom and my_right_custom and one new wrapper called brackets.
$PROMPT_FIELDS['my_left_custom'] = 'Hello left!'
$PROMPT_FIELDS['my_right_custom'] = lambda: '>'*3 + ' {YELLOW}Hello right!'
$XONTRIB_PROMPT_BAR_WRAPPERS = {
'brackets': lambda v: f'[{v}]'
}
$XONTRIB_PROMPT_BAR_LEFT = '{hostname}{user}{cwd_abs#accent}{my_left_custom#brackets}'
$XONTRIB_PROMPT_BAR_RIGHT = '{my_right_custom#section}{env_name#strip_brackets#section}{date_time_tz}'
xontrib load prompt_bar
Result:
Themes and colors
To change the bar colors there is setting the theme:
$XONTRIB_PROMPT_BAR_THEME = {
'left': '{hostname}{user}{cwd_abs#accent}',
'right': '{curr_branch#section}{env_name#strip_brackets#section}{date_time_tz}',
'bar_bg': '{BACKGROUND_#FF0000}',
'bar_fg': '{#AAA}',
'section_bg': '{BACKGROUND_#444}',
'section_fg': '{#CCC}',
'accent_fg': '{BOLD_#DDD}',
}
xontrib load prompt_bar
To choose the colors there is HTML Color Picker.
Using Starship cross-shell prompt to rendering right sections
"Barship" using xontrib-prompt-starship:
# First of all create a starship config to return sections in one line
mkdir -p ~/.config && echo @("""
[character]
success_symbol = ""
error_symbol = ""
[status]
symbol = ""
""".strip()) > ~/.config/starship_xonsh_right.toml
# Then just add the starship bar to right
$XONTRIB_PROMPT_STARSHIP_RIGHT_CONFIG = "~/.config/starship_xonsh_right.toml"
$XONTRIB_PROMPT_STARSHIP_REPLACE_PROMPT = False
$XONTRIB_PROMPT_BAR_RIGHT = '{starship_right#noesc#nonl#strip}'
xontrib load prompt_starship prompt_bar
Result:
Using xontrib-cmd-durations
The xontrib-cmd-durations is to send notification once long-running command is finished and also show the execution time. Usage example:
# Add `{long_cmd_duration}` section
$XONTRIB_PROMPT_BAR_RIGHT = '{long_cmd_duration}{curr_branch#section}{screens#section}{env_name#strip_brackets#section}{date_time_tz}'
xontrib load cmd_done
Hide return code in special cases
Sometimes it's needed to hide the return code. In this case you can use -8888 return code i.e.:
aliases['cdls'] = "cd @($arg0) && @(lambda: -8888 if len(g`./*`) > 100 else 0) && ls --group-directories-first -A --color"
cdls /
# return code is 0 and `ls` command was executed and return code is not shown
cdls /usr/sbin
# return code is -8888 and `ls` command was NOT executed and return code is not shown
Additional links
- Asynchronous section rendering
- xonsh default fields and colors notation
- Meaning of git status symbols (●×+⚑✓↑↓)
- Awesome example of rewriting the theme from Jonathan Slenders
- Customization the colors in the input line
Environment variables
$XONTRIB_PROMPT_BAR_SHOW_RETURN- show return code. DefaultTrue.
Known issues
Spaces in the copied and pasted command line
Please update prompt_toolkit
to 3.0.7+ version via python -m pip install -U prompt_toolkit.
Credits
- This package is the part of rc-awesome - awesome snippets of code for xonshrc in xonsh shell.
- This package is the part of ergopack - the pack of ergonomic xontribs.
- This package was created with xontrib cookiecutter template.
Release files for xontrib-prompt-bar 0.5.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xontrib_prompt_bar-0.5.8.tar.gz | 7.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xontrib_prompt_bar-0.5.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:15.3 kB
Release files / xontrib_prompt_bar-0.5.8.tar.gz
| Download URL | xontrib_prompt_bar-0.5.8.tar.gz |
|---|---|
| Size | 7.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f79e53aa2526facff44b64e46928325037b7239e7debf0369876fe4a91b455e0
|
|
BLAKE2b-256 checksum How to use checksums |
95bc0b65123db1c2328242a1a4907b08fdd88a009f83cddb9de581319dca853a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.12.3
|
Release files / xontrib_prompt_bar-0.5.8-py3-none-any.whl
| Download URL | xontrib_prompt_bar-0.5.8-py3-none-any.whl |
|---|---|
| Size | 7.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0a61b9bfe2fece286ea639ed0ae8b22c2dc7aee9c1d3c1329ff1ece4a8153c5b
|
|
BLAKE2b-256 checksum How to use checksums |
10c040a3e695043e0d19ec0d26f87fe3b832a9ea199f0011501682818d0daae0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.12.3
|