Xonsh (sounds like "consh") is a modern, full-featured and cross-platform Python-based shell. The language is a superset of Python 3 with seamless integration of shell functionality and commands. It works on all major systems including Linux, OSX, and Windows. Xonsh is meant for the daily use of experts and novices.
| Xonsh is the Shell | Xonsh is Python |
cd $HOME
id $(whoami) > ~/id.txt
cat /etc/passwd | grep root
$PROMPT = '@ ' |
2 + 2
var = "hello".upper()
@.imp.json.loads('{"a":1}')
[i for i in range(0,10)] |
| Xonsh is the Shell in Python | Xonsh is Python in the Shell |
len($(curl -L https://xon.sh))
$PATH.append('/tmp')
p'/etc/passwd'.read_text().find('usr')
$(@json podman ps --format json)['ID'] |
name = 'snail'
echo @(name) > /tmp/@(name)
with p'/tmp/dir'.mkdir().cd():
touch @(input('File: '))
aliases['e'] = 'echo @(2+2)'
aliases['a'] = lambda args: print(args) |
| Xonsh is Everywhere | Xonsh is an Ecosystem |
$PATH
# ['/bin', '/sbin'] # Linux
# ['/homebrew/bin'] # macOS
# ['/nix/store/0-python/bin'] # Nix
# ['/mnt/c/Windows/System32'] # WSL
# [r'c:\Windows\System32'] # Windows
$PATH = ['/my/own/path'] |
xontrib load term_integration \
prompt_starship \
powerline \
dracula \
chatgpt \
django \
jupyter \
1password \
github_copilot \
history_encrypt |
| Xonsh is a Meta-Shell | Xonsh is User-extensible |
xontrib load sh \
fish_completer
def nudf(cmd):
return @.imp.pandas.DataFrame(
@.imp.json.loads(
$(nu -c @(cmd+'| to json'))))
nudf!(ls -la)
aliases['ai'] = 'ollama run llama3'
ai! how to remove images in podman |
@events.on_ptk_create
def custom_keybindings(bindings, **kw):
@bindings.add(Keys.ControlI)
def say_whoami(event):
echo $(whoami)
@events.on_postcommand
def _prompt_err_cmd(cmd, rtn, out, ts):
if rtn != 0:
$XONSH_PROMPT_NEXT_CMD = cmd.rstrip() |
If you like xonsh, β the repo and spread the word about xonsh.
- Installation - isolated environment, package, container or portable AppImage.
- Tutorial - step by step introduction in xonsh.
- Cheat sheet - some beginners may find this a helpful place to start.
Xonsh has an extension/plugin system. We call these additions xontribs.
- conda and mamba: Modern package managers.
- Starship: Cross-shell prompt.
- zoxide: A smarter cd command.
- gitsome: Supercharged Git/shell autocompleter with GitHub integration.
- xxh: Using xonsh wherever you go through the SSH.
- kash: The knowledge agent shell.
- Snakemake: A workflow management system to create reproducible and scalable data analyses.
- any-nix-shell: xonsh support for the
nix runandnix-shellenvironments of the Nix package manager. - lix: A modern, delicious implementation of the Nix package manager.
- x-cmd: x-cmd is a vast and interesting collection of tools guided by the Unix philosophy.
- rever: Cross-platform software release tool.
- Regro autotick bot: Regro Conda-Forge autoticker.
Jupyter-based interactive notebooks via xontrib-jupyter:
- Jupyter and JupyterLab: Interactive notebook platform.
- Euporie: Terminal based interactive computing environment.
- Jupytext: Clear and meaningful diffs when doing Jupyter notebooks version control.
Compiling, packaging, or accelerating xonsh:
- AppImage is a format for distributing Linux applications and can be used to create a standalone xonsh package.
- Nuitka is an optimizing Python compiler that can build a native xonsh binary.
- RustPython is a Python interpreter written in Rust that can run xonsh on top of Rust.
The xonsh shell is developed by a community of volunteers. There are a few ways to help out:
- Write a note or an article about xonsh.
- Send a link to Xonsh to your favorite blogger.
- Add xonsh support in third party tool: package manager, terminal emulator, console tool, IDE.
- Give a star to xonsh repository and to xontribs you like.
- Solve a popular issue or high priority issue or a good first issue. You can start with the Developer guide. Feel free to use LLM e.g. Github Copilot.
- Take an idea and create a new xontrib.
- Contribute to xonsh API.
- Become xonsh core developer by deep diving into xonsh internals. E.g. we feel a lack of Windows support.
- Test xonsh with compiler, interpreter, optimizer and report upstream issues (e.g. Nuitka, RustPython).
- Design more logos and images, improve xonsh website (src).
- Become a sponsor to xonsh.
We welcome new contributors!
- Thanks to Zulip for supporting the xonsh community!
- Thanks to HELLOTUX for distributing the xonsh t-shirts, backpacks and more!
- Thanks to ADS.FUND for supporting xonsh token!