2015-11-01 02:05:48 +00:00
< img src = "https://cdn.rawgit.com/oh-my-fish/oh-my-fish/e4f1c2e0219a17e2c748b824004c8d0b38055c16/docs/logo.svg" align = "left" width = "192px" height = "192px" / >
2015-09-27 03:19:20 +00:00
< img align = "left" width = "0" height = "192px" hspace = "10" / >
2015-08-26 17:04:34 +00:00
2015-09-05 15:45:24 +00:00
> The <a href="http://fishshell.com">Fishshell</a> Framework
2015-08-26 15:20:13 +00:00
2017-08-29 23:12:46 +00:00
[![MIT License ](https://img.shields.io/badge/license-MIT-007EC7.svg?style=flat-square )](/LICENSE) [![Fish Shell Version ](https://img.shields.io/badge/fish-≥v2.2.0-007EC7.svg?style=flat-square )](http://fishshell.com) [![Travis Build Status ](http://img.shields.io/travis/oh-my-fish/oh-my-fish.svg?style=flat-square )](https://travis-ci.org/oh-my-fish/oh-my-fish) [![Slack Status ](https://oh-my-fish-slack.herokuapp.com/badge.svg )](https://oh-my-fish-slack.herokuapp.com)
2015-09-26 15:59:14 +00:00
2015-08-26 15:20:13 +00:00
2016-01-14 01:07:57 +00:00
Oh My Fish provides core infrastructure to allow you to install packages which extend or modify the look of your shell. It's fast, extensible and easy to use.
2015-08-26 16:49:23 +00:00
2016-07-24 04:25:01 +00:00
> Also in
> <a href="docs/ru-RU/README.md">🇷🇺</a>
> <a href="docs/zh-CN/README.md">🇨🇳</a>
2017-01-04 19:57:32 +00:00
> <a href="docs/uk-UA/README.md">🇺🇦</a>
2017-04-27 03:07:40 +00:00
> <a href="docs/pt-BR/README.md">🇧🇷</a>
2013-05-17 13:05:41 +00:00
2016-07-24 04:25:01 +00:00
< br >
2015-09-11 12:23:05 +00:00
2016-01-14 01:07:57 +00:00
## Installation
2013-05-17 13:05:41 +00:00
2016-08-08 14:00:17 +00:00
You can get started right away with the default setup by running this in your terminal:
```fish
2017-02-17 21:25:45 +00:00
curl -L https://get.oh-my.fish | fish
2016-08-08 14:00:17 +00:00
```
This will download the installer script and start the installation. Alternatively, you can download the installer and customize your install:
2015-08-26 17:04:34 +00:00
```fish
2017-02-17 21:25:45 +00:00
curl -L https://get.oh-my.fish > install
2016-08-08 17:11:18 +00:00
fish install --path=~/.local/share/omf --config=~/.config/omf
2015-08-26 15:20:13 +00:00
```
2013-05-17 13:05:41 +00:00
2017-04-26 20:00:45 +00:00
You can verify the integrity of the downloaded installer by verifying the script against [this checksum ](bin/install.sha256 ):
```
2017-05-16 14:52:57 +00:00
92ca680df48640e744b361d376194c5f5f8d6b4f1ac775d22417a0d8a8108767 install
2017-04-26 20:00:45 +00:00
```
2016-08-08 14:00:17 +00:00
You can also install Oh My Fish with Git or with an offline source tarball downloaded from the [releases page][releases]:
2015-08-26 15:20:13 +00:00
2015-08-26 17:04:34 +00:00
```fish
2016-08-08 14:00:17 +00:00
# with git
$ git clone https://github.com/oh-my-fish/oh-my-fish
$ cd oh-my-fish
$ bin/install --offline
# with a tarball
2017-02-17 21:25:45 +00:00
$ curl -L https://get.oh-my.fish > install
2016-08-08 14:00:17 +00:00
$ fish install --offline=omf.tar.gz
2015-08-26 15:20:13 +00:00
```
2016-08-08 14:00:17 +00:00
Run `install --help` for a complete list of install options you can customize.
## Getting Started
2015-08-26 15:20:13 +00:00
Oh My Fish includes a small utility `omf` to fetch and install new packages and themes.
2016-03-11 16:59:06 +00:00
#### `omf update` _`[omf]`_ _`[<package>...]`_
2015-08-26 15:20:13 +00:00
2017-02-05 03:49:39 +00:00
Update Oh My Fish, all package repositories, and all installed packages.
2015-08-26 15:20:13 +00:00
2016-03-11 16:59:06 +00:00
- When called without arguments, update core and all installed packages.
- You can choose to update only the core, by running `omf update omf` .
- For selective package update, list only the names of packages you wish to
update. You may still include "omf" in the list to update the core as well.
2015-09-06 05:38:03 +00:00
#### `omf install` _`[<name>|<url>]`_
2015-08-26 15:20:13 +00:00
2015-08-30 04:39:42 +00:00
Install one _or more_ packages.
2015-08-26 15:20:13 +00:00
2015-08-30 04:39:42 +00:00
- You can install packages directly by URL via `omf install URL`
2015-09-05 15:48:55 +00:00
- When called without arguments, install missing packages from [bundle ](#dotfiles ).
2015-08-26 15:20:13 +00:00
2017-02-05 03:49:39 +00:00
#### `omf repositories` _`[list|add|remove]`_
Manage user-installed package repositories. Package repositories are where packages come from used by commands like `omf install` . By default the [official repository ](https://github.com/oh-my-fish/packages-main ) is always installed and available.
2015-09-06 05:38:03 +00:00
#### `omf list`
2015-08-26 15:20:13 +00:00
List installed packages.
2015-09-06 05:38:03 +00:00
#### `omf theme` _`<theme>`_
2015-08-26 15:20:13 +00:00
2016-01-14 01:07:57 +00:00
Apply a theme. To list available themes, type `omf theme` . You can also [preview available themes ](./docs/Themes.md ) before installing.
2015-08-26 15:20:13 +00:00
2015-09-06 05:38:03 +00:00
#### `omf remove` _`<name>`_
2015-08-26 15:20:13 +00:00
Remove a theme or package.
2016-06-01 04:09:38 +00:00
> Packages can use uninstall hooks, so custom cleanup of resources can be done when uninstalling it. See [Uninstall](/docs/en-US/Packages.md#uninstall) for more information.
2015-08-26 15:20:13 +00:00
2016-02-24 01:59:10 +00:00
#### `omf reload`
Reload Oh My Fish and all plugins by using `exec` to replace current shell process with a brand new.
2016-04-27 18:36:00 +00:00
> This command tries to be as safe as possible, mitigating side-effects caused by `exec` and preventing the reload in case of background processes.
2016-02-24 01:59:10 +00:00
2015-09-06 05:38:03 +00:00
#### `omf new pkg | theme` _`<name>`_
2015-08-26 15:20:13 +00:00
Scaffold out a new package or theme.
2015-08-27 17:56:01 +00:00
> This creates a new directory under `$OMF_CONFIG/{pkg | themes}/` with a template.
2015-08-26 15:20:13 +00:00
2017-06-13 14:41:23 +00:00
#### `omf search` _`-t|--theme / -p|--package`_ _`<name>`_
2016-05-11 18:29:50 +00:00
Searches Oh My Fish's database for a given package, theme or both. It also supports fuzzy search, so if you are not sure of the name you can simply `omf search simple` .
2016-10-20 23:10:13 +00:00
#### `omf channel`
Gets or changes the update channel.
Two channels are available by default: the `stable` channel provides stable updates with the latest tagged version of Oh My Fish, and `dev` which provides the latest changes under development. The update channel currently set determines what version `omf update` will upgrade to.
2015-10-02 21:39:12 +00:00
#### `omf doctor`
2015-08-26 15:20:13 +00:00
2016-01-14 01:07:57 +00:00
Use to troubleshoot before [opening an issue][omf-issues-new].
2015-08-26 15:20:13 +00:00
2015-09-06 05:38:03 +00:00
#### `omf destroy`
2015-08-26 15:20:13 +00:00
2015-09-06 02:37:42 +00:00
Uninstall Oh My Fish.
2015-08-26 15:20:13 +00:00
2016-01-14 01:07:57 +00:00
## Advanced
2015-08-26 15:20:13 +00:00
2015-09-07 00:53:02 +00:00
Oh My Fish installer places its startup code in your fish config file (`~/.config/fish/config.fish`).
2015-08-26 15:20:13 +00:00
2016-01-14 01:07:57 +00:00
### Startup
2015-08-26 15:20:13 +00:00
2016-01-14 01:07:57 +00:00
Every time you open a new shell, the startup code initializes Oh My Fish installation path and the _config_ path (`~/.config/omf` by default), sourcing the [`init.fish` ](init.fish ) script afterwards, which autoloads packages, themes and your custom init files.
2015-08-26 15:20:13 +00:00
2016-01-14 01:07:57 +00:00
For more information check the [FAQ ](docs/en-US/FAQ.md#what-does-oh-my-fish-do-exactly ).
2015-08-30 04:40:15 +00:00
2016-01-14 01:07:57 +00:00
### Dotfiles
The `$OMF_CONFIG` directory represents the user state of Oh My Fish. It is the perfect
2015-09-27 22:36:30 +00:00
candidate for being added to your dotfiles and/or checked out to version control. There are four important files:
2015-08-30 04:40:15 +00:00
- __`theme`__ - The current theme
- __`bundle`__ - List of currently installed packages/themes
2015-09-27 22:36:30 +00:00
- __`init.fish`__ - Custom script sourced after shell start
- __`before.init.fish`__ - Custom script sourced before shell start
2016-08-04 14:06:12 +00:00
- __`key_bindings.fish`__ - Custom key bindings where you can use the `bind` command freely
2015-09-27 04:15:49 +00:00
It's highly recommended that your custom startup commands go into `init.fish` file instead of `~/.config/fish/config.fish` , as this allows you to keep the whole `$OMF_CONFIG` directory under version control.
2015-08-30 04:40:15 +00:00
2015-09-27 22:36:30 +00:00
If you need startup commands to be run *before* Oh My Fish begins loading plugins, place them in `before.init.fish` instead. If you're unsure, it is usually best to put things in `init.fish` .
2017-02-03 00:43:54 +00:00
#### Setting variables in `init.fish`
One of the most common startup commands used in `init.fish` is variables definition. Quite likely, such variables need to be available in any shell session. To achieve this, define them globally. For example:
```fish
# Golang developers might need this one
set -xg GOPATH $HOME/gocode
# Python developers otherwise
set -xg PYTHONDONTWRITEBYTECODE 1
```
2016-01-14 01:07:57 +00:00
#### About the bundle
2015-08-30 04:40:15 +00:00
2016-01-14 01:07:57 +00:00
Every time a package/theme is installed or removed, the `bundle` file is updated. You can also edit it manually and run `omf install` afterwards to satisfy the changes. Please note that while packages/themes added to the bundle get automatically installed, a package/theme removed from bundle isn't removed from user installation.
2015-08-30 04:40:15 +00:00
2015-09-06 05:28:12 +00:00
## Creating Packages
2016-06-01 04:09:38 +00:00
Oh My Fish uses an advanced and well defined plugin architecture to ease plugin development, including init/uninstall hooks, function and completion autoloading. [See the packages documentation ](docs/en-US/Packages.md ) for more details.
2015-09-06 05:28:12 +00:00
2015-01-30 00:06:05 +00:00
2016-08-08 14:00:17 +00:00
[fishshell]: http://fishshell.com
2015-09-03 18:35:19 +00:00
[contributors]: https://github.com/oh-my-fish/oh-my-fish/graphs/contributors
[omf-pulls-link]: https://github.com/oh-my-fish/oh-my-fish/pulls
2015-10-02 21:39:12 +00:00
[omf-issues-new]: https://github.com/oh-my-fish/oh-my-fish/issues/new
2016-08-08 14:00:17 +00:00
[releases]: https://github.com/oh-my-fish/oh-my-fish/releases