Coder Social home page Coder Social logo

theme-dangerous'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.

theme-dangerous's People

Contributors

bobthecow avatar sagebind avatar tannhuber 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

theme-dangerous's Issues

[: expected a combining operator like -a at index 1

Running OS X...

using gnu coreutils. They are linked.

I can't seem to debug this one. I checked a lot of test structures and couldn't see to pin this one down.

I think it's related to vim bindings because the flag doesn't set properly and changing modes causes erratic behavior (resets to insert often automatically).

Here's a screenshot

Move away from fish_greeting for initialization

Using fish_greeting to define functions and run initialization code for themes should be considered unreliable and breaks in the following cases:

  • User switches themes during the middle of a terminal session. The shell is not reloaded, and so fish_greeting is not executed.
  • User has a custom fish_greeting variable or function, overriding the theme's default greeting. Again, the theme's fish_greeting is not executed.

The recommended approach is to lazy-load defaults using set -q ...; or set -g ... and to place functions in individual files in a functions directory.

See the discussion in oh-my-fish/oh-my-fish#483.

Fix the invalid expr syntax in the m command.

This patch would also fix the corresponding line in budspencer.

In ~/.config/fish/function/fish_prompt.fish line 301 or thereabout, there is a line

set input_length (expr length (expr $num_items - 1))

In more recent versions of fish, this causes an error that then affects the following line. It can be changed to

set input_length (string length (expr $num_items - 1))

as a fix.

However, this still does not have the behavior of clearing the marked items after the directory selection is made.

Unusable on macOS w/ fish 2.7.1

This theme looks really impressive 🙌

But I tried installing dangerous through omf but unfortunately I get the following error.

Fish has been upgraded, and the scripts on your system are not compatible
with this prior instance of fish.

I can't find a xsel version for macOS so that's missing, but I did install wmctrl. git was already present. However it feels like this theme requires on older version of fish?

Strange errors appearing in terminal after install

I'm getting the following output after installing the theme and cd-ing into a git repo:

❯ 2 ❯❯ ✔ ❯ expr: not a decimal number: '       0'                          ❮ ~ ❮
test: Missing argument at index 2

Is there something you know of that will fix this?

OS X 10.10
fish, version 2.2.0-115-gdeacec0
git version 2.4.6

Add option to disable cd'ing to newest bookmark

It is really confusing when you open a terminal inside an IDE, for example VSCode and the directory is not the current project, or opening a terminal from a GUI file explorer.

Maybe add a config variable (dangerous_disable_cd_on_start or something) and/or check the presence of some environment variable in the relevant if query

I am happy to submit a PR, if you decide on the names of the variables.

What does each color do?

I am trying to use this in combination with a light theme. Both the day and night default color-schemes look bad. I would like to create my own. What does each color in the list mean?

Turn off bell?

Is there a way to turn off the bell, like Budspencer has with set -U budspencer_nobell but for Dangerous? I suspect there is, but a search for "bell" in this repo did not turn up any relevant results.

How to cleanly remove theme dangerous?

I wanted to test quickly but since I don't have the dependencies, it printed a lot of errors (and no time to fix them)

now I have a green [I] all the time on the left, even when i switch to another theme, how to remove this?

theme-dangerous is broken, gives lots of errors on every prompt

Here's the output after installing theme-dangerous:

[I] ⋊> ~/D/S/d/s/oh-my-fish on master ◦ omf install dangerous                                                                                          10:56:29
Updating https://github.com/oh-my-fish/packages-main master... Done!
Installing package dangerous
✔ dangerous successfully installed.
~/.config/fish/functions/fish_prompt.fish (line 6): Array index out of bounds
            set dangerous_current_bindmode_color $dangerous_colors[5]
                                                                   ^
in function “__dangerous_prompt_bindmode”
	called on line 752 of file ~/.config/fish/functions/fish_prompt.fish

in command substitution
	called on line 750 of file ~/.config/fish/functions/fish_prompt.fish

in function “fish_prompt”
	called on standard input

in command substitution
	called on standard input

~/.config/fish/functions/fish_prompt.fish (line 7): Array index out of bounds
            echo -en $dangerous_cursors[2]
                                        ^
in function “__dangerous_prompt_bindmode”
	called on line 752 of file ~/.config/fish/functions/fish_prompt.fish

in command substitution
	called on line 750 of file ~/.config/fish/functions/fish_prompt.fish

in function “fish_prompt”
	called on standard input

in command substitution
	called on standard input

~/.config/fish/functions/fish_prompt.fish (line 23): Array index out of bounds
        set_color $dangerous_colors[4]
                                    ^
in function “__dangerous_prompt_git_branch”
	called on line 752 of file ~/.config/fish/functions/fish_prompt.fish

in command substitution
	called on line 750 of file ~/.config/fish/functions/fish_prompt.fish

in function “fish_prompt”
	called on standard input

in command substitution
	called on standard input

~/.config/fish/functions/fish_prompt.fish (line 1): Array index out of bounds
set_color $dangerous_colors[3]
                            ^
in command substitution
	called on line 562 of file ~/.config/fish/functions/fish_prompt.fish

in function “__dangerous_prompt_left_symbols”
	called on line 752 of file ~/.config/fish/functions/fish_prompt.fish

in command substitution
	called on line 750 of file ~/.config/fish/functions/fish_prompt.fish

in function “fish_prompt”
	called on standard input

in command substitution
	called on standard input

~/.config/fish/functions/fish_prompt.fish (line 1): Array index out of bounds
set_color -o $dangerous_colors[12]
                               ^
in command substitution
	called on line 562 of file ~/.config/fish/functions/fish_prompt.fish

in function “__dangerous_prompt_left_symbols”
	called on line 752 of file ~/.config/fish/functions/fish_prompt.fish

in command substitution
	called on line 750 of file ~/.config/fish/functions/fish_prompt.fish

in function “fish_prompt”
	called on standard input

in command substitution
	called on standard input

~/.config/fish/functions/fish_prompt.fish (line 1): Array index out of bounds
set_color $dangerous_colors[3]
                            ^
in command substitution
	called on line 562 of file ~/.config/fish/functions/fish_prompt.fish

in function “__dangerous_prompt_left_symbols”
	called on line 752 of file ~/.config/fish/functions/fish_prompt.fish

in command substitution
	called on line 750 of file ~/.config/fish/functions/fish_prompt.fish

in function “fish_prompt”
	called on standard input

in command substitution
	called on standard input

Version info:

[I] ⋊> ~ fish --version; omf --version                                  11:01:10
fish, version 2.6.0
Oh My Fish version 5

function c error: read: Argument '-l' must be an integer

When I try to use the c command, I get this error:

❯ 3 ❯❯ ✔ ❯ c                                                                                                                                                                                                                             ❮ ~ ❮
› 1   cd /tmp/
› 0   cd ~
expr: syntax error
read: Argument '-l' must be an integer
~/.config/fish/functions/fish_prompt.fish (line 253):   read -p 'echo -n (set_color $dangerous_colors[9])"↩ Exec [e|0"$last_item"] ❯ "' -n $input_length -l cmd_num
                                                        ^
in function 'c'
    called on standard input


       read ‐‐ read line of input into variables

   Synopsis
       read [OPTIONS] [VARIABLES...]

read: Type 'help read' for related documentation

switch: Expected exactly one argument, got 0

~/.config/fish/functions/fish_prompt.fish (line 25):   switch $cmd_num
                                                              ^
in function 'c'
    called on standard input

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.