Skip to main content

The bar theme for xonsh shell.

Project description

The bar prompt for the xonsh shell with customizable sections.

[Demo] 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:

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:

[Demo custom fields]

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:

Prompt bar with starship sections.

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

Environment variables

  • $XONTRIB_PROMPT_BAR_SHOW_RETURN - show return code. Default True.

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xontrib_prompt_bar-0.5.8.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

xontrib_prompt_bar-0.5.8-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file xontrib_prompt_bar-0.5.8.tar.gz.

File metadata

  • Download URL: xontrib_prompt_bar-0.5.8.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for xontrib_prompt_bar-0.5.8.tar.gz
Algorithm Hash digest
SHA256 f79e53aa2526facff44b64e46928325037b7239e7debf0369876fe4a91b455e0
MD5 d39f09fee78630f2a53a83666a026488
BLAKE2b-256 95bc0b65123db1c2328242a1a4907b08fdd88a009f83cddb9de581319dca853a

See more details on using hashes here.

File details

Details for the file xontrib_prompt_bar-0.5.8-py3-none-any.whl.

File metadata

File hashes

Hashes for xontrib_prompt_bar-0.5.8-py3-none-any.whl
Algorithm Hash digest
SHA256 0a61b9bfe2fece286ea639ed0ae8b22c2dc7aee9c1d3c1329ff1ece4a8153c5b
MD5 19f7509dc1da9ae91a56bb4cc3265c92
BLAKE2b-256 10c040a3e695043e0d19ec0d26f87fe3b832a9ea199f0011501682818d0daae0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page