Merge branch 'master' into screen

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

@ -7,7 +7,8 @@
![bobthefish][btf-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:
@ -24,7 +25,8 @@ You will need a [Powerline-patched font][btf-patching] for this to work, unless
This theme is based loosely on [agnoster][btf-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][btf-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 (**`!`**)
@ -63,93 +66,236 @@ This theme is based loosely on [agnoster][btf-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_node 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_node`. If set to `yes`, will display current NVM or FNM 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.
#### `set -g fish_prompt_pwd_dir_length 1`
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.
#### `set -g theme_project_dir_length 1`
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] | | ![dark][btf-dark] | ![light][btf-light] |
| --------------------------- | --------------------------------------- | | --------------------------- | --------------------------------------- |
| ![solarized][btf-solarized] | ![solarized-light][btf-solarized-light] | | ![solarized][btf-solarized] | ![solarized-light][btf-solarized-light] |
| ![base16][btf-base16] | ![base16-light][btf-base16-light] | | ![base16][btf-base16] | ![base16-light][btf-base16-light] |
| ![zenburn][btf-zenburn] | ![terminal-dark][btf-terminal-dark] | | ![zenburn][btf-zenburn] | ![terminal-dark][btf-terminal-dark] |
| ![nord][btf-nord] | | | ![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,9 +310,10 @@ 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.
- `catpuccin-latte`, `catpuccin-frappe`, `catpuccin-macchiato`, `catpuccin-mocha`. Adaptations of the Cattpuccin themes.
Some of these may not look right if your terminal does not support 24 bit color, Some of these may not look right if your terminal does not support 24 bit color,
in which case you can try one of the `terminal` schemes (below). However, if in which case you can try one of the `terminal` schemes (below). However, if
@ -201,10 +348,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`:
@ -246,3 +391,4 @@ end
[btf-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"
[btf-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"
[btf-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"

@ -493,6 +493,48 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
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
@ -527,7 +569,7 @@ 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
@ -592,6 +634,348 @@ function __bobthefish_colors -S -a color_scheme -d 'Define colors used by bobthe
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
case 'catppuccin-latte'
set -l rosewater dc8a78
set -l flamingo dd7878
set -l pink ea76cb
set -l mauve 8839ef
set -l red d20f39
set -l maroon e64553
set -l peach fe640b
set -l yellow df8e1d
set -l green 40a02b
set -l teal 179299
set -l sky 04a5e5
set -l sapphire 209fb5
set -l blue 1e66f5
set -l lavender 7287fd
set -l text 4c4f69
set -l subtext1 5c5f77
set -l subtext0 6c6f85
set -l overlay2 7c7f93
set -l overlay1 8c8fa1
set -l overlay0 9ca0b0
set -l surface2 acb0be
set -l surface1 bcc0cc
set -l surface0 ccd0da
set -l base eff1f5
set -l mantle e6e9ef
set -l crust dce0e8
set -x color_initial_segment_exit $surface2 $red --bold
set -x color_initial_segment_private $surface2 $flamingo
set -x color_initial_segment_su $surface2 $green --bold
set -x color_initial_segment_jobs $surface2 $peach --bold
set -x color_path $surface0 $text
set -x color_path_basename $surface0 $text --bold
set -x color_path_nowrite $surface0 $mauve
set -x color_path_nowrite_basename $surface0 $mauve --bold
set -x color_repo $green $mantle
set -x color_repo_work_tree $surface2 $mantle --bold
set -x color_repo_dirty $red $mantle
set -x color_repo_staged $yellow $mantle
set -x color_vi_mode_default $sky $mantle --bold
set -x color_vi_mode_insert $green $mantle --bold
set -x color_vi_mode_visual $mauve $mantle --bold
set -x color_vagrant $surface2 $text --bold
set -x color_k8s $surface2 $text --bold
set -x color_aws_vault $yellow $mantle --bold
set -x color_aws_vault_expired $red $mantle --bold
set -x color_username $surface2 $yellow --bold
set -x color_hostname $surface2 $yellow
set -x color_rvm $red $mantle --bold
set -x color_node $green $mantle --bold
set -x color_virtualfish $peach $mantle --bold
set -x color_virtualgo $sky $mantle --bold
set -x color_desk $peach $mantle --bold
set -x color_nix $sky $mantle --bold
case 'catppuccin-frappe'
set -l rosewater f2d5cf
set -l flamingo eebebe
set -l pink f4b8e4
set -l mauve ca9ee6
set -l red e78284
set -l maroon ea999c
set -l peach ef9f76
set -l yellow e5c890
set -l green a6d189
set -l teal 81c8be
set -l sky 99d1db
set -l sapphire 85c1dc
set -l blue 8caaee
set -l lavender babbf1
set -l text c6d0f5
set -l subtext1 b5bfe2
set -l subtext0 a5adce
set -l overlay2 949cbb
set -l overlay1 838ba7
set -l overlay0 737994
set -l surface2 626880
set -l surface1 51576d
set -l surface0 414559
set -l base 303446
set -l mantle 292c3c
set -l crust 232634
set -x color_initial_segment_exit $surface2 $red --bold
set -x color_initial_segment_private $surface2 $flamingo
set -x color_initial_segment_su $surface2 $green --bold
set -x color_initial_segment_jobs $surface2 $peach --bold
set -x color_path $surface0 $text
set -x color_path_basename $surface0 $text --bold
set -x color_path_nowrite $surface0 $mauve
set -x color_path_nowrite_basename $surface0 $mauve --bold
set -x color_repo $green $mantle
set -x color_repo_work_tree $surface2 $mantle --bold
set -x color_repo_dirty $red $mantle
set -x color_repo_staged $yellow $mantle
set -x color_vi_mode_default $sky $mantle --bold
set -x color_vi_mode_insert $green $mantle --bold
set -x color_vi_mode_visual $mauve $mantle --bold
set -x color_vagrant $surface2 $text --bold
set -x color_k8s $surface2 $text --bold
set -x color_aws_vault $yellow $mantle --bold
set -x color_aws_vault_expired $red $mantle --bold
set -x color_username $surface2 $yellow --bold
set -x color_hostname $surface2 $yellow
set -x color_rvm $red $mantle --bold
set -x color_node $green $mantle --bold
set -x color_virtualfish $peach $mantle --bold
set -x color_virtualgo $sky $mantle --bold
set -x color_desk $peach $mantle --bold
set -x color_nix $sky $mantle --bold
case 'catppuccin-macchiato'
set -l rosewater f4dbd6
set -l flamingo f0c6c6
set -l pink f5bde6
set -l mauve c6a0f6
set -l red ed8796
set -l maroon ee99a0
set -l peach f5a97f
set -l yellow eed49f
set -l green a6da95
set -l teal 8bd5ca
set -l sky 91d7e3
set -l sapphire 7dc4e4
set -l blue 8aadf4
set -l lavender b7bdf8
set -l text cad3f5
set -l subtext1 b8c0e0
set -l subtext0 a5adcb
set -l overlay2 939ab7
set -l overlay1 8087a2
set -l overlay0 6e738d
set -l surface2 5b6078
set -l surface1 494d64
set -l surface0 363a4f
set -l base 24273a
set -l mantle 1e2030
set -l crust 181926
set -x color_initial_segment_exit $surface2 $red --bold
set -x color_initial_segment_private $surface2 $flamingo
set -x color_initial_segment_su $surface2 $green --bold
set -x color_initial_segment_jobs $surface2 $peach --bold
set -x color_path $surface0 $text
set -x color_path_basename $surface0 $text --bold
set -x color_path_nowrite $surface0 $mauve
set -x color_path_nowrite_basename $surface0 $mauve --bold
set -x color_repo $green $mantle
set -x color_repo_work_tree $surface2 $mantle --bold
set -x color_repo_dirty $red $mantle
set -x color_repo_staged $yellow $mantle
set -x color_vi_mode_default $sky $mantle --bold
set -x color_vi_mode_insert $green $mantle --bold
set -x color_vi_mode_visual $mauve $mantle --bold
set -x color_vagrant $surface2 $text --bold
set -x color_k8s $surface2 $text --bold
set -x color_aws_vault $yellow $mantle --bold
set -x color_aws_vault_expired $red $mantle --bold
set -x color_username $surface2 $yellow --bold
set -x color_hostname $surface2 $yellow
set -x color_rvm $red $mantle --bold
set -x color_node $green $mantle --bold
set -x color_virtualfish $peach $mantle --bold
set -x color_virtualgo $sky $mantle --bold
set -x color_desk $peach $mantle --bold
set -x color_nix $sky $mantle --bold
case 'catppuccin-mocha'
set -l rosewater f5e0dc
set -l flamingo f2cdcd
set -l pink f5c2e7
set -l mauve cba6f7
set -l red f38ba8
set -l maroon eba0ac
set -l peach fab387
set -l yellow f9e2af
set -l green a6e3a1
set -l teal 94e2d5
set -l sky 89dceb
set -l sapphire 74c7ec
set -l blue 89b4fa
set -l lavender b4befe
set -l text cdd6f4
set -l subtext1 bac2de
set -l subtext0 a6adc8
set -l overlay2 9399b2
set -l overlay1 7f849c
set -l overlay0 6c7086
set -l surface2 585b70
set -l surface1 45475a
set -l surface0 313244
set -l base 1e1e2e
set -l mantle 181825
set -l crust 11111b
set -x color_initial_segment_exit $surface2 $red --bold
set -x color_initial_segment_private $surface2 $flamingo
set -x color_initial_segment_su $surface2 $green --bold
set -x color_initial_segment_jobs $surface2 $peach --bold
set -x color_path $surface0 $text
set -x color_path_basename $surface0 $text --bold
set -x color_path_nowrite $surface0 $mauve
set -x color_path_nowrite_basename $surface0 $mauve --bold
set -x color_repo $green $mantle
set -x color_repo_work_tree $surface2 $mantle --bold
set -x color_repo_dirty $red $mantle
set -x color_repo_staged $yellow $mantle
set -x color_vi_mode_default $sky $mantle --bold
set -x color_vi_mode_insert $green $mantle --bold
set -x color_vi_mode_visual $mauve $mantle --bold
set -x color_vagrant $surface2 $text --bold
set -x color_k8s $surface2 $text --bold
set -x color_aws_vault $yellow $mantle --bold
set -x color_aws_vault_expired $red $mantle --bold
set -x color_username $surface2 $yellow --bold
set -x color_hostname $surface2 $yellow
set -x color_rvm $red $mantle --bold
set -x color_node $green $mantle --bold
set -x color_virtualfish $peach $mantle --bold
set -x color_virtualgo $sky $mantle --bold
set -x color_desk $peach $mantle --bold
set -x color_nix $sky $mantle --bold
case 'jellybeans' # https://github.com/nanotech/jellybeans.vim
set -l bg 151515
set -l darker_grey 1c1c1c
set -l dark_grey 262626
set -l grey 888888
set -l blue_grey a0a8b0
set -l light_grey d8dee9
set -l white ffffff
set -l dark_red 902020
set -l red cf6a4c
set -l red_orange ffb964
set -l bright_orange fad07a
set -l pale_gold dad085
set -l pink f0a0c0
set -l lilac c6b6ee
set -l dark_blue 2b5b77
set -l deep_blue 0d61ac
set -l blue 8197bf
set -l bright_blue 7697d6
set -l cyan 8fbfdc
set -l blue_green 668799
set -l green 799d6a
set -l bright_green 70b950
set -l brighter_green 65c254
set -l light_green 99ad6a
set -l dark_green 556633
set -x color_initial_segment_exit $dark_red $white --bold
set -x color_initial_segment_private $light_grey $dark_grey --bold
set -x color_initial_segment_su $red_orange $darker_grey --bold
set -x color_initial_segment_jobs $lilac $darker_grey --bold
set -x color_path $dark_grey $light_grey
set -x color_path_basename $dark_grey $light_grey --bold
set -x color_path_nowrite $dark_grey $red_orange
set -x color_path_nowrite_basename $dark_grey $red_orange --bold
set -x color_repo $light_green $darker_grey
set -x color_repo_work_tree $dark_grey $light_grey --bold
set -x color_repo_dirty $red $darker_grey
set -x color_repo_staged $pale_gold $darker_grey
set -x color_vi_mode_default $bright_blue $darker_grey --bold
set -x color_vi_mode_insert $lilac $darker_grey --bold
set -x color_vi_mode_visual $cyan $darker_grey --bold
set -x color_username $dark_grey $blue_grey --bold
set -x color_hostname $dark_grey $blue_grey
set -x color_vagrant $lilac $darker_grey --bold
set -x color_k8s $pale_gold $darker_grey --bold
set -x color_aws_vault $deep_blue $pale_gold --bold
set -x color_aws_vault_expired $deep_blue $red --bold
set -x color_rvm $pink $darker_grey --bold
set -x color_nvm $bright_green $darker_grey --bold
set -x color_virtualfish $cyan $darker_grey --bold
set -x color_virtualgo $light_green $darker_grey --bold
set -x color_desk $light_grey $darker_grey --bold
set -x color_nix $bright_blue $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
# ------ ------ ------ # ------ ------ ------

@ -3,8 +3,11 @@ 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 \
catppuccin-latte catppuccin-frappe \
catppuccin-macchiato catppuccin-mocha \
jellybeans \
terminal terminal-dark-white \ terminal terminal-dark-white \
terminal-light terminal-light-black \ terminal-light terminal-light-black \
terminal2 terminal2-dark-white \ terminal2 terminal2-dark-white \
@ -133,6 +136,10 @@ function bobthefish_display_colors -a color_scheme -d 'Print example prompt colo
echo -ns $ruby_glyph rvm ' ' echo -ns $ruby_glyph rvm ' '
__bobthefish_finish_segments __bobthefish_finish_segments
__bobthefish_start_segment $color_nvm
echo -ns $ruby_glyph nvm ' '
__bobthefish_finish_segments
__bobthefish_start_segment $color_virtualfish __bobthefish_start_segment $color_virtualfish
echo -ns $virtualenv_glyph virtualfish ' ' echo -ns $virtualenv_glyph virtualfish ' '
__bobthefish_finish_segments __bobthefish_finish_segments
@ -144,6 +151,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 ') '
@ -153,5 +161,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,45 +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_screen yes
# set -g theme_display_screen_verbose no
# set -g theme_display_sudo_user yes
# set -g theme_display_vi no
# set -g theme_display_node 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
# ============================== # ==============================
@ -80,10 +43,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
@ -99,12 +65,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'
@ -160,6 +125,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/\*
@ -187,7 +156,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/
@ -359,7 +328,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
@ -383,7 +352,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
@ -639,12 +610,14 @@ 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 $context
[ "$namespace" != 'default' ]
and set segment $segment ':' $namespace and set segment $segment ':' $namespace
__bobthefish_start_segment $color_k8s __bobthefish_start_segment $color_k8s
@ -660,13 +633,13 @@ 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"
@ -692,7 +665,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
@ -832,10 +805,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
@ -848,6 +821,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*'
@ -862,14 +892,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" ]
@ -897,9 +942,42 @@ function __bobthefish_prompt_desk -S -d 'Display current desk environment'
set_color normal set_color normal
end end
function __bobthefish_prompt_find_file_up -S -d 'Find file(s), going up the parent directories'
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' function __bobthefish_prompt_node -S -d 'Display current node version'
[ "$theme_display_node" = 'yes' -o "$theme_display_nvm" = 'yes' ] set -l should_show
or return
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
set -l node_manager_dir set -l node_manager_dir
@ -954,7 +1032,7 @@ function __bobthefish_prompt_hg -S -a hg_root_dir -a real_pwd -d 'Display the ac
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 ' '
@ -1009,7 +1087,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
@ -1028,7 +1106,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 ' '
@ -1110,7 +1188,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
@ -1137,6 +1215,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
@ -1158,11 +1238,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_node __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