#!/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 Help $info" -filter "$action -a ") fi fi case $action in "") ;; # exit ..) $0 ;; # Go back to main menu *) $0 "$action" ;; esac