# better ls
if command -v eza >/dev/null 2>&1; then
    alias ll="eza -bghHlS"
else
    alias ll="exa -bghHlS"
fi

# bat (debian)
if command -v batcat >/dev/null 2>&1; then
    alias bat=batcat
fi

# HSTR configuration - add this to ~/.bashrc
alias hh=hstr                    # hh to be alias for hstr
export HSTR_CONFIG=hicolor       # get more colors
shopt -s histappend              # append new history items to .bash_history
export HISTCONTROL=ignorespace   # leading space hides commands from history
export HISTFILESIZE=10000        # increase history file size (default is 500)
export HISTSIZE=${HISTFILESIZE}  # increase history size (default is 500)
# ensure synchronization between bash memory and history file
export PROMPT_COMMAND=("history -a; history -n;" "${PROMPT_COMMAND[@]}")
function hstrnotiocsti {
    { READLINE_LINE="$( { </dev/tty hstr -- "${READLINE_LINE}"; } 2>&1 1>&3 3>&- )"; } 3>&1;
    READLINE_POINT=${#READLINE_LINE}
}
# if this is interactive shell, then bind hstr to Ctrl-r (for Vi mode check doc)
if [[ $- =~ .*i.* ]]; then bind -x '"\C-r": "hstrnotiocsti"'; fi
export HSTR_TIOCSTI=n

# ranger
ranger_cd() {
    temp_file=$(mktemp -t "ranger_cd.XXXXXXXXXX")
    ranger --choosedir="${temp_file}" -- "${@:-${PWD}}"
    if chosen_dir="$(cat -- "${temp_file}")" && [[ "${chosen_dir}" ]] && [[ "${chosen_dir}" != "${PWD}" ]]; then
        cd -- "${chosen_dir}" || exit 1
    fi
    rm -f -- "${temp_file}"
}
alias ranger=ranger_cd

# mc

# shellcheck source=/dev/null
[[ -f /usr/libexec/mc/mc.sh ]] && . /usr/libexec/mc/mc.sh
[[ -f /usr/lib/mc/mc.sh ]] && . /usr/lib/mc/mc.sh

# inside tmux, we don't know if Sway got restarted
if [[ -v TMUX ]]; then
    swaymsg() {
        SWAYSOCK=${XDG_RUNTIME_DIR}/sway-ipc.${UID}.$(pgrep -x sway).sock
        export SWAYSOCK
        command swaymsg "$@"
    }
fi
