153 lines
3.7 KiB
Fish
153 lines
3.7 KiB
Fish
|
|
# Solomon Laings config.fish
|
|
set fish_greeting
|
|
set TERM "xterm-256color"
|
|
set EDITOR "nano"
|
|
set VISUAL "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 x $last_status"
|
|
set status_indicator "$red>"
|
|
end
|
|
|
|
set -l cwd $green(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' ^/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 ^/dev/null | sed -e 's|^refs/heads/||')
|
|
end
|
|
|
|
function _is_git_dirty
|
|
echo (command git status -s --ignore-submodules=dirty ^/dev/null)
|
|
end
|
|
## fish prompt end ##
|
|
|