diff --git a/user/.config/alacritty/alacritty.yml b/user/.config/alacritty/alacritty.yml index e30eafdd3..e010baa24 100644 --- a/user/.config/alacritty/alacritty.yml +++ b/user/.config/alacritty/alacritty.yml @@ -429,7 +429,7 @@ cursor: style: Underline shell: - program: /bin/bash + program: /bin/fish key_bindings: # (Windows, Linux, and BSD only) diff --git a/user/.config/doom/config.el b/user/.config/doom/config.el index 25d3c5b63..eba989b4c 100644 --- a/user/.config/doom/config.el +++ b/user/.config/doom/config.el @@ -605,7 +605,7 @@ List of keybindings (SPC h b b)") :desc "Increment register" "+" #'increment-register :desc "Point to register" "SPC" #'point-to-register)) -(setq shell-file-name "/bin/bash" +(setq shell-file-name "/bin/fish" vterm-max-scrollback 5000) (setq eshell-rc-script "~/.config/doom/eshell/profile" eshell-aliases-file "~/.config/doom/eshell/aliases" diff --git a/user/.config/doom/config.org b/user/.config/doom/config.org index b253afa19..0a489ee64 100644 --- a/user/.config/doom/config.org +++ b/user/.config/doom/config.org @@ -1069,7 +1069,7 @@ Settings for the various shells and terminal emulators within Emacs. + 'eshell-aliases-file' -- sets an aliases file for the eshell. #+BEGIN_SRC emacs-lisp -(setq shell-file-name "/bin/bash" +(setq shell-file-name "/bin/fish" vterm-max-scrollback 5000) (setq eshell-rc-script "~/.config/doom/eshell/profile" eshell-aliases-file "~/.config/doom/eshell/aliases" diff --git a/user/.config/fish/config.fish b/user/.config/fish/config.fish new file mode 100644 index 000000000..1a82b39cd --- /dev/null +++ b/user/.config/fish/config.fish @@ -0,0 +1,242 @@ +## ____ __ +## / __ \_________ _/ /_____ +## / / / / ___/ __ `/ //_/ _ \ +## / /_/ / / / /_/ / ,< / __/ Clay Gomera (Drake) +## /_____/_/ \__,_/_/|_|\___/ My custom fish config +## + +### ADDING TO THE PATH +# First line removes the path; second line sets it. Without the first line, +# your path gets massive and fish becomes very slow. +set -e fish_user_paths +set -U fish_user_paths $HOME/.bin $HOME/.local/bin $HOME/.emacs.d/bin $HOME/Applications /var/lib/flatpak/exports/bin/ $fish_user_paths + +### EXPORT ### +set fish_greeting # Supresses fish's intro message +set TERM "xterm-256color" # Sets the terminal type +set EDITOR "emacsclient -t -a ''" # $EDITOR use Emacs in terminal +set VISUAL "emacsclient -c -a emacs" # $VISUAL use Emacs in GUI mode + +### SET BAT AS MANPAGER +set -x MANPAGER "sh -c 'col -bx | bat -l man -p'" + +### SET EITHER DEFAULT EMACS MODE OR VI MODE ### +function fish_user_key_bindings + # fish_default_key_bindings + fish_vi_key_bindings +end +### END OF VI MODE ### + +### AUTOCOMPLETE AND HIGHLIGHT COLORS ### +set fish_color_normal brcyan +set fish_color_autosuggestion '#504945' +set fish_color_command brcyan +set fish_color_error '#fb4934' +set fish_color_param brcyan + + +### FUNCTIONS ### +# Functions needed for !! and !$ +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 + +# The bindings for !! and !$ +if [ "$fish_key_bindings" = "fish_vi_key_bindings" ]; + bind -Minsert ! __history_previous_command + bind -Minsert '$' __history_previous_command_arguments +else + bind ! __history_previous_command + bind '$' __history_previous_command_arguments +end + +# Function for creating a backup file +# ex: backup file.txt +# result: copies file as file.txt.bak +function backup --argument filename + cp $filename $filename.bak +end + +# Function for copying files and directories, even recursively. +# ex: copy DIRNAME LOCATIONS +# result: copies the directory and all of its contents. +function copy + set count (count $argv | tr -d \n) + if test "$count" = 2; and test -d "$argv[1]" + set from (echo $argv[1] | trim-right /) + set to (echo $argv[2]) + command cp -r $from $to + else + command cp $argv + end +end + +# Function for printing a column (splits input on whitespace) +# ex: echo 1 2 3 | coln 3 +# output: 3 +function coln + while read -l input + echo $input | awk '{print $'$argv[1]'}' + end +end + +# Function for printing a row +# ex: seq 3 | rown 3 +# output: 3 +function rown --argument index + sed -n "$index p" +end + +# Function for ignoring the first 'n' lines +# ex: seq 10 | skip 5 +# results: prints everything but the first 5 lines +function skip --argument n + tail +(math 1 + $n) +end + +# Function for taking the first 'n' lines +# ex: seq 10 | take 5 +# results: prints only the first 5 lines +function take --argument number + head -$number +end +### END OF FUNCTIONS ### + +### ALIASES ### +# navigation +alias ..='cd ..' +alias ...='cd ../..' +alias .3='cd ../../..' +alias .4='cd ../../../..' +alias .5='cd ../../../../..' + +# vim and emacs +alias vim='nvim' +alias vimdiff='nvim -d' +alias em='/usr/bin/emacs -nw' +alias emacs="emacsclient -c -a 'emacs'" + +# newsboat +alias newsboat='newsboat -u ~/.config/newsboat/urls' + +# bat as cat +alias cat='bat' + +# Changing "ls" to "exa" +alias ls='exa -al --color=always --group-directories-first' # my preferred listing +alias la='exa -a --color=always --group-directories-first' # all files and dirs +alias ll='exa -l --color=always --group-directories-first' # long format +alias lt='exa -aT --color=always --group-directories-first' # tree listing +alias l.='exa -a | egrep "^\."' + +# pacman and yay +alias pac-up='paru' # update the system +alias pac-get='paru -S' # install a program +alias pac-rmv='paru -Rcns' # remove a program +alias pac-rmv-sec='paru -R' # remove a program (secure way) +alias pac-qry='paru -Ss' # search for a program +alias pac-cln='paru -Scc && paru -Rns (pacman -Qtdq)' # clean cache & remove orphaned packages + +# Colorize grep output (good for log files) +alias grep='grep --color=auto' +alias egrep='egrep --color=auto' +alias fgrep='fgrep --color=auto' + +# file management +alias cp='cp -iv' +alias mv='mv -iv' +alias rm='rm -vI' +alias mkd='mkdir -pv' +alias mkdir='mkdir -pv' +alias fm='./.config/vifm/scripts/vifmrun' +alias vifm='./.config/vifm/scripts/vifmrun' +alias file='./.config/vifm/scripts/vifmrun' +alias flm='./.config/vifm/scripts/vifmrun' + +# audio +alias mx='pulsemixer' +alias amx='alsamixer' +alias mk='cmus' +alias ms='cmus' +alias music='cmus' + +# multimedia scripts +alias fli='flix-cli' +alias ani='ani-cli' +alias aniq='ani-cli -q' + +# adding flags +alias df='df -h' # human-readable sizes +alias free='free -m' # show sizes in MB + +# ps +alias psa="ps auxf" +alias psgrep="ps aux | grep -v grep | grep -i -e VSZ -e" +alias psmem='ps auxf | sort -nr -k 4' +alias pscpu='ps auxf | sort -nr -k 3' + +# git +alias addup='git add -u' +alias addall='git add .' +alias branch='git branch' +alias checkout='git checkout' +alias clone='git clone' +alias commit='git commit -m' +alias fetch='git fetch' +alias pull='git pull origin' +alias push='git push origin' +alias tag='git tag' +alias newtag='git tag -a' + +# power management +alias po='systemctl poweroff' +alias sp='systemctl suspend' +alias rb='systemctl reboot' + +# youtube- +alias yta-aac="yt-dlp --extract-audio --audio-format aac " +alias yta-best="yt-dlp --extract-audio --audio-format best " +alias yta-flac="yt-dlp --extract-audio --audio-format flac " +alias yta-m4a="yt-dlp --extract-audio --audio-format m4a " +alias yta-mp3="yt-dlp --extract-audio --audio-format mp3 " +alias yta-opus="yt-dlp --extract-audio --audio-format opus " +alias yta-vorbis="yt-dlp --extract-audio --audio-format vorbis " +alias yta-wav="yt-dlp --extract-audio --audio-format wav " +alias ytv-best="yt-dlp -f bestvideo+bestaudio " +alias yt='ytfzf -ftsl' +alias youtube='ytfzf -ftsl' +alias ytm='ytfzf -mtsl' +alias youtube-music='ytfzf -mtsl' + +# the terminal rickroll +alias rr='curl -s -L https://raw.githubusercontent.com/keroserene/rickrollrc/master/roll.sh | bash' + +# Mocp must be launched with bash instead of Fish! +alias mocp="bash -c mocp" + +# network and bluetooth +alias netstats='nmcli dev' +alias wfi='nmtui-connect' +alias wfi-scan='nmcli dev wifi rescan && nmcli dev wifi list' +alias wfi-edit='nmtui-edit' +alias wfi-on='nmcli radio wifi on' +alias wfi-off='nmcli radio wifi off' +alias blt='bluetoothctl' + +### SETTING THE STARSHIP PROMPT ### +starship init fish | source