#!/usr/bin/env bash # set our needed variables if we don't already have them if [[ -z "$XDG_CONFIG_HOME" ]]; then export XDG_CONFIG_HOME="$HOME/.config" fi if [[ -z "$DOTFILES_PATH" ]]; then export DOTFILES_PATH="$XDG_CONFIG_HOME/dotfiles" fi # filesystem aliases alias lx='ls -lXB' # order by filetype alias lk='ls -lSr' # order by filesize reversed alias lt='ls -ltr' # order by file modified time alias lc='ls -ltcr' # order by filectime alias lu='ls -ltur' # order by file access time alias ls='ls -h --color --group-directories-first' # flat view w/ directories first alias l='ls -h --color --group-directories-first' # same as above alias ll='ls -lv --group-directories-first' # non-flat view alias lm='ll | more' alias lr='ll -R' # please don't - why is this even here...? alias la='ll -A' # show all alias tree='tree -Csuh' # navigation aliases alias c="cd \$HOME/.." alias cd..="cd .." alias cdd="cd \"\$DOTFILES_PATH\"" # go to dotfiles alias cdc="cd \"\$XDG_CONFIG_HOME\"" # go to # quick parent-directory aliases alias ..="cd .." alias ...="cd ../.." alias ....="cd ../../.." alias .....="cd ../../../.." alias ......="cd ../../../../.." alias .......="cd ../../../../../.." alias ........="cd ../../../../../../.." alias .........="cd ../../../../../../../.." # tmux aliases # TODO: see if this can be worked around? alias tmux='TERM=screen-256color-bce tmux' # syntax higlighting for vim in tmux alias tmnew="tmux new -s" alias tmls="tmux list-sessions" alias tmatt="tmux attach -t" alias tu="tmux attach -t utils || tmux new -s utils" alias tdf="tmux attach -t dotfiles || tmux new -s dotfiles -c \"\$DOTFILES_PATH\"" alias tmon="tmux attach -t monitoring || tmux new -s monitoring" # git aliases # TODO: make these git aliases in the gitconfig? alias gs="git status" alias gl="git log" alias gpl="git pull" alias gp="git push" alias grbpf="git push --force-with-lease" alias gac="git add -A && git commit" alias gsur="git submodule update --remote" grb() { MAIN_BRANCH="master" CUR_BRANCH="$(git branch | grep '\*' | cut -d ' ' -f2-)" if [[ ! -z ${2+x} ]]; then MAIN_BRANCH="$2" CUR_BRANCH="$1" elif [[ ! -z ${1+x} ]]; then MAIN_BRANCH="$1" fi git rebase -i "$(git merge-base "$CUR_BRANCH" "$MAIN_BRANCH")" } # browser aliases alias qute="qutebrowser --backend webengine" # networking aliases alias p="ping 8.8.8.8" # DEPRECATED: we use network manager (nmtui/nmcli) now # start netctl using any available profile on the first wireless network # interface # TODO: flesh this out into a function that lets the user know what's going on. #alias wifi="sudo systemctl start netctl-auto@$(for wli in /sys/class/net/wl*; do echo $(basename $wli); break; done)" # misc aliases alias setbg="feh --bg-fill" alias C="clear && clear" alias keyrepeat="xset r rate 250 80" alias r="ranger" alias sctl="sudo systemctl" alias pt="htop -t" # experimental htop tree-view-by-default alias resrc="source \$HOME/.bashrc" # games aliases # this sometimes fixes steam dynamic library issues? # alias steam="LD_PRELOAD='/usr/$LIB/libstdc++.so.6 /usr/$LIB/libgcc_s.so.1 /usr/$LIB/libxcb.so.1 /usr/$LIB/libgpg-error.so' steam" # text editor aliases # man pages with vim vman() { # our vim config is setup to not auto-load sessions if we set the # `asmanviewer` variable, so launch vim that way when using vim as our man # page viewer if command -v nvim >/dev/null 2>&1; then nvim --cmd "let asmanviewer=1" -c "SuperMan $*" else vim --cmd "let asmanviewer=1" -c "SuperMan $*" fi # proper error handling if [ "$?" != "0" ]; then echo "No manual entry for $*" fi } # override the man commands alias _man="\\man" alias man="vman" # set our EDITOR to neovim if we've got it export EDITOR="vim" if command -v nvim >/dev/null 2>&1; then alias vim="nvim" alias ovim="\\vim" export EDITOR="nvim" fi export BROWSER="google-chrome-unstable" # arch aliases # TODO: load os-specific aliases based on running OS alias archupdate="pacaur -Syyu --noconfirm --noedit"