dotfiles/home/private_dot_config/rofi/bin/executable_dqtile-cmd

67 lines
1.5 KiB
Bash

#!/usr/bin/env bash
style="$HOME/.config/qtile/rofi/styles/dqtile.rasi"
usage() {
echo "$(tput bold)dqtile-cmd$(tput sgr0)
A Rofi/dmenu interface to qtile cmd-obj. Accepts all arguments of qtile cmd-obj (see below).
"
qtile cmd-obj -h | sed "s/qtile cmd-obj/dqtile-cmd/"
echo "
If both rofi and dmenu are present rofi will be selected as default, to change this us --force-dmenu as the first argument.
"
exit
}
case $1 in
-h | --help) usage ;;
--force-dmenu)
FORCE_DMENU=1
shift
;;
esac
action=$(qtile cmd-obj $@)
# Path to menu application
if [[ -n $(command -v rofi) ]] && [[ -z "$FORCE_DMENU" ]]; then
menu="$(command -v rofi) -dmenu -columns 1 -theme $style"
global_mesg="Alt-1 Prompt for args and show function help (if -f is present)
.. Go back to menu.
C-u Clear input
Esc Exit"
action=$(echo -e "$action" | $menu -mesg "$global_mesg") # For rofi
elif [[ -n $(command -v dmenu) ]]; then
menu="cut -f 1 | sed -e 's/ *$//g' | $(command -v dmenu)"
action=$(echo -e "$action" | eval $menu) # For dmenu
else
echo >&2 "Rofi or dmenu not found"
exit
fi
action_info=$? # get the return code from rofi
action=$(echo "$action" | cut -f 1 | sed -e 's/ *$//g')
# if kb-mod-1 key was pressed in rofi
if [ "$action_info" -eq "10" ]; then
# only run when -f is present (then -i makes sense)
if [[ $action == *"-f"* ]]; then
info=$(qtile cmd-obj $action -i)
action=$($menu -mesg "$global_mesg
<b>Help</b>
$info" -filter "$action -a ")
fi
fi
case $action in
"") ;; # exit
..) $0 ;; # Go back to main menu
*) $0 "$action" ;;
esac