# Solomon Laings config.fish set fish_greeting set TERM "xterm-256color" set -gx EDITOR (type -p nano) set -gx VISUAL (type -p code) # my bashrc stuff alias ..='cd ..' alias lsa='ls -lah --color=auto' alias ll='ls -alF --color=auto' alias la='ls -A --color=auto' alias l='ls -CF --color=auto' alias ls='ls --color=auto' alias dir='dir --color=auto' alias vdir='vdir --color=auto' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME' alias logout='/usr/bin/kill -9 -1' alias ss='cd /home/solomon/.scripts/' alias sound-settings='pavucontrol' alias tasty='nohup /opt/tastyworks/bin/tastyworks &' ## fish misc functions start ## function ip-addr curl api.ipify.org end function move-last-download mv ~/Downloads/(ls -t -A ~/Downloads/ | head -1) . end function search open https://duckduckgo.com/"$argv" end function batt acpi | egrep 'Bat(.)+remaining' end function sms kdeconnect-sms &disown end ## fish misc functions end ## # fish does not support !! and !$ so functions are needed ## !! and !$ operators start ## function __history_previous_command switch (commandline -t) case "!" commandline -t $history[1]; commandline -f repaint case "*" commandline -i ! end end function __history_previous_command_arguments switch (commandline -t) case "!" commandline -t "" commandline -f history-token-search-backward case "*" commandline -i '$' end end bind ! __history_previous_command bind '$' __history_previous_command_arguments ## !! and !$ operators end ## ## fish prompt start ## # name: sashimi function fish_prompt set -l last_status $status set -l cyan (set_color -o cyan) set -l yellow (set_color -o yellow) set -g red (set_color -o red) set -g blue (set_color -o blue) set -l green (set_color -o green) set -g normal (set_color normal) set -l ahead (_git_ahead) set -g whitespace ' ' if test $last_status = 0 set initial_indicator "$green@" set status_indicator "$green-:" else set initial_indicator "$red $last_status x" set status_indicator "$red:-" end set -l cwd $green(cat /etc/hostname) " -> " $cyan(pwd) # set -l cwd $cyan(pwd) if [ (_git_branch_name) ] if test (_git_branch_name) = 'master' set -l git_branch (_git_branch_name) set git_info "$normal git:($red$git_branch$normal)" else set -l git_branch (_git_branch_name) set git_info "$normal git:($blue$git_branch$normal)" end if [ (_is_git_dirty) ] set -l dirty "$yellow ✗" set git_info "$git_info$dirty" end end # Notify if a command took more than 5 minutes if [ "$CMD_DURATION" -gt 300000 ] echo The last command took (math "$CMD_DURATION/1000") seconds. end echo -n -s $initial_indicator $whitespace $cwd $git_info $whitespace $ahead $status_indicator $whitespace end function _git_ahead set -l commits (command git rev-list --left-right '@{upstream}...HEAD' 2>/dev/null) if [ $status != 0 ] return end set -l behind (count (for arg in $commits; echo $arg; end | grep '^<')) set -l ahead (count (for arg in $commits; echo $arg; end | grep -v '^<')) switch "$ahead $behind" case '' # no upstream case '0 0' # equal to upstream return case '* 0' # ahead of upstream echo "$blue↑$normal_c$ahead$whitespace" case '0 *' # behind upstream echo "$red↓$normal_c$behind$whitespace" case '*' # diverged from upstream echo "$blue↑$normal$ahead $red↓$normal_c$behind$whitespace" end end function _git_branch_name echo (command git symbolic-ref HEAD 2>/dev/null | sed -e 's|^refs/heads/||') end function _is_git_dirty echo (command git status -s --ignore-submodules=dirty 2>/dev/null) end ## fish prompt end ##