🐍 🐚 🔌 - A delightful framework to give your Python-powered, cross-platform, Unix-gazing Xonsh shell a boost!
Add the following snippet to your ~/.config/xonsh/rc.xsh
or ~/.xonshrc
:
# set where oh-my-xonsh lives
if not 'OMX_HOME' in ${...}:
$OMX_HOME = p"~/.config/xonsh/oh-my-xonsh"
# clone omx if needed
if not pf"{$OMX_HOME}".exists():
git clone --depth=1 https://github.com/oh-my-xonsh/oh-my-xonsh $OMX_HOME
# source oh-my-xonsh to give you the `omx` object
source $OMX_HOME/oh-my-xonsh.xsh
# choose your plugins
omx.plugins = [
'autocmd',
'brew',
'clipboard',
'common_aliases',
'copydir',
'dash',
'git',
'gitignore',
'golang',
'iwd',
'macos',
'manpage_coloring',
'shrink_path',
'up',
]
# configure your plugins
# omx.config["plugins.git.skip_aliases"] = True
# initialize oh-my-xonsh
omx.init()
Some plugins allow for configuration options. The omx
object has a .config
property that allows you to set config values.
You need to be sure you set these values before calling omx.init()
in your rc.xsh file.
For example:
# set your config options
omx.config["plugins.example.whoami"] = "I'm Batman!"
omx.config["plugins.git.skip_aliases"] = True
# now call init
omx.init()
You can add your own custom .xsh
files or plugins to OMX by using the $OMX_CUSTOM_HOME
directory.
You can set $OMX_CUSTOM_HOME
to whatever you want, or you can use the OMX default. An example is
included to help you get started.
Sourcing Oh-My-Xonsh gives you the omx
object, which allows you to do lots of great things, such as:
$ omx.list_plugins()
--- OMX plugins ---
autocmd
brew
cdls
clipboard
common_aliases
copydir
copyfile
dash
git
gitignore
golang
iwd
jupyter
macos
manpage_coloring
shrink_path
up
--- OMX custom plugins ---
example
You can see the CommandPipeline
details about the plugins you've loaded, including the load times for each plugin.
$ omx.loaded_plugins
OMX can update itself if you want as well (which is simply doing a git pull
).
$ omx.update()
Oh-My-Xonsh is inspired by many wonderful similar projects from other shells: