67 lines
1.5 KiB
Text
67 lines
1.5 KiB
Text
|
#!/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
|