Merge branch 'master' into jellybeans

pull/182/head
Justin Hileman 2 months ago committed by GitHub
commit 83ca0de82f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2013-2014 Justin Hileman Copyright (c) 2013-2021 Justin Hileman
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

@ -1,30 +1,32 @@
# bobthefish # bobthefish
`bobthefish` is a Powerline-style, Git-aware [fish][fish] theme optimized for awesome. `bobthefish` is a Powerline-style, Git-aware [fish][btf-fish] theme optimized for awesome.
[![Oh My Fish](https://img.shields.io/badge/Framework-Oh_My_Fish-blue.svg?style=flat)](https://github.com/oh-my-fish/oh-my-fish) [![MIT License](https://img.shields.io/github/license/oh-my-fish/theme-bobthefish.svg?style=flat)](/LICENSE.md) [![Oh My Fish](https://img.shields.io/badge/Framework-Oh_My_Fish-blue.svg?style=flat)](https://github.com/oh-my-fish/oh-my-fish) [![MIT License](https://img.shields.io/github/license/oh-my-fish/theme-bobthefish.svg?style=flat)](/LICENSE.md)
![bobthefish][screencast] ![bobthefish][btf-screencast]
### Installation
## Installation
Be sure to have Oh My Fish installed. Then just: Be sure to have Oh My Fish installed. Then just:
omf install bobthefish omf install bobthefish
You will need a [Powerline-patched font][patching] for this to work, unless you enable the compatibility fallback option: You will need a [Powerline-patched font][btf-patching] for this to work, unless you enable the compatibility fallback option:
set -g theme_powerline_fonts no set -g theme_powerline_fonts no
[I recommend picking one of these][fonts]. For more advanced awesome, install a [nerd fonts patched font][nerd-fonts], and enable nerd fonts support: [I recommend picking one of these][btf-fonts]. For more advanced awesome, install a [nerd fonts patched font][btf-nerd-fonts], and enable nerd fonts support:
set -g theme_nerd_fonts yes set -g theme_nerd_fonts yes
This theme is based loosely on [agnoster][agnoster]. This theme is based loosely on [agnoster][btf-agnoster].
### Features ## Features
* A helpful, but not too distracting, greeting. * A helpful, but not too distracting, greeting.
* A subtle timestamp hanging out off to the right. * A subtle timestamp hanging out off to the right.
@ -35,7 +37,8 @@ This theme is based loosely on [agnoster][agnoster].
* Visual indication that you can't write to the current directory. * Visual indication that you can't write to the current directory.
### The Prompt
## The Prompt
* Status flags: * Status flags:
* Previous command failed (**`!`**) * Previous command failed (**`!`**)
@ -47,7 +50,7 @@ This theme is based loosely on [agnoster][agnoster].
* Current RVM, rbenv or chruby (Ruby) version * Current RVM, rbenv or chruby (Ruby) version
* Current virtualenv (Python) version * Current virtualenv (Python) version
* _If you use virtualenv, you will probably need to disable the default virtualenv prompt, since it doesn't play nice with fish: `set -x VIRTUAL_ENV_DISABLE_PROMPT 1`_ * _If you use virtualenv, you will probably need to disable the default virtualenv prompt, since it doesn't play nice with fish: `set -x VIRTUAL_ENV_DISABLE_PROMPT 1`_
* Current NVM version (Nodejs) (inactive by default; see configurations in the next paragraph) * Current NVM/FNM version (Nodejs) (inactive by default; see configurations in the next paragraph)
* Abbreviated parent directory * Abbreviated parent directory
* Current directory, or Git or Mercurial project name * Current directory, or Git or Mercurial project name
* Current project's repo branch (<img width="16" alt="branch-glyph" src="https://cloud.githubusercontent.com/assets/53660/8768360/53ee9b58-2e32-11e5-9977-cee0063936fa.png"> master) or detached head (`➦` d0dfd9b) * Current project's repo branch (<img width="16" alt="branch-glyph" src="https://cloud.githubusercontent.com/assets/53660/8768360/53ee9b58-2e32-11e5-9977-cee0063936fa.png"> master) or detached head (`➦` d0dfd9b)
@ -63,93 +66,236 @@ This theme is based loosely on [agnoster][agnoster].
* Abbreviated project-relative path * Abbreviated project-relative path
### Configuration
You can override some of the following default options in your `config.fish`: ## Configuration
You can override theme defaults in a Fish config file (for example `~/.config/fish/conf.d/bobthefish.fish`):
```fish ```fish
set -g theme_display_git no
set -g theme_display_git_dirty no
set -g theme_display_git_untracked no
set -g theme_display_git_ahead_verbose yes
set -g theme_display_git_dirty_verbose yes
set -g theme_display_git_stashed_verbose yes
set -g theme_display_git_default_branch yes
set -g theme_git_default_branches master main
set -g theme_git_worktree_support yes
set -g theme_use_abbreviated_branch_name yes
set -g theme_display_vagrant yes
set -g theme_display_docker_machine no
set -g theme_display_k8s_context yes
set -g theme_display_hg yes
set -g theme_display_virtualenv no
set -g theme_display_nix no
set -g theme_display_ruby no
set -g theme_display_nvm yes
set -g theme_display_user ssh
set -g theme_display_hostname ssh
set -g theme_display_vi no
set -g theme_display_date no
set -g theme_display_cmd_duration yes
set -g theme_title_display_process yes
set -g theme_title_display_path no
set -g theme_title_display_user yes
set -g theme_title_use_abbreviated_path no
set -g theme_date_format "+%a %H:%M"
set -g theme_date_timezone America/Los_Angeles
set -g theme_avoid_ambiguous_glyphs yes
set -g theme_powerline_fonts no
set -g theme_nerd_fonts yes set -g theme_nerd_fonts yes
set -g theme_show_exit_status yes
set -g theme_display_jobs_verbose yes
set -g default_user your_normal_user
set -g theme_color_scheme dark set -g theme_color_scheme dark
set -g fish_prompt_pwd_dir_length 0 set -g theme_display_user ssh
set -g theme_project_dir_length 1 set -g default_user bobthecow
set -g theme_newline_cursor yes
set -g theme_newline_prompt '$ '
``` ```
**Git options**
See (many) more options below.
- `theme_display_git_default_branch`. By default theme will hide/collapse the branch name in your prompt when you are using a Git _default branch_ i.e. historically `master` and often `main` now. Set to `yes` to stop these branches from being hidden/collapsed.
- `theme_git_default_branches`. The big cloud repos (GitHub, Bitbucket, GitLab et al.) are moving away from using `master` as the default branch name, and allow you to choose your own. As of version **2.28**, Git also supports custom default branch names via the `init.defaultBranch` config option. If our defaults of `master main` don't suit you, you can add/remove names in thist list i.e. `main trunk`. This ensures correct hiding/collapsing behaviour with custom default branch names (unless option above is activated).
**Title options** ### Prompt options
- `theme_title_display_process`. By default theme doesn't show current process name in terminal title. If you want to show it, just set to `yes`. #### `set -g theme_display_vi yes`
- `theme_title_display_path`. Use `no` to hide current working directory from title.
- `theme_title_display_user`. Set to `yes` to show the current user in the tab title (unless you're the default user). By default the vi mode indicator will be shown if vi or hybrid key bindings are enabled. Use `no` to always hide the indicator, or `yes` to always show the indicator.
- `theme_title_use_abbreviated_path`. Default is `yes`. This means your home directory will be displayed as `~` and `/usr/local` as `/u/local`. Set it to `no` if you prefer full paths in title.
#### `set -g theme_show_exit_status yes`
**Prompt options**
Use `yes` to show any non-zero exit code next to the exclamation mark.
- `theme_display_ruby`. Use `no` to completely hide all information about Ruby version. By default Ruby version displayed if there is the difference from default settings.
- `theme_display_nvm`. If set to `yes`, will display current NVM node version. #### `set -g theme_display_jobs_verbose yes`
- `theme_display_vagrant`. This feature is disabled by default, use `yes` to display Vagrant status in your prompt. Please note that only the VirtualBox and VMWare providers are supported.
- `theme_display_vi`. By default the vi mode indicator will be shown if vi or hybrid key bindings are enabled. Use `no` to hide the indicator, or `yes` to show the indicator. Use `yes` to display the number of currently running background jobs next to the percent sign.
- `theme_display_k8s_context`. This feature is disabled by default. Use `yes` to show the current kubernetes context (`> kubectl config current-context`).
- `theme_display_k8s_namespace`. This feature is disabled by default. Use `yes` to show the current kubernetes namespace. #### `set -g theme_display_user yes`
- `theme_display_aws_vault_profile`. This feature is disabled by default. Use `yes` to show the currently executing [AWS Vault](https://github.com/99designs/aws-vault) profile.
- `theme_display_user`. If set to `yes`, display username always, if set to `ssh`, only when an SSH-Session is detected, if set to no, never. Set to `yes` to always display the username, to `ssh` to display only when an SSH session is active, or to `no` to never display the username.
- `theme_display_hostname`. Same behaviour as `theme_display_user`.
- `theme_display_sudo_user`. If set to `yes`, displays the sudo-username in a root shell. For example, when calling `sudo -s` and having this option set to `yes`, the username of the user, who called `sudo -s`, will be displayed. #### `set -g default_user your_normal_user`
- `theme_show_exit_status`. Set this option to `yes` to have the prompt show the last exit code if it was non_zero instead of just the exclamation mark.
- `theme_display_jobs_verbose`. If set to `yes` this option displays the number of currently running background jobs next to the percent sign. If a `default_user` is provided, the username will only be shown when it differs from the default.
- `theme_git_worktree_support`. If you do any git worktree shenanigans, setting this to `yes` will fix incorrect project-relative path display. If you don't do any git worktree shenanigans, leave it disabled. It's faster this way :)
- `theme_use_abbreviated_branch_name`. Set to `yes` to truncate git branch names in the prompt. #### `set -g theme_display_sudo_user yes`
- `fish_prompt_pwd_dir_length`. bobthefish respects the Fish `$fish_prompt_pwd_dir_length` setting to abbreviate the prompt path. Set to `0` to show the full path, `1` (default) to show only the first character of each parent directory name, or any other number to show up to that many characters.
- `theme_project_dir_length`. The same as `$fish_prompt_pwd_dir_length`, but for the path relative to the current project root. Defaults to `0`; set to any other number to show an abbreviated path. If set to `yes`, displays the sudoer's username in a root shell. For example, when calling `sudo -s` with this option set to `yes`, the user who called `sudo -s` will be displayed.
- `theme_newline_cursor`. Use `yes` to have cursor start on a new line. By default the prompt is only one line. When working with long directories it may be preferrend to have cursor on the next line. Setting this to `clean` instead of `yes` suppresses the caret on the new line.
- `theme_newline_prompt`. Use a custom prompt with newline cursor. By default this is the chevron right glyph or `>` when powerline fonts are disabled. #### `set -g theme_display_hostname yes`
**Color scheme options** Set to `yes` to always display the hostname, to `ssh` to display only when an SSH session is active, or to `no` to never display the hostname.
| ![dark][dark] | ![light][light] | #### `set -g fish_prompt_pwd_dir_length 1`
| ----------------------- | ----------------------------------- |
| ![solarized][solarized] | ![solarized-light][solarized-light] | Bobthefish respects the Fish `$fish_prompt_pwd_dir_length` setting to abbreviate the prompt path; set to `0` to show the full path, `1` (default) to show only the first character of each parent directory name, or any other number to show up to that many characters.
| ![base16][base16] | ![base16-light][base16-light] |
| ![zenburn][zenburn] | ![terminal-dark][terminal-dark] | #### `set -g theme_project_dir_length 1`
| ![nord][nord] | |
The same as `$fish_prompt_pwd_dir_length`, but for the path relative to the current project root. Defaults to `0`; set to any other number to show an abbreviated path.
#### `set -g theme_show_project_parent no`
Use `no` to only show the project directory name, and not its parent path, when inside a project.
#### `set -g theme_newline_cursor yes`
Use `yes` to place the cursor on the next line, rather than the same line as the prompt. Setting this to `clean` instead of `yes` suppresses the caret on the new line.
#### `set -g theme_newline_prompt "\$"`
Use a custom prompt with newline cursor. By default this is the chevron right glyph or `>` when powerline fonts are disabled.
#### `set -g theme_avoid_ambiguous_glyphs yes`
You probably don't need this option, unless your terminal doesn't like Unicode. Setting to `yes` will avoid ambiguous-width characters in an attempt to
#### `set -g theme_powerline_fonts no`
Bobthefish really likes Powerline-enhanced fonts. If you can't make that work, set to `no` to use plaintext fallbacks.
#### `set -g theme_nerd_fonts yes`
Bobthefish likes Nerd Fonts even better! Use `yes` if you've got Nerd Font capable fonts.
#### `set -g theme_color_scheme dark`
See below for all the color scheming you can handle.
### Virtual environments and version manager options
#### `set -g theme_display_vagrant yes`
This feature is disabled by default, use `yes` to display Vagrant status in your prompt. Please note that only the VirtualBox and VMWare providers are supported.
#### `set -g theme_display_docker_machine no`
Use `no` to disable the current Docker machine name.
#### `set -g theme_display_ruby no`
Use `no` to disable Ruby version information. By default, the Ruby version is displayed unless it's your system Ruby version.
#### `set -g theme_display_virtualenv no`
Use `no` to disable Python version information. By default, the Python version is shown when it's interesting, along with the Virtualenv or Conda environmenmt.
#### `set -g theme_display_go verbose`
Use `no` to disable the Go version information. Set to `verbose` to show both the required and current Go version.
#### `set -g theme_display_node yes`
This feature is disabled by default. Use `yes`, display the version if an `.nvmrc`, `.node-version` or `package.json` file is found in the parent path. Set to `always` to always display the current NPM, NVM or FNM node version.
#### `set -g theme_display_nix no`
Use `no` to disable Nix environment information.
#### `set -g theme_display_k8s_context yes`
This feature is disabled by default. Use `yes` to show the current Kubernetes context (`> kubectl config current-context`).
#### `set -g theme_display_k8s_namespace yes`
This feature is disabled by default. Use `yes` to show the current Kubernetes namespace.
#### `set -g theme_display_aws_vault_profile yes`
This feature is disabled by default. Use `yes` to show the currently executing [AWS Vault](https://github.com/99designs/aws-vault) profile.
### Git (and other VCS) options
#### `set -g theme_display_git no`
Use `no` to disable Git integration. If you're doing this for performance reasons, try some of the options below before disabling it entirely!
#### `set -g theme_display_git_dirty no`
Use `no` to hide Git dirty state. Set the Git `bash.showDirtyState` option on a per-repository basis to disable it just for especially large repos.
#### `set -g theme_display_git_dirty_verbose yes`
This feature is disabled by default. Use `yes` to show more verbose dirty state information.
#### `set -g theme_display_git_untracked no`
Use `no` to hide Git untracked file state. Set the Git `bash.showUntrackedFiles` option on a per-repository basis to disable it just for especially large repos.
#### `set -g theme_display_git_ahead_verbose yes`
This feature is disabled by default. Use `yes` to show more verbose ahead/behind state information.
#### `set -g theme_display_git_stashed_verbose yes`
This feature is disabled by default. Use `yes` to show more verbose stashed state information.
#### `set -g theme_display_git_default_branch yes`
By default, Bobthefish hides the default branch name (e.g. `main` or `master`). Use `yes` to always show these branche names.
#### `set -g theme_git_default_branches main trunk`
By default, Bobthefish hides default branch names (e.g. `main` or `master`). To hide other branch names, you can set a custom default branch name via the `init.defaultBranch` Git config option, or override the list entirely.
#### `set -g theme_use_abbreviated_branch_name yes`
This feature is disabled by default. Use `yes` to truncate extremely long Git branch names.
#### `set -g theme_git_worktree_support yes`
If you do any Git worktree shenanigans, setting this to `yes` will fix incorrect project-relative paths. If you don't do any Git worktree shenanigans, leave it disabled. It's faster this way :)
#### `set -g theme_display_hg yes`
This feature is disabled by default. Use `yes` to enable Mercurial support in Bobthefish. If you don't use Mercurial, leave it disabled because it's ... not fast.
#### `set -g theme_vcs_ignore_paths /some/path /some/other/path{foo,bar}`
Ignore project paths for Git or Mercurial. Supports glob patterns.
### Right prompt options
The right prompt can be configured with the following options, or overridden entirely by supplying your own `fish_right_prompt` function.
#### `set -g theme_display_date`
Use `no` to disable the date in the right prompt.
#### `set -g theme_date_format +%c`
Customize date formatting. See `man date` for more information.
#### `set -g theme_date_timezone America/Los_Angeles`
Supply a TZ argument variable for date formatting. See `man date` for more information.
#### `set -g theme_display_cmd_duration no`
Use `no` to disable command duration in the right prompt.
### Title options
#### `set -g theme_title_display_process yes`
This feature is disabled by default. Use `yes` to show current process name in the terminal title.
#### `set -g theme_title_display_path no`
Use `no` to hide current working directory from the terminal title.
#### `set -g theme_title_display_user yes`
Use `yes` to show the current user in the tab title (unless you're the default user).
#### `set -g theme_title_use_abbreviated_path no`
By default, directory names will be abbreviated in the terminal title, for example `~` instead of `$HOME` and `/u/local` instead of `/usr/local`. Set to `no` to always show full paths in the title.
### Color schemes
| ![dark][btf-dark] | ![light][btf-light] |
| --------------------------- | --------------------------------------- |
| ![solarized][btf-solarized] | ![solarized-light][btf-solarized-light] |
| ![base16][btf-base16] | ![base16-light][btf-base16-light] |
| ![zenburn][btf-zenburn] | ![terminal-dark][btf-terminal-dark] |
| ![nord][btf-nord] | ![gruvbox-light][gruvbox-light] |
You can use the function `bobthefish_display_colors` to preview the prompts in You can use the function `bobthefish_display_colors` to preview the prompts in
any color scheme. any color scheme.
@ -164,7 +310,7 @@ one of the following options to change the prompt colors.
- `base16` (or `base16-dark`), `base16-light`. Dark and light variants of the - `base16` (or `base16-dark`), `base16-light`. Dark and light variants of the
default Base16 theme. default Base16 theme.
- `zenburn`. An adaptation of Zenburn. - `zenburn`. An adaptation of Zenburn.
- `gruvbox`. An adaptation of gruvbox. - `gruvbox`, `gruvbox-light`. An adaptation of gruvbox dark and light variants.
- `dracula`. An adaptation of dracula. - `dracula`. An adaptation of dracula.
- `nord`. An adaptation of nord. - `nord`. An adaptation of nord.
@ -201,10 +347,8 @@ variables to set the colors of the prompt. See the "Colors" section of
`fish_prompt.fish` for details. `fish_prompt.fish` for details.
**VCS options**
- `set -g theme_vcs_ignore_paths /some/path /some/other/path{foo,bar}`. Ignore project paths for Git or Mercurial. Supports glob patterns.
### Overrides ## Overrides
You can disable the theme default greeting, vi mode prompt, right prompt, or title entirely — or override with your own — by adding custom functions to `~/.config/fish/functions`: You can disable the theme default greeting, vi mode prompt, right prompt, or title entirely — or override with your own — by adding custom functions to `~/.config/fish/functions`:
@ -230,19 +374,20 @@ end
``` ```
[fish]: https://github.com/fish-shell/fish-shell [btf-fish]: https://github.com/fish-shell/fish-shell
[screencast]: https://cloud.githubusercontent.com/assets/53660/18028510/f16f6b2c-6c35-11e6-8eb9-9f23ea3cce2e.gif [btf-screencast]: https://cloud.githubusercontent.com/assets/53660/18028510/f16f6b2c-6c35-11e6-8eb9-9f23ea3cce2e.gif
[patching]: https://powerline.readthedocs.org/en/master/installation.html#patched-fonts [btf-patching]: https://powerline.readthedocs.org/en/master/installation.html#patched-fonts
[fonts]: https://github.com/Lokaltog/powerline-fonts [btf-fonts]: https://github.com/Lokaltog/powerline-fonts
[nerd-fonts]: https://github.com/ryanoasis/nerd-fonts [btf-nerd-fonts]: https://github.com/ryanoasis/nerd-fonts
[agnoster]: https://gist.github.com/agnoster/3712874 [btf-agnoster]: https://gist.github.com/agnoster/3712874
[dark]: https://cloud.githubusercontent.com/assets/53660/16141569/ee2bbe4a-3411-11e6-85dc-3d9b0226e833.png "dark" [btf-dark]: https://cloud.githubusercontent.com/assets/53660/16141569/ee2bbe4a-3411-11e6-85dc-3d9b0226e833.png "dark"
[light]: https://cloud.githubusercontent.com/assets/53660/16141570/f106afc6-3411-11e6-877d-fc2a8f6d3175.png "light" [btf-light]: https://cloud.githubusercontent.com/assets/53660/16141570/f106afc6-3411-11e6-877d-fc2a8f6d3175.png "light"
[solarized]: https://cloud.githubusercontent.com/assets/53660/16141572/f7724032-3411-11e6-8771-b43769e7afec.png "solarized" [btf-solarized]: https://cloud.githubusercontent.com/assets/53660/16141572/f7724032-3411-11e6-8771-b43769e7afec.png "solarized"
[solarized-light]: https://cloud.githubusercontent.com/assets/53660/16141575/fbed8036-3411-11e6-92e9-90da6d45f94b.png "solarized-light" [btf-solarized-light]: https://cloud.githubusercontent.com/assets/53660/16141575/fbed8036-3411-11e6-92e9-90da6d45f94b.png "solarized-light"
[base16]: https://cloud.githubusercontent.com/assets/53660/16141577/0134763a-3412-11e6-9cca-6040d39c8fd4.png "base16" [btf-base16]: https://cloud.githubusercontent.com/assets/53660/16141577/0134763a-3412-11e6-9cca-6040d39c8fd4.png "base16"
[base16-light]: https://cloud.githubusercontent.com/assets/53660/16141579/02f7245e-3412-11e6-97c6-5f3cecffb73c.png "base16-light" [btf-base16-light]: https://cloud.githubusercontent.com/assets/53660/16141579/02f7245e-3412-11e6-97c6-5f3cecffb73c.png "base16-light"
[zenburn]: https://cloud.githubusercontent.com/assets/53660/16141580/06229dd4-3412-11e6-84aa-a48de127b6da.png "zenburn" [btf-zenburn]: https://cloud.githubusercontent.com/assets/53660/16141580/06229dd4-3412-11e6-84aa-a48de127b6da.png "zenburn"
[terminal-dark]: https://cloud.githubusercontent.com/assets/53660/16141583/0b3e8eea-3412-11e6-8068-617c5371f6ea.png "terminal-dark" [btf-terminal-dark]: https://cloud.githubusercontent.com/assets/53660/16141583/0b3e8eea-3412-11e6-8068-617c5371f6ea.png "terminal-dark"
[nord]: https://user-images.githubusercontent.com/39213657/72811435-f64ca800-3c5f-11ea-8711-dcce8cfc50fb.png "nord" [btf-nord]: https://user-images.githubusercontent.com/39213657/72811435-f64ca800-3c5f-11ea-8711-dcce8cfc50fb.png "nord"
[gruvbox-light]: https://user-images.githubusercontent.com/458535/97345492-6a207e80-188a-11eb-92df-30f33419238b.png "gruvbox-light"

@ -33,7 +33,7 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_username white black --bold set -x color_username white black --bold
set -x color_hostname white black set -x color_hostname white black
set -x color_rvm brmagenta $colorfg --bold set -x color_rvm brmagenta $colorfg --bold
set -x color_nvm brgreen $colorfg --bold set -x color_node brgreen $colorfg --bold
set -x color_virtualfish brblue $colorfg --bold set -x color_virtualfish brblue $colorfg --bold
set -x color_virtualgo brblue $colorfg --bold set -x color_virtualgo brblue $colorfg --bold
set -x color_desk brblue $colorfg --bold set -x color_desk brblue $colorfg --bold
@ -68,7 +68,7 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_username black white --bold set -x color_username black white --bold
set -x color_hostname black white set -x color_hostname black white
set -x color_rvm brmagenta $colorfg --bold set -x color_rvm brmagenta $colorfg --bold
set -x color_nvm brgreen $colorfg --bold set -x color_node brgreen $colorfg --bold
set -x color_virtualfish brblue $colorfg --bold set -x color_virtualfish brblue $colorfg --bold
set -x color_virtualgo brblue $colorfg --bold set -x color_virtualgo brblue $colorfg --bold
set -x color_desk brblue $colorfg --bold set -x color_desk brblue $colorfg --bold
@ -103,7 +103,7 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_username brgrey white --bold set -x color_username brgrey white --bold
set -x color_hostname brgrey white set -x color_hostname brgrey white
set -x color_rvm brmagenta $colorfg --bold set -x color_rvm brmagenta $colorfg --bold
set -x color_nvm brgreen $colorfg --bold set -x color_node brgreen $colorfg --bold
set -x color_virtualfish brblue $colorfg --bold set -x color_virtualfish brblue $colorfg --bold
set -x color_virtualgo brblue $colorfg --bold set -x color_virtualgo brblue $colorfg --bold
set -x color_desk brblue $colorfg --bold set -x color_desk brblue $colorfg --bold
@ -138,7 +138,7 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_username grey black --bold set -x color_username grey black --bold
set -x color_hostname grey black set -x color_hostname grey black
set -x color_rvm brmagenta $colorfg --bold set -x color_rvm brmagenta $colorfg --bold
set -x color_nvm brgreen $colorfg --bold set -x color_node brgreen $colorfg --bold
set -x color_virtualfish brblue $colorfg --bold set -x color_virtualfish brblue $colorfg --bold
set -x color_virtualgo brblue $colorfg --bold set -x color_virtualgo brblue $colorfg --bold
set -x color_desk brblue $colorfg --bold set -x color_desk brblue $colorfg --bold
@ -179,7 +179,7 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_username $grey $blue --bold set -x color_username $grey $blue --bold
set -x color_hostname $grey $blue set -x color_hostname $grey $blue
set -x color_rvm $red $grey --bold set -x color_rvm $red $grey --bold
set -x color_nvm $green $white --bold set -x color_node $green $white --bold
set -x color_virtualfish $blue $grey --bold set -x color_virtualfish $blue $grey --bold
set -x color_virtualgo $blue $grey --bold set -x color_virtualgo $blue $grey --bold
set -x color_desk $blue $grey --bold set -x color_desk $blue $grey --bold
@ -231,7 +231,7 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_username $base02 $base0D --bold set -x color_username $base02 $base0D --bold
set -x color_hostname $base02 $base0D set -x color_hostname $base02 $base0D
set -x color_rvm $base08 $colorfg --bold set -x color_rvm $base08 $colorfg --bold
set -x color_nvm $base0B $colorfg --bold set -x color_node $base0B $colorfg --bold
set -x color_virtualfish $base0D $colorfg --bold set -x color_virtualfish $base0D $colorfg --bold
set -x color_virtualgo $base0D $colorfg --bold set -x color_virtualgo $base0D $colorfg --bold
set -x color_desk $base0D $colorfg --bold set -x color_desk $base0D $colorfg --bold
@ -283,7 +283,7 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_username $base02 $base0D --bold set -x color_username $base02 $base0D --bold
set -x color_hostname $base02 $base0D set -x color_hostname $base02 $base0D
set -x color_rvm $base08 $colorfg --bold set -x color_rvm $base08 $colorfg --bold
set -x color_nvm $base0B $colorfg --bold set -x color_node $base0B $colorfg --bold
set -x color_virtualfish $base0D $colorfg --bold set -x color_virtualfish $base0D $colorfg --bold
set -x color_virtualgo $base0D $colorfg --bold set -x color_virtualgo $base0D $colorfg --bold
set -x color_desk $base0D $colorfg --bold set -x color_desk $base0D $colorfg --bold
@ -335,7 +335,7 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_username $base2 $blue --bold set -x color_username $base2 $blue --bold
set -x color_hostname $base2 $blue set -x color_hostname $base2 $blue
set -x color_rvm $red $colorfg --bold set -x color_rvm $red $colorfg --bold
set -x color_nvm $green $colorfg --bold set -x color_node $green $colorfg --bold
set -x color_virtualfish $cyan $colorfg --bold set -x color_virtualfish $cyan $colorfg --bold
set -x color_virtualgo $cyan $colorfg --bold set -x color_virtualgo $cyan $colorfg --bold
set -x color_desk $cyan $colorfg --bold set -x color_desk $cyan $colorfg --bold
@ -387,7 +387,7 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_username $base02 $blue --bold set -x color_username $base02 $blue --bold
set -x color_hostname $base02 $blue set -x color_hostname $base02 $blue
set -x color_rvm $red $colorfg --bold set -x color_rvm $red $colorfg --bold
set -x color_nvm $green $colorfg --bold set -x color_node $green $colorfg --bold
set -x color_virtualfish $cyan $colorfg --bold set -x color_virtualfish $cyan $colorfg --bold
set -x color_virtualgo $cyan $colorfg --bold set -x color_virtualgo $cyan $colorfg --bold
set -x color_desk $cyan $colorfg --bold set -x color_desk $cyan $colorfg --bold
@ -432,7 +432,7 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_username $grey[1] $blue[3] --bold set -x color_username $grey[1] $blue[3] --bold
set -x color_hostname $grey[1] $blue[3] set -x color_hostname $grey[1] $blue[3]
set -x color_rvm $ruby_red $grey[1] --bold set -x color_rvm $ruby_red $grey[1] --bold
set -x color_nvm $green $grey[1] --bold set -x color_node $green $grey[1] --bold
set -x color_virtualfish $blue[2] $grey[1] --bold set -x color_virtualfish $blue[2] $grey[1] --bold
set -x color_virtualgo $blue[2] $grey[1] --bold set -x color_virtualgo $blue[2] $grey[1] --bold
set -x color_desk $blue[2] $grey[1] --bold set -x color_desk $blue[2] $grey[1] --bold
@ -476,12 +476,54 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_username $fg[3] $blue[2] --bold set -x color_username $fg[3] $blue[2] --bold
set -x color_hostname $fg[3] $blue[2] set -x color_hostname $fg[3] $blue[2]
set -x color_rvm $red[2] $fg[2] --bold set -x color_rvm $red[2] $fg[2] --bold
set -x color_nvm $green[1] $fg[2] --bold set -x color_node $green[1] $fg[2] --bold
set -x color_virtualfish $blue[2] $fg[2] --bold set -x color_virtualfish $blue[2] $fg[2] --bold
set -x color_virtualgo $blue[2] $fg[2] --bold set -x color_virtualgo $blue[2] $fg[2] --bold
set -x color_desk $blue[2] $fg[2] --bold set -x color_desk $blue[2] $fg[2] --bold
set -x color_nix $blue[2] $fg[2] --bold set -x color_nix $blue[2] $fg[2] --bold
case 'gruvbox-light'
# light medium dark darkest
# ------ ------ ------ -------
set -l red 9d0006 cc241d
set -l green 79740e 98971a
set -l yellow b57614 d79921
set -l aqua 427b58 689d6a
set -l blue 076678 458588
set -l grey a89984 928374
set -l orange af3a03 d65d0e
set -l fg 282828 3c3836 504945 7c6f64
set -l bg d5c4a1 fbf1c7
set -x color_initial_segment_exit $red[1] $bg[2] --bold
set -x color_initial_segment_su $fg[1] $green[2] --bold
set -x color_initial_segment_jobs $fg[1] $aqua[2] --bold
set -x color_path $bg[1] $fg[2]
set -x color_path_basename $bg[1] $fg[2] --bold
set -x color_path_nowrite $red[1] $bg[2]
set -x color_path_nowrite_basename $red[1] $bg[2] --bold
set -x color_repo $green[2] $fg[1]
set -x color_repo_work_tree $bg[1] $fg[2] --bold
set -x color_repo_dirty $orange[2] $bg[2]
set -x color_repo_staged $yellow[1] $bg[1]
set -x color_vi_mode_default $fg[4] $bg[2] --bold
set -x color_vi_mode_insert $blue[1] $bg[2] --bold
set -x color_vi_mode_visual $yellow[1] $bg[2] --bold
set -x color_vagrant $blue[2] $fg[2] --bold
set -x color_k8s $green[2] $fg[2] --bold
set -x color_username $fg[3] $blue[2] --bold
set -x color_hostname $fg[3] $blue[2]
set -x color_rvm $red[2] $bg[2] --bold
set -x color_nvm $green[1] $fg[2] --bold
set -x color_virtualfish $blue[2] $fg[2] --bold
set -x color_virtualgo $blue[2] $fg[2] --bold
set -x color_desk $blue[2] $fg[2] --bold
set -x color_nix $blue[2] $fg[2] --bold
case 'dracula' # https://draculatheme.com case 'dracula' # https://draculatheme.com
set -l bg 282a36 set -l bg 282a36
set -l current_line 44475a set -l current_line 44475a
@ -516,13 +558,13 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_vi_mode_visual $orange $bg --bold set -x color_vi_mode_visual $orange $bg --bold
set -x color_vagrant $pink $bg --bold set -x color_vagrant $pink $bg --bold
set -x color_k8s $green $fg --bold set -x color_k8s $purple $bg --bold
set -x color_aws_vault $comment $yellow --bold set -x color_aws_vault $comment $yellow --bold
set -x color_aws_vault_expired $comment $red --bold set -x color_aws_vault_expired $comment $red --bold
set -x color_username $selection $cyan --bold set -x color_username $selection $cyan --bold
set -x color_hostname $selection $cyan set -x color_hostname $selection $cyan
set -x color_rvm $red $bg --bold set -x color_rvm $red $bg --bold
set -x color_nvm $green $bg --bold set -x color_node $green $bg --bold
set -x color_virtualfish $comment $bg --bold set -x color_virtualfish $comment $bg --bold
set -x color_virtualgo $cyan $bg --bold set -x color_virtualgo $cyan $bg --bold
set -x color_desk $comment $bg --bold set -x color_desk $comment $bg --bold
@ -574,7 +616,7 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_username $base02 $base0D --bold set -x color_username $base02 $base0D --bold
set -x color_hostname $base02 $base0D set -x color_hostname $base02 $base0D
set -x color_rvm $base09 $colorfg --bold set -x color_rvm $base09 $colorfg --bold
set -x color_nvm $base09 $colorfg --bold set -x color_node $base09 $colorfg --bold
set -x color_virtualfish $base09 $colorfg --bold set -x color_virtualfish $base09 $colorfg --bold
set -x color_virtualgo $base09 $colorfg --bold set -x color_virtualgo $base09 $colorfg --bold
set -x color_desk $base09 $colorfg --bold set -x color_desk $base09 $colorfg --bold
@ -634,6 +676,48 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_virtualgo $light_green $darker_grey --bold set -x color_virtualgo $light_green $darker_grey --bold
set -x color_desk $light_grey $darker_grey --bold set -x color_desk $light_grey $darker_grey --bold
case 'darcula'
# light medium dark darkest
# ------ ------ ------ ------
set -l grey 808080 616161 595959 424242
set -l red FF4050 F0524F B82421 772E2C
set -l green 4FC414 5C962C 458500 39511F
set -l yellow E5BF00 A68A0D A87B00 5C4F17
set -l blue 1FB0FF 3993D4 1778BD 245980
set -l white F9F9F4 B7C3D0
set -x color_initial_segment_exit $white[2] $red[3] --bold
set -x color_initial_segment_private $white[2] $grey[4]
set -x color_initial_segment_su $white[2] $green[3] --bold
set -x color_initial_segment_jobs $white[2] $blue[3] --bold
set -x color_path $grey[4] $white[2]
set -x color_path_basename $grey[4] $white[1] --bold
set -x color_path_nowrite $grey[4] $red[2]
set -x color_path_nowrite_basename $grey[4] $red[1] --bold
set -x color_repo $green[3] $white[4]
set -x color_repo_work_tree $grey[4] $grey[4] --bold
set -x color_repo_dirty $red[3] $grey[4]
set -x color_repo_staged $yellow[3] $grey[4]
set -x color_vi_mode_default $grey[4] $yellow[2] --bold
set -x color_vi_mode_insert $green[2] $grey[4] --bold
set -x color_vi_mode_visual $yellow[2] $grey[4] --bold
set -x color_vagrant $blue[2] $green[1] --bold
set -x color_k8s $green[2] $grey[4] --bold
set -x color_aws_vault $blue[2] $grey[4] --bold
set -x color_aws_vault_expired $blue[2] $red[1] --bold
set -x color_username $grey[4] $blue[2] --bold
set -x color_hostname $grey[4] $blue[1]
set -x color_rvm $red[2] $grey[4] --bold
set -x color_node $green[3] $white[2] --bold
set -x color_virtualfish $blue[2] $grey[4] --bold
set -x color_virtualgo $blue[2] $grey[4] --bold
set -x color_desk $blue[2] $grey[4] --bold
set -x color_nix $blue[2] $grey[4] --bold
case '*' # default dark theme case '*' # default dark theme
# light medium dark # light medium dark
# ------ ------ ------ # ------ ------ ------
@ -674,7 +758,7 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
set -x color_username $grey[1] $blue[3] --bold set -x color_username $grey[1] $blue[3] --bold
set -x color_hostname $grey[1] $blue[3] set -x color_hostname $grey[1] $blue[3]
set -x color_rvm $ruby_red $grey[1] --bold set -x color_rvm $ruby_red $grey[1] --bold
set -x color_nvm $green[1] $white --bold set -x color_node $green[1] $white --bold
set -x color_virtualfish $blue[2] $grey[1] --bold set -x color_virtualfish $blue[2] $grey[1] --bold
set -x color_virtualgo $go_blue $black --bold set -x color_virtualgo $go_blue $black --bold
set -x color_desk $blue[2] $grey[1] --bold set -x color_desk $blue[2] $grey[1] --bold

@ -3,7 +3,7 @@ function bobthefish_display_colors -a color_scheme -d 'Print example prompt colo
set -l color_schemes default light \ set -l color_schemes default light \
solarized solarized-light \ solarized solarized-light \
base16 base16-light \ base16 base16-light \
gruvbox zenburn \ gruvbox gruvbox-light zenburn \
dracula nord \ dracula nord \
terminal terminal-dark-white \ terminal terminal-dark-white \
terminal-light terminal-light-black \ terminal-light terminal-light-black \
@ -140,6 +140,7 @@ function bobthefish_display_colors -a color_scheme -d 'Print example prompt colo
__bobthefish_start_segment $color_desk __bobthefish_start_segment $color_desk
echo -ns $desk_glyph desk ' ' echo -ns $desk_glyph desk ' '
__bobthefish_finish_segments __bobthefish_finish_segments
echo
__bobthefish_start_segment $color_aws_vault __bobthefish_start_segment $color_aws_vault
echo -ns aws-vault ' (' active ') ' echo -ns aws-vault ' (' active ') '
@ -149,5 +150,9 @@ function bobthefish_display_colors -a color_scheme -d 'Print example prompt colo
echo -ns aws-vault ' (' expired ') ' echo -ns aws-vault ' (' expired ') '
__bobthefish_finish_segments __bobthefish_finish_segments
__bobthefish_start_segment $color_k8s
echo -ns $k8s_glyph ' k8s-context'
__bobthefish_finish_segments
echo -e "\n" echo -e "\n"
end end

@ -15,42 +15,8 @@
# #
# https://github.com/ryanoasis/nerd-fonts # https://github.com/ryanoasis/nerd-fonts
# #
# You can override some default prompt options in your config.fish: # See README.md for setup and configuration options.
# #
# set -g theme_display_git no
# set -g theme_display_git_dirty no
# set -g theme_display_git_untracked no
# set -g theme_display_git_ahead_verbose yes
# set -g theme_display_git_dirty_verbose yes
# set -g theme_display_git_stashed_verbose yes
# set -g theme_display_git_default_branch yes
# set -g theme_git_default_branches main trunk
# set -g theme_git_worktree_support yes
# set -g theme_display_vagrant yes
# set -g theme_display_docker_machine no
# set -g theme_display_k8s_context yes
# set -g theme_display_k8s_namespace no
# set -g theme_display_aws_vault_profile yes
# set -g theme_display_hg yes
# set -g theme_display_virtualenv no
# set -g theme_display_nix no
# set -g theme_display_ruby no
# set -g theme_display_user ssh
# set -g theme_display_hostname ssh
# set -g theme_display_sudo_user yes
# set -g theme_display_vi no
# set -g theme_display_nvm yes
# set -g theme_avoid_ambiguous_glyphs yes
# set -g theme_powerline_fonts no
# set -g theme_nerd_fonts yes
# set -g theme_show_exit_status yes
# set -g theme_display_jobs_verbose yes
# set -g default_user your_normal_user
# set -g theme_color_scheme dark
# set -g fish_prompt_pwd_dir_length 0
# set -g theme_project_dir_length 1
# set -g theme_newline_cursor yes
# ============================== # ==============================
# Helper methods # Helper methods
@ -78,10 +44,13 @@ function __bobthefish_escape_regex -a str -d 'A backwards-compatible `string esc
end end
function __bobthefish_git_branch -S -d 'Get the current git branch (or commitish)' function __bobthefish_git_branch -S -d 'Get the current git branch (or commitish)'
set -l tag (command git describe --tags --exact-match 2>/dev/null)
and echo "$tag_glyph $tag "
set -l branch (command git symbolic-ref HEAD 2>/dev/null | string replace -r '^refs/heads/' '') set -l branch (command git symbolic-ref HEAD 2>/dev/null | string replace -r '^refs/heads/' '')
and begin and begin
[ -n "$theme_git_default_branches" ] [ -n "$theme_git_default_branches" ]
or set -l theme_git_default_branches master main or set -l theme_git_default_branches master main (git config init.defaultBranch)
[ "$theme_display_git_master_branch" != 'yes' -a "$theme_display_git_default_branch" != 'yes' ] [ "$theme_display_git_master_branch" != 'yes' -a "$theme_display_git_default_branch" != 'yes' ]
and contains $branch $theme_git_default_branches and contains $branch $theme_git_default_branches
@ -97,12 +66,11 @@ function __bobthefish_git_branch -S -d 'Get the current git branch (or commitish
and return and return
end end
set -l tag (command git describe --tags --exact-match 2>/dev/null) # If we've already shown a tag we don't need to show a detached branch
and echo "$tag_glyph $tag" if [ -z "$tag" ]
and return set -l branch (command git show-ref --head -s --abbrev | head -n1 2>/dev/null)
echo "$detached_glyph $branch"
set -l branch (command git show-ref --head -s --abbrev | head -n1 2>/dev/null) end
echo "$detached_glyph $branch"
end end
function __bobthefish_hg_branch -S -d 'Get the current hg branch' function __bobthefish_hg_branch -S -d 'Get the current hg branch'
@ -158,6 +126,10 @@ function __bobthefish_git_project_dir -S -a real_pwd -d 'Print the current git p
[ -z "$git_toplevel" ] [ -z "$git_toplevel" ]
and return and return
# Support Git under WSL (see #336)
command -q wslpath
and set git_toplevel (command wslpath $git_toplevel)
# If there are no symlinks, just use git toplevel # If there are no symlinks, just use git toplevel
switch $real_pwd/ switch $real_pwd/
case $git_toplevel/\* case $git_toplevel/\*
@ -185,7 +157,7 @@ function __bobthefish_git_project_dir -S -a real_pwd -d 'Print the current git p
or return or return
pushd $git_dir pushd $git_dir
set git_dir $real_pwd set git_dir (__bobthefish_pwd)
popd popd
switch $real_pwd/ switch $real_pwd/
@ -357,7 +329,7 @@ function __bobthefish_start_segment -S -d 'Start a prompt segment'
set __bobthefish_current_bg $bg set __bobthefish_current_bg $bg
end end
function __bobthefish_path_segment -S -a segment_dir -d 'Display a shortened form of a directory' function __bobthefish_path_segment -S -a segment_dir -a path_type -d 'Display a shortened form of a directory'
set -l segment_color $color_path set -l segment_color $color_path
set -l segment_basename_color $color_path_basename set -l segment_basename_color $color_path_basename
@ -381,7 +353,9 @@ function __bobthefish_path_segment -S -a segment_dir -d 'Display a shortened for
set directory (__bobthefish_basename "$segment_dir") set directory (__bobthefish_basename "$segment_dir")
end end
echo -n $parent [ "$theme_show_project_parent" != "no" -o "$path_type" != "project" ]
and echo -n $parent
set_color -b $segment_basename_color set_color -b $segment_basename_color
echo -ns $directory ' ' echo -ns $directory ' '
end end
@ -399,7 +373,7 @@ function __bobthefish_finish_segments -S -d 'Close open prompt segments'
if set -q theme_newline_prompt if set -q theme_newline_prompt
echo -ens "$theme_newline_prompt" echo -ens "$theme_newline_prompt"
else if [ "$theme_powerline_fonts" = "no" -a "$theme_nerd_fonts" != "yes" ] else if [ "$theme_powerline_fonts" = 'no' -a "$theme_nerd_fonts" != 'yes' ]
echo -ns '> ' echo -ns '> '
else else
echo -ns "$right_arrow_glyph " echo -ns "$right_arrow_glyph "
@ -637,16 +611,18 @@ function __bobthefish_prompt_k8s_context -S -d 'Show current Kubernetes context'
[ "$theme_display_k8s_namespace" = 'yes' ] [ "$theme_display_k8s_namespace" = 'yes' ]
and set -l namespace (__bobthefish_k8s_namespace) and set -l namespace (__bobthefish_k8s_namespace)
[ -z $context -o "$context" = 'default' ] [ -z "$context" -o "$context" = 'default' ]
and [ -z $namespace -o "$namespace" = 'default' ] and [ -z "$namespace" -o "$namespace" = 'default' ]
and return and return
set -l segment $k8s_glyph " " $context set -l segment $k8s_glyph ' '
[ -n "$namespace" ] [ "$context" != 'default' ]
and set segment $segment ":" $namespace and set segment $segment $context
[ "$namespace" != 'default' ]
and set segment $segment ':' $namespace
__bobthefish_start_segment $color_k8s __bobthefish_start_segment $color_k8s
echo -ns $segment " " echo -ns $segment ' '
end end
@ -658,28 +634,28 @@ function __bobthefish_prompt_aws_vault_profile -S -d 'Show AWS Vault profile'
[ "$theme_display_aws_vault_profile" = 'yes' ] [ "$theme_display_aws_vault_profile" = 'yes' ]
or return or return
[ -n "$AWS_VAULT" -a -n "$AWS_SESSION_EXPIRATION" ] [ -n "$AWS_VAULT" -a -n "$AWS_CREDENTIAL_EXPIRATION" ]
or return or return
set -l profile $AWS_VAULT set -l profile $AWS_VAULT
set -l now (date --utc +%s) set -l now (date --utc +%s)
set -l expiry (date -d "$AWS_SESSION_EXPIRATION" +%s) set -l expiry (date -d "$AWS_CREDENTIAL_EXPIRATION" +%s)
set -l diff_mins (math "floor(( $expiry - $now ) / 60)") set -l diff_mins (math "floor(( $expiry - $now ) / 60)")
set -l diff_time $diff_mins"m" set -l diff_time $diff_mins"m"
[ $diff_mins -le 0 ] [ $diff_mins -le 0 ]
and set -l diff_time "0m" and set -l diff_time '0m'
[ $diff_mins -ge 60 ] [ $diff_mins -ge 60 ]
and set -l diff_time (math "floor($diff_mins / 60)")"h"(math "$diff_mins % 60")"m" and set -l diff_time (math "floor($diff_mins / 60)")"h"(math "$diff_mins % 60")"m"
set -l segment $profile " (" $diff_time ")" set -l segment $profile ' (' $diff_time ')'
set -l status_color $color_aws_vault set -l status_color $color_aws_vault
[ $diff_mins -le 0 ] [ $diff_mins -le 0 ]
and set -l status_color $color_aws_vault_expired and set -l status_color $color_aws_vault_expired
__bobthefish_start_segment $status_color __bobthefish_start_segment $status_color
echo -ns $segment " " echo -ns $segment ' '
end end
@ -690,7 +666,7 @@ end
# Polyfill for fish < 2.5.0 # Polyfill for fish < 2.5.0
if not type -q prompt_hostname if not type -q prompt_hostname
if not set -q __bobthefish_prompt_hostname if not set -q __bobthefish_prompt_hostname
set -g __bobthefish_prompt_hostname (hostname | string replace -r '\..*' '') set -g __bobthefish_prompt_hostname (uname -n | string replace -r '\..*' '')
end end
function prompt_hostname function prompt_hostname
@ -830,10 +806,10 @@ function __bobthefish_prompt_rubies -S -d 'Display current Ruby information'
set -l asdf_current_ruby (asdf current ruby 2>/dev/null) set -l asdf_current_ruby (asdf current ruby 2>/dev/null)
or return or return
echo "$asdf_current_ruby" | read -l asdf_ruby_version asdf_provenance echo "$asdf_current_ruby" | read -l _asdf_plugin asdf_ruby_version asdf_provenance
# If asdf changes their ruby version provenance format, update this to match # If asdf changes their ruby version provenance format, update this to match
[ (string trim -- "$asdf_provenance") = "(set by $HOME/.tool-versions)" ] [ (string trim -- "$asdf_provenance") = "$HOME/.tool-versions" ]
and return and return
set ruby_version $asdf_ruby_version set ruby_version $asdf_ruby_version
@ -846,6 +822,63 @@ function __bobthefish_prompt_rubies -S -d 'Display current Ruby information'
echo -ns $ruby_glyph $ruby_version ' ' echo -ns $ruby_glyph $ruby_version ' '
end end
function __bobthefish_prompt_golang -S -a real_pwd -d 'Display current Go information'
# setting is 'no', don't display the prompt
[ "$theme_display_go" = 'no' ]
and return
# find the closest go.mod
set -l gomod_version "0"
set -l d $real_pwd
while not [ -z "$d" ]
if [ -e $d/go.mod ]
grep "^go " "$d/go.mod" | read __ gomod_version
break
end
[ "$d" = "/" ]
and return
set d (__bobthefish_dirname $d)
end
# no go.mod, not in a go project, don't display the prompt
if [ "$gomod_version" = "0" ]
return
end
# check if there's a Go executable
set -l no_go_installed "0"
set -l actual_go_version "0"
set -l high_enough_version "0"
if type -fq go
set actual_go_version (go version | string match -r 'go version go(\\d+\\.\\d+)' -g)
if printf "%s\n%s" "$gomod_version" "$actual_go_version" | sort --check=silent --version-sort
set high_enough_version "1"
end
else
set no_go_installed "1"
end
if [ "$high_enough_version" = "1" ]
__bobthefish_start_segment $color_virtualgo
else
__bobthefish_start_segment $color_rvm
end
echo -ns $go_glyph
echo -ns "$gomod_version "
# showing the prompt -- but plain ( for 'yes' ) or verbose?
if [ "$theme_display_go" = "verbose" ]
if [ "$actual_go_version" != "0" ]
# show the prompt with the required version AND the currently available
# version; same color rules as above
echo -ns " ($actual_go_version)"
end
end
end
function __bobthefish_virtualenv_python_version -S -d 'Get current Python version' function __bobthefish_virtualenv_python_version -S -d 'Get current Python version'
switch (python --version 2>&1 | tr '\n' ' ') switch (python --version 2>&1 | tr '\n' ' ')
case 'Python 2*PyPy*' case 'Python 2*PyPy*'
@ -860,14 +893,29 @@ function __bobthefish_virtualenv_python_version -S -d 'Get current Python versio
end end
function __bobthefish_prompt_virtualfish -S -d "Display current Python virtual environment (only for virtualfish, virtualenv's activate.fish changes prompt by itself) or conda environment." function __bobthefish_prompt_virtualfish -S -d "Display current Python virtual environment (only for virtualfish, virtualenv's activate.fish changes prompt by itself) or conda environment."
type -fq python
or return
[ "$theme_display_virtualenv" = 'no' -o -z "$VIRTUAL_ENV" -a -z "$CONDA_DEFAULT_ENV" ] [ "$theme_display_virtualenv" = 'no' -o -z "$VIRTUAL_ENV" -a -z "$CONDA_DEFAULT_ENV" ]
and return and return
set -l version_glyph (__bobthefish_virtualenv_python_version) set -l version_glyph (__bobthefish_virtualenv_python_version)
set -l prompt_style 'default'
if [ "$version_glyph" ] if [ "$version_glyph" ]
__bobthefish_start_segment $color_virtualfish __bobthefish_start_segment $color_virtualfish
echo -ns $virtualenv_glyph $version_glyph ' ' if string match -q "Python 2*" (python --version 2>&1 | string trim)
set prompt_style 'verbose'
else if [ "$theme_display_virtualenv" = 'verbose' ]
set prompt_style 'verbose'
end
if [ "$prompt_style" = 'verbose' ]
echo -ns $virtualenv_glyph $version_glyph ' '
else
echo -ns $virtualenv_glyph
end
end end
if [ "$VIRTUAL_ENV" ] if [ "$VIRTUAL_ENV" ]
@ -891,20 +939,70 @@ function __bobthefish_prompt_desk -S -d 'Display current desk environment'
and return and return
__bobthefish_start_segment $color_desk __bobthefish_start_segment $color_desk
echo -ns $desk_glyph ' ' (basename -a -s ".fish" "$DESK_ENV") ' ' echo -ns $desk_glyph ' ' (basename -a -s '.fish' "$DESK_ENV") ' '
set_color normal set_color normal
end end
function __bobthefish_prompt_nvm -S -d 'Display current node version through NVM' function __bobthefish_prompt_find_file_up -S -d 'Find file(s), going up the parent directories'
[ "$theme_display_nvm" = 'yes' -a -n "$NVM_DIR" ] set -l dir "$argv[1]"
set -l files $argv[2..-1]
if test -z "$dir"
or test -z "$files"
return 1
end
while [ "$dir" ]
for f in $files
if [ -e "$dir/$f" ]
return
end
end
[ "$dir" = '/' ]
and return 1
set dir (__bobthefish_dirname "$dir")
end
return 1
end
function __bobthefish_prompt_node -S -d 'Display current node version'
set -l should_show
if [ "$theme_display_node" = 'always' -o "$theme_display_nvm" = 'yes' ]
set should_show 1
else if [ "$theme_display_node" = 'yes' ]
__bobthefish_prompt_find_file_up "$PWD" package.json .nvmrc .node-version
and set should_show 1
end
[ -z "$should_show" ]
and return
set -l node_manager
set -l node_manager_dir
if type -q nvm
set node_manager 'nvm'
set node_manager_dir $NVM_DIR
else if type -fq fnm
set node_manager 'fnm'
set node_manager_dir $FNM_DIR
end
[ -n "$node_manager_dir" ]
or return or return
set -l node_version (nvm current 2> /dev/null) set -l node_version ("$node_manager" current 2> /dev/null)
[ -z $node_version -o "$node_version" = 'none' -o "$node_version" = 'system' ] [ -z $node_version -o "$node_version" = 'none' -o "$node_version" = 'system' ]
and return and return
__bobthefish_start_segment $color_nvm [ -n "$color_nvm" ]
and set -x color_node $color_nvm
__bobthefish_start_segment $color_node
echo -ns $node_glyph $node_version ' ' echo -ns $node_glyph $node_version ' '
set_color normal set_color normal
end end
@ -928,14 +1026,14 @@ function __bobthefish_prompt_hg -S -a hg_root_dir -a real_pwd -d 'Display the ac
set -l flags "$dirty" set -l flags "$dirty"
[ "$flags" ] [ "$flags" ]
and set flags "" and set flags ''
set -l flag_colors $color_repo set -l flag_colors $color_repo
if [ "$dirty" ] if [ "$dirty" ]
set flag_colors $color_repo_dirty set flag_colors $color_repo_dirty
end end
__bobthefish_path_segment $hg_root_dir __bobthefish_path_segment $hg_root_dir project
__bobthefish_start_segment $flag_colors __bobthefish_start_segment $flag_colors
echo -ns $hg_glyph ' ' echo -ns $hg_glyph ' '
@ -976,7 +1074,7 @@ function __bobthefish_prompt_git -S -a git_root_dir -a real_pwd -d 'Display the
if [ "$theme_display_git_untracked" != 'no' ] if [ "$theme_display_git_untracked" != 'no' ]
set -l show_untracked (command git config --bool bash.showUntrackedFiles 2>/dev/null) set -l show_untracked (command git config --bool bash.showUntrackedFiles 2>/dev/null)
if [ "$show_untracked" != 'false' ] if [ "$show_untracked" != 'false' ]
set new (command git ls-files --other --exclude-standard --directory --no-empty-directory 2>/dev/null) set new (command git ls-files --other --exclude-standard --directory --no-empty-directory "$git_root_dir" 2>/dev/null)
if [ "$new" ] if [ "$new" ]
set new "$git_untracked_glyph" set new "$git_untracked_glyph"
end end
@ -995,7 +1093,7 @@ function __bobthefish_prompt_git -S -a git_root_dir -a real_pwd -d 'Display the
set flag_colors $color_repo_staged set flag_colors $color_repo_staged
end end
__bobthefish_path_segment $git_root_dir __bobthefish_path_segment $git_root_dir project
__bobthefish_start_segment $flag_colors __bobthefish_start_segment $flag_colors
echo -ns (__bobthefish_git_branch) $flags ' ' echo -ns (__bobthefish_git_branch) $flags ' '
@ -1077,7 +1175,7 @@ function __bobthefish_prompt_git -S -a git_root_dir -a real_pwd -d 'Display the
end end
function __bobthefish_prompt_dir -S -a real_pwd -d 'Display a shortened form of the current directory' function __bobthefish_prompt_dir -S -a real_pwd -d 'Display a shortened form of the current directory'
__bobthefish_path_segment "$real_pwd" __bobthefish_path_segment "$real_pwd" pwd
end end
@ -1090,8 +1188,8 @@ function fish_prompt -d 'bobthefish, a fish theme optimized for awesome'
set -l last_status $status set -l last_status $status
# Use a simple prompt on dumb terminals. # Use a simple prompt on dumb terminals.
if [ "$TERM" = "dumb" ] if [ "$TERM" = 'dumb' ]
echo "> " echo '> '
return return
end end
@ -1104,6 +1202,8 @@ function fish_prompt -d 'bobthefish, a fish theme optimized for awesome'
# Start each line with a blank slate # Start each line with a blank slate
set -l __bobthefish_current_bg set -l __bobthefish_current_bg
set -l real_pwd (__bobthefish_pwd)
# Status flags and input mode # Status flags and input mode
__bobthefish_prompt_status $last_status __bobthefish_prompt_status $last_status
@ -1122,11 +1222,11 @@ function fish_prompt -d 'bobthefish, a fish theme optimized for awesome'
__bobthefish_prompt_nix __bobthefish_prompt_nix
__bobthefish_prompt_desk __bobthefish_prompt_desk
__bobthefish_prompt_rubies __bobthefish_prompt_rubies
__bobthefish_prompt_golang $real_pwd
__bobthefish_prompt_virtualfish __bobthefish_prompt_virtualfish
__bobthefish_prompt_virtualgo __bobthefish_prompt_virtualgo
__bobthefish_prompt_nvm __bobthefish_prompt_node
set -l real_pwd (__bobthefish_pwd)
# VCS # VCS
set -l git_root_dir (__bobthefish_git_project_dir $real_pwd) set -l git_root_dir (__bobthefish_git_project_dir $real_pwd)

@ -1,6 +1,4 @@
# You can override some default right prompt options in your config.fish: # See "Right prompt options" in README.md for configuration options
# set -g theme_date_format "+%a %H:%M"
# set -g theme_date_timezone America/Los_Angeles
function __bobthefish_cmd_duration -S -d 'Show command duration' function __bobthefish_cmd_duration -S -d 'Show command duration'
[ "$theme_display_cmd_duration" = "no" ] [ "$theme_display_cmd_duration" = "no" ]

@ -1,15 +1,11 @@
# You can override some default title options in your config.fish: # See "Title options" in README.md for configuration options
# set -g theme_title_display_process no
# set -g theme_title_display_path no
# set -g theme_title_display_user yes
# set -g theme_title_use_abbreviated_path no
function __bobthefish_title_user -S -d 'Display actual user if different from $default_user' function __bobthefish_title_user -S -d 'Display actual user if different from $default_user'
if [ "$theme_title_display_user" = 'yes' ] if [ "$theme_title_display_user" = 'yes' ]
if [ "$USER" != "$default_user" -o -n "$SSH_CLIENT" ] if [ "$USER" != "$default_user" -o -n "$SSH_CLIENT" ]
set -l IFS . set -l IFS .
hostname | read -l hostname __ uname -n | read -l host __
echo -ns (whoami) '@' $hostname ' ' echo -ns (whoami) '@' $host ' '
end end
end end
end end
@ -18,7 +14,7 @@ function fish_title
__bobthefish_title_user __bobthefish_title_user
if [ "$theme_title_display_process" = 'yes' ] if [ "$theme_title_display_process" = 'yes' ]
echo $_ status current-command
[ "$theme_title_display_path" != 'no' ] [ "$theme_title_display_path" != 'no' ]
and echo ' ' and echo ' '
Loading…
Cancel
Save