Files
dotfiles/.bashrc
T

241 lines
7.2 KiB
Bash

#!/bin/bash
# Binds
bind '"\C-f": forward-search-history'
bind '"\C-k": history-search-backward'
bind '"\C-j": history-search-forward'
# bind ctrl+; to enter
bind '"\e[24;5~": accept-line'
# ctrl+y to copy current command in line
kitty_copy_line() {
echo -n "$READLINE_LINE" | wl-copy
}
bind -x '"\C-y": kitty_copy_line'
# Aliases
# aliases aliases
alias aliasm='alias |comm -13 <(grep -h ^alias ~/.bashrc ~/.bash_private | sort) -'
alias aliasd='aliasm |diff -u --color ~/.bash_aliases -'
alias aliasr='unalias -a; . ~/.bashrc'
alias aliass='aliasm > ~/.bash_aliases'
# ls aliases
alias ll='ls -lah --color=auto'
alias ls='ls --color=auto'
alias sl='ls --color=auto'
alias ks='ls --color=auto'
alias l='ls --color=auto'
alias s='ls --color=auto'
# cd aliases
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias cr='cd ..'
alias cdr='cd ..'
alias cdp='cd ~/Programming'
alias cds='cd ~/services'
alias cdd='cd ~/Downloads'
alias cdt='cd ~/tmp'
alias cdtc='cd ~/Programming/test'
alias cdn='cd ~/Documents/obsidian/Notes'
alias cda='cd /run/media/$USER/'
# rm aliases
alias rmr='rm -rf'
# grep aliases
alias gr='grep --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias agrep='ps aux | grep --color=auto'
# wm aliases
alias shy='start-hyprland'
alias hload='hyprctl reload && dunstctl reload'
alias sudo-gtk='sudo WAYLAND_DISPLAY="$WAYLAND_DISPLAY" XDG_RUNTIME_DIR="$XDG_RUNTIME_DIR"'
# edit aliases
alias cfgssh='(cd ~/.ssh && nvim .)'
alias cfghypr='(cd ~/.config/hypr && nvim .)'
alias cfgkitty='(cd ~/.config/kitty && nvim .)'
alias cfgnvim='(cd ~/.config/nvim && nvim .)'
alias cfgrofi='(cd ~/.config/rofi && nvim .)'
alias cfgwaybar='(cd ~/.config/waybar && nvim .)'
alias cfgdunst='(cd ~/.config/dunst && nvim .)'
alias cfgyazi='(cd ~/.config/yazi && nvim .)'
alias cfgfastfetch='(cd ~/.config/fastfetch && nvim .)'
alias cfgbash='(cd ~/.config/bash && nvim .)'
alias cfgtmux='(cd ~/.config/tmux && nvim .)'
alias cfgopencode='(cd ~/.config/opencode && nvim .)'
alias cfgscripts='(cd ~/config-scripts && nvim .)'
alias cfgxfce='(cd ~/.config/xfce4 && nvim .)'
alias script='(cd ~/scripts && nvim .)'
alias scripts='(cd ~/scripts && nvim .)'
alias notes='(cd ~/Documents/obsidian/Notes && nvim .)'
# tmp handling aliases
alias cleartmp='rm -rf ~/tmp && mkdir -p ~/tmp/daily'
alias tmp='(cd ~/tmp/daily && nvim $(date +"%Y-%m-%d-%H").md)'
alias tmpmd='(cd ~/tmp/daily && nvim $(date +"%Y-%m-%d-%H").md)'
alias tmpraw='(cd ~/tmp/daily && nvim $(date +"%Y-%m-%d-%H"))'
alias tmppy='(cd ~/tmp/daily && nvim $(date +"%Y-%m-%d-%H").py)'
alias tmpyml='(cd ~/tmp/daily && nvim $(date +"%Y-%m-%d-%H").yml)'
alias tmpyaml='(cd ~/tmp/daily && nvim $(date +"%Y-%m-%d-%H").yml)'
alias tmpjson='(cd ~/tmp/daily && nvim $(date +"%Y-%m-%d-%H").json)'
alias tmppy-run='(cd ~/tmp/daily && python ./$(date +"%Y-%m-%d-%H").py)'
alias tmpsh='(cd ~/tmp/daily && nvim $(date +"%Y-%m-%d-%H").sh)'
alias tmpsh-run='(cd ~/tmp/daily && chmod +x ./$(date +"%Y-%m-%d-%H").sh && ./$(date +"%Y-%m-%d-%H").sh)'
# productivity aliases
alias sudo='sudo '
alias s='sudo '
alias profile='source ~/.bash_profile'
alias host='echo $HOSTNAME'
alias pi='ping google.com'
# modes
# rewrite "modes" to scripts
alias mode-local='cat ~/.config/nvim/lua/templates/clipboard/local-clipboard.lua > ~/.config/nvim/lua/config/clipboard.lua'
alias mode-remote='cat ~/.config/nvim/lua/templates/clipboard/remote-clipboard.lua > ~/.config/nvim/lua/config/clipboard.lua'
# wifi aliases
alias wifi-reload='nmcli r wifi off && nmcli r wifi on'
alias wifi-reload-off='nmcli r wifi off'
alias wifi-reload-on='nmcli r wifi on'
# kitty aliases
alias ssh='kitty +kitten ssh'
alias sshr='command ssh'
alias edit-in-kitty='kitten edit-in-kitty'
# yay/pacman aliases
alias pzf='yay -Qq | fzf --preview '\''yay -Qil {}'\'' --layout reverse --bind '\''enter:execute(yay -Qil {} | less)'\'' --bind '\''ctrl-r:execute(yay -R {} | less)'\'''
alias paclean='sudo pacman -Rs '
alias update='yay --noconfirm'
alias yayc='yay --editmenu'
# fastfetch aliases
alias fastfetch='~/.config/fastfetch/detect_os.py'
alias ff='~/.config/fastfetch/detect_os.py'
alias ffr='command fastfetch'
# curl aliases
alias post='curl -X POST -H "Content-Type: application\json"'
alias get='curl -X GET'
# docker aliases
alias docker-enable='sudo systemctl start docker.service'
alias docker-disable='sudo systemctl stop docker.service && sudo systemctl stop docker.socket'
alias docker-status='sudo systemctl status docker.service'
alias dcd='sudo docker compose down'
alias dcu='sudo docker compose up'
alias dcp='sudo docker compose pull'
alias swagger-docs='sudo host-docs'
# git aliases
alias g='git'
alias ga='git add .'
alias gc='git commit -m '
alias gp='git push'
alias gs='git status'
alias gsh='git show'
# other utils aliases
alias x='sudo chmod +x'
alias y='yazi'
alias n='nvim .'
alias t='tmux'
alias a='abduco'
alias al='if [ -n "$A_SESSION_NAME" ]; then abduco -l | sed "s/.*$A_SESSION_NAME.*/\x1b[32m&\x1b[0m/"; else abduco -l; fi'
alias py='python'
alias pyv='python --version'
alias clipclear='cliphist wipe'
alias download='aria2c -x16 -s16'
alias scrcpy-def='scrcpy -S --no-audio -K'
alias share='python3 -m http.server'
alias globalshare='(cd ~/Share && python3 -m http.server)'
alias clearlock='faillock --user YOUR_USERNAME --reset'
alias opencode-resume='opencode-restore'
# fun aliases
alias please='sudo '
alias mm='unimatrix -f -a -s 92 -l coo -c yellow'
alias mmbee='unimatrix -f -a -s 86 -u '\''bee'\'' -c yellow'
alias mmbeesquit='unimatrix -f -s 86 -u '\''beesquit'\'' -c yellow'
alias mmsnow='unimatrix -u ❄❆❅᪥𑁍⭒*❄❆❅᪥* -c white -a'
alias mute-light-disable='sudo sh -c "echo 0 > /sys/class/leds/platform::micmute/brightness"'
alias quick-info='echo "Cores: $(lscpu | awk "/Core\(s\) per socket:/ {print \$4}") | Threads: $(nproc) | RAM: $(free -h | awk "/Mem:/ {print \$2}")"'
# Functions
scannet() {
for net in "$@"; do
sudo nmap -sn "$net/24"
done
}
setos() {
if [ -z "$1" ]; then
echo "Error: Please provide a source file path."
echo "Usage: setos <source_file>"
return 1
fi
cp "$1" "$HOME/.os-release"
}
aa() {
abduco -e ^d -a "$@"
printf "\033[?1049l"
}
look-into-kitty() {
KITTY_RAW_PID="$@"
KITTY_PID="${KITTY_RAW_PID#kitty-}"
ABDUCO_PID=$(ps -ef | grep abduco | grep -v grep | grep "$KITTY_PID" | awk '{print $2}' | head -n 1)
pstree -p "$ABDUCO_PID"
}
opencode-save() {
uuid="$1"
echo "opencode -s $uuid" >.opencode-session
echo 'Saved the command to continue opencode session to ".opencode-session"'
}
opencode-restore() {
FILE_PATH=".opencode-session"
if [ ! -f "$FILE_PATH" ]; then
echo "Error: no such file '$FILE_PATH'"
return 1
fi
uuid=$(awk '/opencode -s/ {print $3}' "$FILE_PATH")
if [ -z "$uuid" ]; then
echo "Error: no sessionn saved"
return 1
fi
echo "Resuming Opencode session with ID: $uuid"
opencode -s "$uuid"
}
# Imports
if [ -f "$HOME/.bash_tools" ]; then
. "$HOME/.bash_tools"
fi
if [ -f "$HOME/.bash_private" ]; then
. "$HOME/.bash_private"
fi
if [ -f "$HOME/.bash_aliases" ]; then
. "$HOME/.bash_aliases"
fi
if [ -f "$HOME/.bash_prompt" ]; then
. "$HOME/.bash_prompt"
fi
if [ -f "$HOME/.multiplexer" ]; then
. "$HOME/.multiplexer"
fi