#!/usr/bin/env bash

NAME=$(basename "$0")
VER="0.3"

usage() {
    cat <<- EOF

 USAGE:   $NAME [OPTIONS]

 OPTIONS:

     -h,--help          Display this message

     -v,--version       Display script version

     -w,--window        Switch between open windows

     -r,--run           Program launcher & run dialog

     -q,--qalculate     Persistant calculator dialog (requires libqalculate)

     -c,--clipboard     Select previous clipboard entries (requires greenclip)

     -b,--browser       Browser search by keyword (requires surfraw)

     -l,--logout        Session logout dialog

     Without any options -r,--run will be opened.

EOF
}

for arg in "$@"; do
    case $arg in
        -h|--help)
            usage
            exit 0
            ;;
        -v|--version)
            echo -e "$NAME -- Version $VER"
            exit 0
            ;;
        -r|--run)
            rofi -modi run,drun -show drun -line-padding 4 \
                -columns 2 -padding 50 -hide-scrollbar \
                -show-icons -drun-icon-theme "ArchLabs-Light"
            ;;
        -w|--window)
            rofi -modi window -show window -hide-scrollbar -padding 50 -line-padding 4
            ;;
        -q|--qalculate)
            ! hash qalc &>/dev/null && { echo "Requires 'libqalculate' installed"; exit 1; }

            rofi -modi "calc:qalc +u8 -nocurrencies" -padding 50 \
                -show "calc:qalc +u8 -nocurrencies" -line-padding 4 \
                -hide-scrollbar
            ;;
        -c|--clipboard)
            ! hash greenclip &>/dev/null && { echo "Requires 'greenclip' installed"; exit 1; }

            rofi -modi "clipboard:greenclip print" -padding 50 \
                -line-padding 4 -show "clipboard:greenclip print" \
                -hide-scrollbar
            ;;
        -b|--browser)
            ! hash surfraw &>/dev/null && { echo "Requires 'surfraw' installed"; exit 1; }

            surfraw -browser="$BROWSER" $(sr -elvi |
                                          awk -F'-' '{print $1}' |
                                          sed '/:/d' |
                                          awk '{$1=$1};1' |
                                          rofi -hide-scrollbar -kb-row-select 'Tab' \
                                          -kb-row-tab 'Control+space' -dmenu \
                                          -mesg 'Tab for Autocomplete' -i -p 'Web Search' \
                                          -padding 50 -line-padding 4) ;;
        -l|--logout)
            ANS="$(rofi -sep "|" -dmenu -i -p 'Wylogować?' -width 20 \
                -hide-scrollbar -line-padding 4 -padding 20 \
                -lines 4 <<< " Zablokuj| Wyloguj| Rebotuj| Wyłącz")"
            case "$ANS" in
                *Zablokuj) betterlockscreen ;;
                *Wyloguj) openbox --exit ;;
                *Rebotuj) systemctl reboot ;;
                *Wyłącz) systemctl -i poweroff
            esac ;;
        *) echo; echo "Option does not exist: $arg"; echo; exit 2
    esac
done

(( $# == 0 )) && "$0" -r

exit 0