Last active
August 27, 2024 15:56
-
-
Save idoleat/a02187b961cd4b742926ede8f353f259 to your computer and use it in GitHub Desktop.
My fish shell config. `~/.config/fish/all_these_shit`
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function fish_greeting | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function fish_prompt | |
if test -n "$SSH_TTY" | |
echo -n (set_color brred)"$USER"(set_color white)'@'(set_color yellow)(prompt_hostname)' ' | |
end | |
echo -n (set_color 68cef9)(prompt_pwd)' ' | |
set_color -o | |
if fish_is_root_user | |
echo -n (set_color red)'# ' | |
end | |
echo -n (set_color red)'❯'(set_color yellow)'❯'(set_color green)'❯ ' | |
set_color normal | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function fish_right_prompt | |
set -l cmd_status $status | |
if test $cmd_status -ne 0 | |
echo -n (set_color red)"✘ $cmd_status" | |
end | |
if not command -sq git | |
set_color normal | |
return | |
end | |
# Get the git directory for later use. | |
# Return if not inside a Git repository work tree. | |
if not set -l git_dir (command git rev-parse --git-dir 2>/dev/null) | |
set_color normal | |
return | |
end | |
# Get the current action ("merge", "rebase", etc.) | |
# and if there's one get the current commit hash too. | |
set -l commit '' | |
if set -l action (fish_print_git_action "$git_dir") | |
set commit (command git rev-parse HEAD 2> /dev/null | string sub -l 7) | |
end | |
# Get either the branch name or a branch descriptor. | |
set -l branch_detached 0 | |
if not set -l branch (command git symbolic-ref --short HEAD 2>/dev/null) | |
set branch_detached 1 | |
set branch (command git describe --contains --all HEAD 2>/dev/null) | |
end | |
# Get the commit difference counts between local and remote. | |
command git rev-list --count --left-right 'HEAD...@{upstream}' 2>/dev/null \ | |
| read -d \t -l status_ahead status_behind | |
if test $status -ne 0 | |
set status_ahead 0 | |
set status_behind 0 | |
end | |
# Get the stash status. | |
# (git stash list) is very slow. => Avoid using it. | |
set -l status_stashed 0 | |
if test -f "$git_dir/refs/stash" | |
set status_stashed 1 | |
else if test -r "$git_dir/commondir" | |
read -l commondir <"$git_dir/commondir" | |
if test -f "$commondir/refs/stash" | |
set status_stashed 1 | |
end | |
end | |
# git-status' porcelain v1 format starts with 2 letters on each line: | |
# The first letter (X) denotes the index state. | |
# The second letter (Y) denotes the working directory state. | |
# | |
# The following table presents the possible combinations: | |
# * The underscore character denotes whitespace. | |
# * The cell values stand for the following file states: | |
# a: added | |
# d: deleted | |
# m: modified | |
# r: renamed | |
# u: unmerged | |
# t: untracked | |
# * Cells with more than one letter signify that both states | |
# are simultaneously the case. This is possible since the git index | |
# and working directory operate independently of each other. | |
# * Cells which are empty are unhandled by this code. | |
# * T (= type change) is undocumented. | |
# See Git v1.7.8.2 release notes for more information. | |
# | |
# \ Y→ | |
# X \ | |
# ↓ | A | C | D | M | R | T | U | X | B | ? | _ | |
# ----+----+----+----+----+----+----+----+----+----+----+---- | |
# A | u | | ad | am | r | am | u | | | | a | |
# C | | | ad | am | r | am | u | | | | a | |
# D | | | u | am | r | am | u | | | | a | |
# M | | | ad | am | r | am | u | | | | a | |
# R | r | r | rd | rm | r | rm | ur | r | r | r | r | |
# T | | | ad | am | r | am | u | | | | a | |
# U | u | u | u | um | ur | um | u | u | u | u | u | |
# X | | | | m | r | m | u | | | | | |
# B | | | | m | r | m | u | | | | | |
# ? | | | | m | r | m | u | | | t | | |
# _ | | | d | m | r | m | u | | | | | |
set -l porcelain_status (command git status --porcelain | string sub -l2) | |
set -l status_added 0 | |
if string match -qr '[ACDMT][ MT]|[ACMT]D' $porcelain_status | |
set status_added 1 | |
end | |
set -l status_deleted 0 | |
if string match -qr '[ ACMRT]D' $porcelain_status | |
set status_deleted 1 | |
end | |
set -l status_modified 0 | |
if string match -qr '[MT]$' $porcelain_status | |
set status_modified 1 | |
end | |
set -l status_renamed 0 | |
if string match -qe R $porcelain_status | |
set status_renamed 1 | |
end | |
set -l status_unmerged 0 | |
if string match -qr 'AA|DD|U' $porcelain_status | |
set status_unmerged 1 | |
end | |
set -l status_untracked 0 | |
if string match -qe '\?\?' $porcelain_status | |
set status_untracked 1 | |
end | |
set_color -o | |
if test -n "$branch" | |
if test $branch_detached -ne 0 | |
set_color brmagenta | |
else | |
set_color green | |
end | |
echo -n " $branch" | |
end | |
if test -n "$commit" | |
echo -n ' '(set_color yellow)"$commit" | |
end | |
if test -n "$action" | |
set_color normal | |
echo -n (set_color white)':'(set_color -o brred)"$action" | |
end | |
if test $status_ahead -ne 0 | |
echo -n ' '(set_color brmagenta)'⬆' | |
end | |
if test $status_behind -ne 0 | |
echo -n ' '(set_color brmagenta)'⬇' | |
end | |
if test $status_stashed -ne 0 | |
echo -n ' '(set_color cyan)'✭' | |
end | |
if test $status_added -ne 0 | |
echo -n ' '(set_color green)'✚' | |
end | |
if test $status_deleted -ne 0 | |
echo -n ' '(set_color red)'✖' | |
end | |
if test $status_modified -ne 0 | |
echo -n ' '(set_color blue)'✱' | |
end | |
if test $status_renamed -ne 0 | |
echo -n ' '(set_color magenta)'➜' | |
end | |
if test $status_unmerged -ne 0 | |
echo -n ' '(set_color yellow)'═' | |
end | |
if test $status_untracked -ne 0 | |
echo -n ' '(set_color white)'◼' | |
end | |
set_color normal | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This file contains fish universal variable definitions. | |
# You should use this with "Tango (dark)" color scheme. | |
# VERSION: 3.0 | |
SETUVAR __fish_initialized:3400 | |
SETUVAR fish_color_autosuggestion:747369 | |
SETUVAR fish_color_cancel:\x2d\x2dreverse | |
SETUVAR fish_color_command:99cc99 | |
SETUVAR fish_color_comment:ffcc66 | |
SETUVAR fish_color_cwd:green | |
SETUVAR fish_color_cwd_root:red | |
SETUVAR fish_color_end:cc99cc | |
SETUVAR fish_color_error:f2777a | |
SETUVAR fish_color_escape:66cccc | |
SETUVAR fish_color_history_current:\x2d\x2dbold | |
SETUVAR fish_color_host:normal | |
SETUVAR fish_color_host_remote:\x1d | |
SETUVAR fish_color_keyword:\x1d | |
SETUVAR fish_color_match:6699cc | |
SETUVAR fish_color_normal:normal | |
SETUVAR fish_color_operator:6699cc | |
SETUVAR fish_color_option:\x1d | |
SETUVAR fish_color_param:d3d0c8 | |
SETUVAR fish_color_quote:ffcc66 | |
SETUVAR fish_color_redirection:d3d0c8 | |
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack | |
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack | |
SETUVAR fish_color_status:red | |
SETUVAR fish_color_user:brgreen | |
SETUVAR fish_color_valid_path:\x2d\x2dunderline | |
SETUVAR fish_key_bindings:fish_default_key_bindings | |
SETUVAR fish_pager_color_background:\x1d | |
SETUVAR fish_pager_color_completion:normal | |
SETUVAR fish_pager_color_description:B3A06D | |
SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline | |
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan | |
SETUVAR fish_pager_color_secondary_background:\x1d | |
SETUVAR fish_pager_color_secondary_completion:\x1d | |
SETUVAR fish_pager_color_secondary_description:\x1d | |
SETUVAR fish_pager_color_secondary_prefix:\x1d | |
SETUVAR fish_pager_color_selected_background:\x2d\x2dbackground\x3dbrblack | |
SETUVAR fish_pager_color_selected_completion:\x1d | |
SETUVAR fish_pager_color_selected_description:\x1d | |
SETUVAR fish_pager_color_selected_prefix:\x1d |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function hx --wraps=helix --description 'alias hx=helix' | |
helix $argv; | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment