Git Product home page Git Product logo

oh-my-fish's Introduction

The Fishshell Framework

MIT License Fish Shell Version Build

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.

Also in  🇪🇸 🇳🇱 🇧🇷 🇷🇺 🇺🇦 🇨🇳


Table of contents

Installation

You can get started right away with the default setup by running this in your terminal:

curl https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install | fish

This will download the installer script and start the installation. Alternatively, you can download the installer and customize your install:

curl https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install > install
fish install --path=~/.local/share/omf --config=~/.config/omf

You can verify the integrity of the downloaded installer by verifying the script against this checksum:

curl -sL https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install.sha256 | shasum -a 256 --check

You can also install Oh My Fish with Git or with an offline source tarball downloaded from the releases page:

# with git
$ git clone https://github.com/oh-my-fish/oh-my-fish
$ cd oh-my-fish
$ bin/install --offline
# with a tarball
$ curl https://raw.githubusercontent.com/oh-my-fish/oh-my-fish/master/bin/install > install
$ fish install --offline=omf.tar.gz

Run install --help for a complete list of install options you can customize.

Requirements

  • fish shell, version 2.2 or later
  • git, version 1.9.5 or later

Known Issues

  • Due to a regression bug in fish 2.6 with some terminal emulators, right prompts make the shell unusable. OMF's default theme features a right prompt, so it's necessary to use an alternative theme until a fix is released. (see #541)

Getting Started

Oh My Fish includes a small utility omf to fetch and install new packages and themes.

omf update [omf] [<package>...]

Update Oh My Fish, all package repositories, and all installed packages.

  • 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.

omf install [<name>|<url>|<user/repo>]

Install one or more packages.

  • You can install packages directly by URL via omf install URL
  • You can install packages from a GitHub repository via omf install user/repo
  • When called without arguments, install missing packages from bundle.

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 is always installed and available.

omf list

List installed packages.

omf theme <theme>

Apply a theme. To list available themes, type omf theme. You can also preview available themes before installing.

omf remove <name>

Remove a theme or package. If a package was installed via user/repo, use repo for name.

Packages can use uninstall hooks, so custom cleanup of resources can be done when uninstalling it. See Uninstall for more information.

omf reload

Reload Oh My Fish and all plugins by using exec to replace current shell process with a brand new.

This command tries to be as safe as possible, mitigating side-effects caused by exec and preventing the reload in case of background processes.

omf new plugin | theme <name>

Scaffold out a new plugin or theme.

This creates a new directory under $OMF_CONFIG/{pkg | themes}/ with a template.

omf search -t|--theme / -p|--package <name>

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.

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.

omf doctor

Use to troubleshoot before opening an issue.

omf destroy

Uninstall Oh My Fish.

Advanced

Oh My Fish installer adds a snippet to fish's user config files (~/.config/fish/conf.d/) which calls OMF's startup code.

Notice that the scripts in that directory are sourced in the order that the filesystem sees them, and so it may be necessary to prefix your script files with ordering numbers.

For example: a_script.fish will take precedence over the omf.fish snippet. So if a_script.fish depends on plugins managed by OMF, consider renaming the script file to xx_a_script.fish.

Similarly, to make sure that a script runs before omf.fish, you may prefix it with 00_. Alternatively, ~/.config/omf/before.init.fish may be used.

Startup

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 script afterwards, which autoloads packages, themes and your custom init files.

For more information check the FAQ.

Dotfiles

The $OMF_CONFIG directory represents the user state of Oh My Fish. It is the perfect candidate for being added to your dotfiles and/or checked out to version control. There you can find three important files:

  • theme - The current theme
  • bundle - List of currently installed packages/themes
  • channel - The channel from which OMF gets updates (stable / dev)

And you may create and customize these special files:

  • init.fish - Custom script sourced after shell start
  • before.init.fish - Custom script sourced before shell start
  • key_bindings.fish - Custom key bindings where you can use the bind command freely

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:

# Golang developers might need this one
set -xg GOPATH $HOME/gocode

# Python developers otherwise
set -xg PYTHONDONTWRITEBYTECODE 1

About the bundle

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.

Older fish versions

In fish 2.2, there is no conf.d directory, so the startup code has to be placed in the fish config file (~/.config/fish/config.fish).

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.

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.

Creating Packages

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 for more details.

oh-my-fish's People

Contributors

amio avatar bobthecow avatar bpinto avatar derekstavis avatar farao avatar fdeitylink avatar felipero avatar iven avatar jacaetevha avatar jeremiejig avatar jhillyerd avatar joar avatar krisleech avatar lfiolhais avatar ngroup avatar oranja avatar owenvoke avatar rominf avatar sagebind avatar scorphus avatar skk avatar syl20bnr avatar tannhuber avatar theonewolf avatar tripleplus avatar veinhorn avatar victorhck avatar vincent-psarga avatar vistaus avatar wk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

oh-my-fish's Issues

Reorganize plugins and library code

We need a major overhaul in our directory structure. The omf plugin got inflated with stuff. Core library include unnecessary additions (mostly basename). Tackling plugins and themes auto-installable dependencies (#64) should fix most of our separation of concerns issues to allow us to divide most omf plugin functionality into separate plugins.

With this in mind I have designed and propose a functionality split using the following plugins:

  • core: Framework-wise functions
    • omf.core.reload: Reload Oh My Fish
    • omf.core.require: Loads a package
  • database: Oh My Fish package database functions
    • packages.installed: List installed packages
    • packages.available List packages available to install
    • package.install: Install a package
  • omf: Oh My Fish command line tool.
    • omf: Main utility function
    • omf.install: Install package or theme
    • omf.remove: Remove theme
    • omf. ...: other command functions
  • technicolor: Functions for colorising output, usable by both themes and plugins to color text.
    • tint:: Tint output text using colors
    • bold:: Make output text bold
  • vcs: A façade for version control, usable by themes which integrate VCS prompt.
    • omf.vcs.name: Outputs the VCS name (git, hg, svn)
    • omf.vcs.present: Check if in vcs
    • omf.vcs.branch: Print current branch name
    • omf.vcs.dirty: Check if repository is dirty
    • omf.vcs.staged: Check if repo has staged changes
    • omf.vcs.stashed: Check if repo has stashed changes
    • omf.vcs.touched: Check if repo has any changes
    • omf.vcs.status: Output characters for ahead/behind/diverged/detached/clean states

The implementation can be rolled out in parallel with the current structure, so no backwards-impacting changes would be done. The roadmap I see for implementing this structure follows the order below:

  • plugin-technicolor
    • I have some WIP work done in plugin-technicolor plugin
  • plugin-vcs
    • Written, need more testing
  • omf-cli
    • File naming adjustments
  • omf-core
    • Mostly copy-paste as-is and naming adjustments

Let me know what you think about this changes. Comments and improvements on structure are very welcome. I will keep this OP in sync with discussion below.

cmorrell theme has wrong clone url

omf/db/themes contains https://github.com/oh-my-fish/theme-cmorrell

The correct is https://github.com/oh-my-fish/theme-cmorrell.com

After that you can cast omf theme cmorrell without errors.

install script hardcodes home directory

I'm not sure if this is intended or not, but i ended up with

set -gx OMF_PATH /home/johnny/.local/share/omf
#set -gx OMF_CONFIG /home/johnny/.config/omf

when I expected:

set -gx OMF_PATH $HOME/.local/share/omf
#set -gx OMF_CONFIG $HOME/.config/omf

where i can find packages?

Is a pretty basic question but, ok omf install {{packagename}}... cool, but i'm new with this and i don't know any index of packages or something... are independient in they own repos? are they in the same repo of OMF? can i list them in the terminal like themes? some hint here?

I know that my question is pretty stupid but, really im googling and get nothing D:

Check fish version compatibility on install

Together with #77 we can add minimum fish compatible version and aborting the install in case of incompatible version. There's a related issue in #75. If we had this check it would emit a more helpful message.

Gitter link does not work.

The Gitter link results in a 404 "this is not the chat you were looking for" page. Assuming something wasn't updated when the repository was moved back, as it actually tries to look for wa/oh-my-fish.

How to execute an sh script?

I am using the Gruvbox theme (https://github.com/morhetz/gruvbox) for Vim. All works. However, in .bashrc, I have:

source "$HOME/.vim/bundle/gruvbox/gruvbox_256palette.sh"

Which will recalibrate the colors in iTerm.

I have fenv source ~/.vim/bundle/gruvbox/gruvbox_256palette.sh in ~/.config/omf/init/fish, but it doesn't seem to be doing anything.

Am I missing something?

Plugin solution is not fishy

Instead of having every function define inside the PACKAGE.fish file, let's split the functions into individual files:

init.fish
uninstall.fish
PACKAGE.fish

It's not only a recommended way of doing it by fish shell but also more efficient because we won't load a function unnecessarily.

README is verbose

Current README is too verbose, we should move not important information to Wiki pages and link them in the README instead.

We should also discuss only the important commands there, they can find out about the other commands from within the tool (or Wiki).

Unknown command '__fish_git_needs_command'

I've always installed git using homebrew, and even my aliases (configured in ~/.gitconfig) used to complete fine:

[alias]
  aa = add --all
  ap = add --patch
  br = branch
  ca = commit --amend
  ci = commit -v
  co = checkout
  df = diff
  lg = log -p
  st = status

I recently returned to oh-my-fish from tacklebox (which ws loading oh-my-fish's legacy git completions), and upgraded my oh-my-fish to v2.

Now, when I type git [TAB] or git checkout [TAB], I get:

fish: Unknown command '__fish_git_needs_command'
in command substitution
    called on standard input

Troubleshooting:

  • When I run fish_update_completions, I don't get git.fish:
 ~ > ll ~/.local/share/fish/generated_completions/ | grep git
-rw-r--r--  1 philip  staff   216B Oct 15 11:05 git-am.fish
-rw-r--r--  1 philip  staff   230B Oct 15 11:05 git-apply.fish
-rw-r--r--  1 philip  staff   271B Oct 15 11:05 git-branch.fish
-rw-r--r--  1 philip  staff   614B Oct 15 11:05 git-cat-file.fish
-rw-r--r--  1 philip  staff   249B Oct 15 11:05 git-checkout.fish
-rw-r--r--  1 philip  staff   733B Oct 15 11:05 git-config.fish
-rw-r--r--  1 philip  staff   251B Oct 15 11:05 git-diff-files.fish
-rw-r--r--  1 philip  staff   251B Oct 15 11:05 git-diff-index.fish
-rw-r--r--  1 philip  staff   317B Oct 15 11:05 git-diff-tree.fish
-rw-r--r--  1 philip  staff   233B Oct 15 11:05 git-diff.fish
-rw-r--r--  1 philip  staff   229B Oct 15 11:05 git-fsck.fish
-rw-r--r--  1 philip  staff   245B Oct 15 11:05 git-hash-object.fish
-rw-r--r--  1 philip  staff   396B Oct 15 11:05 git-log.fish
-rw-r--r--  1 philip  staff   227B Oct 15 11:05 git-p4.fish
-rw-r--r--  1 philip  staff   408B Oct 15 11:05 git-push.fish
-rw-r--r--  1 philip  staff   355B Oct 15 11:05 git-reflog.fish
-rw-r--r--  1 philip  staff   361B Oct 15 11:05 git-rev-list.fish
-rw-r--r--  1 philip  staff   346B Oct 15 11:05 git-rev-parse.fish
-rw-r--r--  1 philip  staff   235B Oct 15 11:05 git-send-email.fish
-rw-r--r--  1 philip  staff   534B Oct 15 11:05 git-send-pack.fish
-rw-r--r--  1 philip  staff   233B Oct 15 11:05 git-show.fish
-rw-r--r--  1 philip  staff   233B Oct 15 11:05 git-status.fish
-rw-r--r--  1 philip  staff   188B Oct 15 11:05 git-tag.fish
-rw-r--r--  1 philip  staff   391B Oct 15 11:05 git-update-index.fish
-rw-r--r--  1 philip  staff   245B Oct 15 11:05 git-verify-commit.fish
-rw-r--r--  1 philip  staff   236B Oct 15 11:05 git-verify-tag.fish
-rw-r--r--  1 philip  staff   899B Oct 15 11:05 git-worktree.fish
-rw-r--r--  1 philip  staff   1.5K Oct 15 11:05 gitk.fish
  • /Users/philip/.local/share/fish/generated_completions/ is in my $fish_complete_path

fish: Uknown command 'omf'

Hi,

I've done a clean install of Fish using Brew, then using the installer and both times I get fish: Uknown command 'omf':

Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish
David@Davids-MacBook-Pro ~> omf
fish: Unknown command 'omf'
David@Davids-MacBook-Pro ~> fish -v
fish, version 2.2.0
David@Davids-MacBook-Pro ~>

How to upgrade omf to latest version?

I have omf, from https://github.com/bpinto/oh-my-fish/ repo (dead now).
Latest commit that i have: 12abcea5a128813124df145e96e877f9296f9b9c.

My steps:

  1. I've changed remote origin from bpinto/oh-my-fish to oh-my-fish/oh-my-fish
  2. run omf self-update, everything seems fine.
  3. Open new terminal tab and get this:
fish: Unknown command 'Theme robbyrussell'
~/.config/fish/config.fish (line 32): Theme "robbyrussell"
                                      ^
from sourcing file ~/.config/fish/config.fish
  called during startup

Usage:
    -u, --url     [plugin location]   : Set exact URL to download the plugin from
    -i, --install [plugin name]       : Downloads and installs listed plugins [*]
    -t, --timeout [duration]          : Timeout setting: 30s, 1m, 1h... (infinite by default)
    -r, --remove  [plugin name]       : Removes listed plugins
    -l, --list                        : List installed plugins
    -v, --verbose                     : Prints verbose messages
    -s, --silent                      : Run in silent mode
    -h, --help                        : Prints this help message

 [*] Plugin name could be:
     elasticsearch/plugin/version for official elasticsearch plugins (download from download.elasticsearch.org)
     groupId/artifactId/version   for community plugins (download from maven central or oss sonatype)
     username/repository          for site plugins (download from github master)

Message:
   Command [brew] unknown.
Usage:
    -u, --url     [plugin location]   : Set exact URL to download the plugin from
    -i, --install [plugin name]       : Downloads and installs listed plugins [*]
    -t, --timeout [duration]          : Timeout setting: 30s, 1m, 1h... (infinite by default)
    -r, --remove  [plugin name]       : Removes listed plugins
    -l, --list                        : List installed plugins
    -v, --verbose                     : Prints verbose messages
    -s, --silent                      : Run in silent mode
    -h, --help                        : Prints this help message

 [*] Plugin name could be:
     elasticsearch/plugin/version for official elasticsearch plugins (download from download.elasticsearch.org)
     groupId/artifactId/version   for community plugins (download from maven central or oss sonatype)
     username/repository          for site plugins (download from github master)

Message:
   Command [bundler] unknown.
Usage:
    -u, --url     [plugin location]   : Set exact URL to download the plugin from
    -i, --install [plugin name]       : Downloads and installs listed plugins [*]
    -t, --timeout [duration]          : Timeout setting: 30s, 1m, 1h... (infinite by default)
    -r, --remove  [plugin name]       : Removes listed plugins
    -l, --list                        : List installed plugins
    -v, --verbose                     : Prints verbose messages
    -s, --silent                      : Run in silent mode
    -h, --help                        : Prints this help message

 [*] Plugin name could be:
     elasticsearch/plugin/version for official elasticsearch plugins (download from download.elasticsearch.org)
     groupId/artifactId/version   for community plugins (download from maven central or oss sonatype)
     username/repository          for site plugins (download from github master)

Message:
   Command [gem] unknown.
Usage:
    -u, --url     [plugin location]   : Set exact URL to download the plugin from
    -i, --install [plugin name]       : Downloads and installs listed plugins [*]
    -t, --timeout [duration]          : Timeout setting: 30s, 1m, 1h... (infinite by default)
    -r, --remove  [plugin name]       : Removes listed plugins
    -l, --list                        : List installed plugins
    -v, --verbose                     : Prints verbose messages
    -s, --silent                      : Run in silent mode
    -h, --help                        : Prints this help message

 [*] Plugin name could be:
     elasticsearch/plugin/version for official elasticsearch plugins (download from download.elasticsearch.org)
     groupId/artifactId/version   for community plugins (download from maven central or oss sonatype)
     username/repository          for site plugins (download from github master)

Message:
   Command [osx] unknown.
Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish
 ~>

And, i have this in my ~/.config/fish/config.fish:

# Load oh-my-fish configuration.
. $fish_path/oh-my-fish.fish

# Theme
Theme "robbyrussell"

# Plugins
Plugin "brew"
Plugin "bundler"
Plugin "gem"
Plugin "osx"

And the question: how easily and smoothly upgrade omf to lastest version?

Plugin packaging

I propose to reuse git's infrastructure as much as possible:

$ omf info <plugin>
Name: <plugin name (echo repository_name | sed "s/plugin-//g")>
Version: <git tag; I think one number should be enough for a plugin version>
Installed: Yes
Status: up-to-date <is the tag last?>
Summary: <.git/description content>
Authors: <git commit authors (see http://stackoverflow.com/a/6482473/2108548)>

What do you think?

Uninstalling

How would one go about uninstalling this? Is it just a matter or removing ~/.config/omfand removing any references from ~/.config/fish/config.fish?

Personal Functions

I have a collection of functions (mainly aliases) that I wrote that I want to retire since transitioning to OMF. What do I need to do to be able to use them with OMF.

I did not see anything in the guide for this. If I missed it please point me in the correct direction.

TIA

Travis branch name is wrong

On our test setup, when installing Oh My Fish, we call bin/install with OMF_REPO_BRANCH="$TRAVIS_BRANCH".

This environment variable is misleading, as we think travis would return the Pull Request branch name but it returns master instead.

TRAVIS_BRANCH: For builds not triggered by a pull request this is the name of the branch currently being built; whereas for builds triggered by a pull request this is the name of the branch targeted by the pull request (in many cases this will be master).

As we are using master instead, it's likely that PRs that break the install script will not have broken tests before they are merged. Does anyone know a solution for this?

Ref: http://docs.travis-ci.com/user/environment-variables/


On the PR #80, there are two builds from Travis:

The one that is successful has the following exported information:

OMF_REPO_BRANCH dockerize
OMF_REPO_URI https://github.com/oh-my-fish/oh-my-fish

And the one that fails:

OMF_REPO_BRANCH master
OMF_REPO_URI https://github.com/oh-my-fish/oh-my-fish

Idea conserve some fish variable accross omf reloading.

Hi,

It might be a good idea to keep some more variable accross the reload of fish like $dirprev $dirnext and $dirstack

For example:

  • I'm doing some work and constantly doing some cd and using alt + ⬅️ or ➡️
  • Suddenly I'm missing an awesome pkg
  • So I just need to install it doing a omf install awesome_pkg
  • _omf reload fish_, I can now use thefreshly installed awesome pkg.
  • But I want to go back to some previous directory using alt + ⬅️
  • Damn I can't, have to use cd ../some/stupid/directory

There might be some other variable needed to be kept accross omf reloading.

Permission issue ,while installing OMF

This is output :
Installing Oh My Fish to /home/t04d/.local/share/omf...
Cloning master from https://github.com/oh-my-fish/oh-my-fish.git...
Adding startup code to fish config file...
An error occurred while redirecting file '/home/t04d/.config/fish/config.fish'
open: Permission denied
Building Oh My Fish configuration...
Standard input: omf install
^
Oh My Fish installation failed.

If you think that it's a bug, please open an
issue with the complete installation log here:

http://github.com/oh-my-fish/oh-my-fish/issues

I Tried
curl -L github.com/oh-my-fish/oh-my-fish/raw/master/bin/install | fish
curl -L github.com/oh-my-fish/oh-my-fish/raw/master/bin/install > install; and fish install
env OMF_CONFIG=~/.omf curl -L github.com/oh-my-fish/oh-my-fish/raw/master/bin/install | fish
After deleted each time omf dir.

Switching theme does nothing

When switching my theme, nothing changes. Also, some themes throw errors. Fish version 2.1.2, just updated oh my fish. Running on osx 10.9.5.

Start tagging/versioning updates

We need a way to versionate repository changes via git tags and ensure that omf update only fetch and upgrade using tags too. This way we can continue developing on master branch without breaking user installations. It will also make easier to report bugs and track them too.

Using omf install do not install package which aren't in the database.

Hi,

I found a bug with omf install, it won't install plugin referenced by an url.
I'm trying to fix it myself. But any Hint are welcomed.

Here is my bundle config file :

theme default
theme bobthefish
package https://github.com/oh-my-fish/plugin-tmux
package https://github.com/oh-my-fish/plugin-mc
package gi
package extract
package rvm
package rails
package bundler

And here is the output when installing oh-my-fish with the predefined bundle :

Installing default theme...
✔ theme default successfully installed.
Installing bobthefish theme...
✔ theme bobthefish successfully installed.
Trying to clone from URL...
fatal: le dépôt 'tmux' n'existe pas
Could not install package tmux.
Trying to clone from URL...
fatal: le dépôt 'mc' n'existe pas
Could not install package mc.
Installing gi package...
✔ package gi successfully installed.
Installing extract package...
✔ package extract successfully installed.
Installing rvm package...
✔ package rvm successfully installed.
Installing rails package...
✔ package rails successfully installed.
Installing bundler package...
✔ package bundler successfully installed.
Oh My Fish successfully installed.

OMF fails to update

I get the following error on Mac OS X 10.10.5 when running omf update:

Oh My Fish failed to update.
Please open a new issue here → git.io/omf-issues

I have two factor authentication turned on, and generated an access token to use for my password.

Merge `omf theme` and `omf install`

Often I run omf install THEME_NAME but instead of installing the theme, I get an error message saying the package doesn't exist.

The only difference between a theme and a package is that we set the current theme in a omf/theme file. We could merge both commands and let install be aware of this difference by setting the current theme whenever one runs omf install THEME_NAME.

Adding to PATH

Looking for the proper place to add to the PATH variable.
I want to add to ~/bin to my path

Using omf install duplicates lines in bundle

Starting with no plugins installed and two things defined in the bundle file.

> cat .config/omf/bundle
theme bobthefish
package z

Now I'm running omf install to install my theme/packages.

> omf install
Installing bobthefish theme...
✔ theme bobthefish successfully installed.
Installing z package...
✔ package z successfully installed.

After that both things are getting added to the bundle (again)

> cat .config/omf/bundle
theme bobthefish
package z
theme bobthefish
package z

I'm using fish 2.2.0 and oh-my-fish 4b0dbc2

`omf query` is useless?

I have never used omf query and I don't think I ever will.

It's only polluting the list of commands. The only time we need such feature is when someone is having an issue with omf. Instead of polluting the list of commands, what about renaming it to debug and change it's output to a file that people can attach to us when creating an issue?

I was also thinking about adding it to the bottom of the help section, similar to what git does:

The most commonly used git commands are:
...
   status     Show the working tree status
   tag        Create, list, delete or verify a tag object signed with GPG

'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.

Install script setting OMF_PATH to $HOME.local/omf instead of $HOME/.local/omf

curl -L https://github.com/oh-my-fish/oh-my-fish/raw/master/bin/install | fish
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   140  100   140    0     0     67      0  0:00:02  0:00:02 --:--:--    67
100  4654  100  4654    0     0   1945      0  0:00:02  0:00:02 --:--:-- 4544k
Installing Oh My Fish to /Users/faceleg.local/share/omf...
Cloning master from https://github.com/oh-my-fish/oh-my-fish.git...
fatal: could not create leading directories of '/Users/faceleg.local/share/omf': Permission denied
Error cloning repository!

Could there be something in my env that is causing this?

Is it normal to see this?

So in ~/.config/omf/init.fish, I have:

fenv source ~/.vim/bundle/gruvbox/gruvbox_256palette.sh

Everytime I start a Fish shell, I see:

---DIVIDER--- MANPATH=/Users/chris/.nvm/versions/node/v0.12.2/share/man:/Users/chris/.rvm/rubies/ruby-2.1.6/share/man:/usr/local/share/man:/usr/share/man:/Users/chris/.rvm/share/man:/Applications/Xcode.app/Contents/Developer/usr/share/man:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man NVM_IOJS_ORG_VERSION_LISTING=https://iojs.org/dist/index.tab rvm_bin_path=/Users/chris/.rvm/bin TERM_PROGRAM=iTerm.app GEM_HOME=/Users/chris/.rvm/gems/ruby-2.1.6 TERM=screen-256color SHELL=/usr/local/bin/fish TMPDIR=/var/folders/cd/py8lhjdx4hxcgtd4vpjrnklr0000gn/T/ NVM_PATH=/Users/chris/.nvm/versions/node/v0.12.2/lib/node Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.BeAsaT9KcH/Render ORIGINAL_PATH=/usr/local/bin /usr/bin /bin /usr/sbin /sbin USER=chris NVM_DIR=/Users/chris/.nvm rvm_path=/Users/chris/.rvm SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.Lph298rxJw/Listeners __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0 TMUX=/private/var/folders/cd/py8lhjdx4hxcgtd4vpjrnklr0000gn/T/tmux-501/default,53850,0 rvm_prefix=/Users/chris PATH=/Users/chris/.rvm/gems/ruby-2.1.6/bin:/Users/chris/.rvm/gems/ruby-2.1.6@global/bin:/Users/chris/.rvm/rubies/ruby-2.1.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/chris/.rvm/bin NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist __fish_sysconfdir=/usr/local/Cellar/fish/2.2.0/etc/fish PWD=/Users/chris/.config/omf __fish_datadir=/usr/local/Cellar/fish/2.2.0/share/fish LANG=en_US.UTF-8 ITERM_PROFILE=foobar XPC_FLAGS=0x0 TMUX_PANE=~ 

Is this normal?

Export PATH

Hei,

i can't find a way of adding dirs to the $PATH. Adding them to the ~/.config/fish/config.fish doesn't seem to work:

ex:

export PATH="$HOME/.composer/vendor/bin:$PATH"

how can i get it there?

thanks

`brew doctor`-like to check if everything is great.

A omf doctor command would be great for checking the sanity of our environment. At this moment there are some checks that come in mind:

  • fish_prompt overriden by a file? (as arised in issue #27)
  • config.fish containing Plugin and Theme (while we don't tackle #7)

@oh-my-fish/core feel free to edit this issue and add more checks.

omf cli without parameters is bulky

Invoking omf with no parameters give a extended help text which requires 32 lines to be completely shown:

$  omf

      $ omf [command] [arguments]

      Usage:
        omf install [<name>|<url>]
        omf theme [<name>]
        omf remove [<name>]
        omf update
        omf help [<command>]

      Commands:
        list      List local packages.
        describe  Get information about what packages do.
        install   Install one or more packages.
        theme     List / Use themes.
        remove    Remove a theme or package.
        update    Update Oh My Fish.
        cd        Change directory to plugin/theme directory.
        new       Create a new package from a template.
        submit    Submit a package to the registry.
        query     Query environment variables.
        destroy   Uninstall Oh My Fish.
        help      Shows help about a specific action.

      Options:
        --help     Display this help.
        --version  Display version.

      For more information visit → git.io/oh-my-fish

$

I propose cutting this to include just the usage section, as most unix programs do, which is 12 lines:

$  omf

      $ omf [command] [arguments]

      Usage:
        omf install [<name>|<url>]
        omf theme [<name>]
        omf remove [<name>]
        omf update
        omf help [<command>]

$

Document custom configuration file

maybe i missed that in the doc, how do i load my own config ?
i'm not sure it is a good way to go to edit ~/.config/fish/config.fish file

Backwards compatibility

OMF supported Theme 'default' and Plugin 'rbenv' commands on config.fish file. This was much easier to use than the current way (split in two different files).

As restoring the old functionality entirely will break compatibility again, we should add support for the behaviour described above as a wrapper around the current solution.

In a future issue, we could discuss removing the current solution for good.

Replace image logos by an optimised SVG version

We are currently using a PNG-based logo which weights 18.80k. I have redrawn our logo in fully vectorised SVG, which brings benefits in scalability -- we need just one file and can abuse on dimensions -- and in load time -- I optimised it down to just 0.7k.

Please give a look below and tell what you guys think about:

SVG Optimised Logo

fish: Unknown command “source” & “omf”

Hello,

My terminal output speaks for itself:

$ curl -L github.com/oh-my-fish/oh-my-fish/raw/master/bin/install | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100   140  100   140    0     0    203      0 --:--:-- --:--:-- --:--:--   203
100  4295  100  4295    0     0   4606      0 --:--:-- --:--:-- --:--:--  4Installing Oh My Fish...
606
Resolving Oh My Fish path → /home/ysr/.local/share/omf
Cloning Oh My Fish → https://github.com/oh-my-fish/oh-my-fish.git
Oh My Fish revision id → 9f3ab25515e1e10bdaff2c7218bede3c94eeeea8
Adding Oh My Fish bootstrap → /home/ysr/.config/fish/config.fish
fish: Unknown command “source”
/home/ysr/.config/fish/config.fish (line 13): source $OMF_PATH/init.fish
                                              ^
in . (source) call of file “/home/ysr/.config/fish/config.fish”,
    called on standard input,

fish: Unknown command “omf”
Standard input: omf install
                ^
Oh My Fish couldn't install, but you can complain here → github.com/oh-my-fish/oh-my-fish/issues

Does anyone have an idea about what might cause this issue?

Thank you,

basename: illegal option

Hey guys, trying to upgrade omf. I get a weird error breaking everything :'(

On Mac OS X 10.10.5 :

rm -rf ~/.oh-my-fish/
rm ~/.config/fish/config.fish
curl -L github.com/oh-my-fish/oh-my-fish/raw/master/bin/install > install
fish install
Installing Oh My Fish to /Users/ct/.local/share/omf...
Cloning master from https://github.com/oh-my-fish/oh-my-fish.git...
Adding startup code to fish config file...
Building Oh My Fish configuration...
basename: illegal option -- -
usage: basename string [suffix]
       basename [-a] [-s suffix] string [...]
Error:  package already installed.
Installation successful!

omf update broken via bad fish versioning

Under fedora-21

➜  ~ omf update 
Updating Oh My Fish...
function: Unknown option “repo_dir”
/home/user/.local/share/omf/pkg/omf/cli/omf.repo.pull.fish (line 10):   function omf.repo.git -V repo_dir
                                                                        ^
in function “omf.repo.pull”,
    called on line 139 of file “/home/user/.local/share/omf/pkg/omf/omf.fish”,
    with parameter list “/home/user/.local/share/omf”

in function “omf”,
    called on standard input,
    with parameter list “update”

/home/user/.local/share/omf/pkg/omf/cli/omf.repo.pull.fish (line 10):   function omf.repo.git -V repo_dir
                                                                        ^
in function “omf.repo.pull”,
    called on line 139 of file “/home/user/.local/share/omf/pkg/omf/omf.fish”,
    with parameter list “/home/user/.local/share/omf”

in function “omf”,
    called on standard input,
    with parameter list “update”

Current functions are: .  N_  alias  autoload  available  basename  cd  contains_seq  delete-or-exit  dirh  dirs  down-or-search  eval  fish_config  fish_default_key_bindings  fish_indent  fish_prompt  fish_sigtrap_handler  fish_update_completions  funced  funcsave  git_ahead  git_branch_name  git_is_dirty  git_is_repo  git_is_staged  git_is_stashed  git_is_touched  git_untracked  grep  help  history  hostname  init  isatty  la  ll  ls  man  math  mimedb  nextd  nextd-or-forward-word  omf  omf.bundle.add  omf.bundle.install  omf.bundle.remove  omf.check.fish_prompt  omf.describe  omf.destroy  omf.doctor  omf.help  omf.install  omf.install_package  omf.list_installed_packages  omf.new  omf.new_from_template  omf.packages.cd  omf.packages.list  omf.remove_package  omf.repo.clone  omf.repo.pull  omf.submit  omf.theme  omf.update  omf.util_mkdir  omf.util_valid_package  omf.version  omf.xdg.config_home  omf::dim  omf::em  omf::err  omf::off  open  popd  prevd  prevd-or-backward-word  prompt_pwd  prompt_segments  psub  pushd  refresh  require  seq  setenv  sgrep  trap  type  umask  up-or-search  vared  
function: Unknown option “repo_dir”
/home/user/.local/share/omf/pkg/omf/cli/omf.repo.pull.fish (line 14):   function omf.repo.git.stash -V repo_dir
                                                                        ^
in function “omf.repo.pull”,
    called on line 139 of file “/home/user/.local/share/omf/pkg/omf/omf.fish”,
    with parameter list “/home/user/.local/share/omf”

in function “omf”,
    called on standard input,
    with parameter list “update”

/home/user/.local/share/omf/pkg/omf/cli/omf.repo.pull.fish (line 14):   function omf.repo.git.stash -V repo_dir
                                                                        ^
in function “omf.repo.pull”,
    called on line 139 of file “/home/user/.local/share/omf/pkg/omf/omf.fish”,
    with parameter list “/home/user/.local/share/omf”

in function “omf”,
    called on standard input,
    with parameter list “update”

Current functions are: .  N_  alias  autoload  available  basename  cd  contains_seq  delete-or-exit  dirh  dirs  down-or-search  eval  fish_config  fish_default_key_bindings  fish_indent  fish_prompt  fish_sigtrap_handler  fish_update_completions  funced  funcsave  git_ahead  git_branch_name  git_is_dirty  git_is_repo  git_is_staged  git_is_stashed  git_is_touched  git_untracked  grep  help  history  hostname  init  isatty  la  ll  ls  man  math  mimedb  nextd  nextd-or-forward-word  omf  omf.bundle.add  omf.bundle.install  omf.bundle.remove  omf.check.fish_prompt  omf.describe  omf.destroy  omf.doctor  omf.help  omf.install  omf.install_package  omf.list_installed_packages  omf.new  omf.new_from_template  omf.packages.cd  omf.packages.list  omf.remove_package  omf.repo.clone  omf.repo.pull  omf.submit  omf.theme  omf.update  omf.util_mkdir  omf.util_valid_package  omf.version  omf.xdg.config_home  omf::dim  omf::em  omf::err  omf::off  open  popd  prevd  prevd-or-backward-word  prompt_pwd  prompt_segments  psub  pushd  refresh  require  seq  setenv  sgrep  trap  type  umask  up-or-search  vared  
fish: Unknown command 'omf.repo.git'
/home/user/.local/share/omf/pkg/omf/cli/omf.repo.pull.fish (line 2): omf.repo.git config --get remote.upstream.url
                                                                     ^
in command substitution
    called on line 19 of file “/home/user/.local/share/omf/pkg/omf/cli/omf.repo.pull.fish”,

in function “omf.repo.pull”,
    called on line 139 of file “/home/user/.local/share/omf/pkg/omf/omf.fish”,
    with parameter list “/home/user/.local/share/omf”

in function “omf”,
    called on standard input,
    with parameter list “update”

fish: Unknown command 'omf.repo.git'
/home/user/.local/share/omf/pkg/omf/cli/omf.repo.pull.fish (line 2): omf.repo.git symbolic-ref -q --short HEAD
                                                                     ^
in command substitution
    called on line 23 of file “/home/user/.local/share/omf/pkg/omf/cli/omf.repo.pull.fish”,

in function “omf.repo.pull”,
    called on line 139 of file “/home/user/.local/share/omf/pkg/omf/omf.fish”,
    with parameter list “/home/user/.local/share/omf”

in function “omf”,
    called on standard input,
    with parameter list “update”

Oh My Fish failed to update.
Please open a new issue here → github.com/oh-my-fish/oh-my-fish/issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.