# ===
# Directory listing
# ===
alias ea='exa -lah'
alias ee='exa -lh'
alias esa='exa -a'
alias es='exa'

# ===
# Software
# ===

# ======
# Keyboard layout
# ======
alias layout='xkblayout-state print "%s(%v)" && echo -n "\n"'
# ======

# ======
# Compositing
# ======
alias picom-default='picom -bGC --backend glx --unredir-if-possible-delay 1000 --vsync'
# ======

# ======
# Octave
# ======
alias octave-gui='octave --force-gui'
# ======

# ======
# Polkit
# ======
alias xfce-polkit='/usr/lib/xfce-polkit/xfce-polkit'
# ======

# ======
# Resolve
# ======
alias resolve='/opt/resolve/bin/resolve'
# ======

# ======
# Pianoteq 6
# ======
alias pianoteq='pianoteq\ 7'
# ======

# ======
# Sabaki
# ======
alias sabaki='/opt/Sabaki/sabaki'
# ======

# ======
# ethminer preset for Binance
# ======
alias binance_miner='ethminer --farm-recheck 200 -P stratum+tcp://DustVoiceETH.Linux@ethash.poolbinance.com:1800'
# ======

# ======
# Tmate
# ======
alias tmate-obs='tmate -k tmk-ET35fx5m9cA7cxOt4jjWkSmaOy -r DustVoice'
# ======

# ======
# Screenkey
# ======
function screenkey-obs-func() {
    width=$(xrandr | awk '$0 ~ "*" {split($1,res,"x"); print res[1];}')
    height=$(xrandr | awk '$0 ~ "*" {split($1,res,"x"); print res[2];}')
    screenkey --no-systray -t 2 -p fixed -s small -g $(awk -v height=$height -v width=$width 'BEGIN {printf "%.0fx%.0f+%.0f+%.0f", (width * 0.5), (height * 0.06), (width * 0.25), (height * 0.02)}') --key-mode composed --bak-mode full --mods-mode normal -f Hack --font-color "#f8f8f2" --bg-color "#44475a" --opacity "1.0"
}

alias screenkey-obs='screenkey-obs-func'
# ======

# ======
# Firefox
# ======
alias firefox-private='firefox --private-window'
# ======

# ======
# Polybar
# ======
alias polybar-launch="$HOME/.config/polybar/launch"
# ======
# ===

# ===
# Font
# ===
function get-font-func() {
    fallback_font="Hack:size=10:antialias=true:autohint=true"
    font=""
    if [ -x $(command -v xgetres) ]; then
        font=$(xgetres font || echo $fallback_font);
    else
        font=$fallback_font;
    fi
    echo "$font"
}
alias get-font='get-font-func'
# ===

# ===
# Lockscreen
# ===
alias lock-screen='xset 600 60 && env XSECURELOCK_AUTH_BACKGROUND_COLOR=rgb:28/2a/36 XSECURELOCK_AUTH_FOREGROUND_COLOR=rgb:f8/f8/f2 XSECURELOCK_AUTH_TIMEOUT=10 XSECURELOCK_BLANK_TIMEOUT=-1 XSECURELOCK_BLANK_DPMS_STATE=on XSECURELOCK_DISCARD_FIRST_KEYPRESS=1 XSECURELOCK_PASSWORD_PROMPT=cursor XSECURELOCK_SHOW_DATETIME=1 XSECURELOCK_SHOW_HOSTNAME=1 XSECURELOCK_SHOW_USERNAME=1 xsecurelock &'
# ===

# ===
# System maintenance
# ===
function check-iommu-func() {
    for g in /sys/kernel/iommu_groups/*; do
        echo "IOMMU Group ${g##*/}:"
        for d in $g/devices/*; do
            echo -e "\t$(lspci -nns ${d##*/})"
        done;
    done;
}

alias check-iommu='check-iommu-func'

function battery-monitor-func() {
    watch -t -n 60 '( if [ $(cat /sys/class/power_supply/ACAD/online) == "1" ]; then printf "Power connected\n"; else printf "Power disconnected\n"; fi; printf "\nBattery capacity: "; cat /sys/class/power_supply/BAT1/capacity; printf "\n(Updated every 60s)"; )';
}

alias battery-monitor='battery-monitor-func'
# ===

# ===
# bspwm
# ===
function bspwm-workspaces-init-func() {
    if [[ ! -n $BSPWM_FILES ]]; then
        export BSPWM_FILES="$HOME/.local/share/bspwm"
    fi
    mkdir -p $BSPWM_FILES
}

function bspwm-save-func() {
    bspwm-workspaces-init-func
    if [[ -f $BSPWM_FILES/$1 ]]; then
        cp $BSPWM_FILES/$1 $BSPWM_FILES/$2
    fi
    bspc query -m focused -D --names | tr '\n' ' ' | sed 's/ $//g' > $BSPWM_FILES/$1
}

function bspwm-load-func() {
    bspwm-workspaces-init-func
    if [[ -f $BSPWM_FILES/$1 ]]; then
        bspwm-save-func $2 $2
        bspc monitor -d $(< $BSPWM_FILES/$1)
    fi
}

alias bspwm-save="bspwm-save-func workspaces workspaces.prev_save"
alias bspwm-load="bspwm-load-func workspaces workspaces.prev_load"
# ===
