#!/bin/bash ################################################################ # dmenu_wrun - dmenu script that simulates 'rofi -show window' # # # # Author: q3aql # # Last update: 20-11-2022 # ################################################################ # Configuration variables load_theme_path="${HOME}/.dmenu" load_themes="${load_theme_path}/themes" load_theme_file="${load_theme_path}/load_theme" function load_theme() { if [ -f "${load_theme_file}" ] ; then source "${load_theme_file}" else mkdir -p "${load_theme_path}" mkdir -p "${load_themes}" echo "#!/bin/bash" > ${load_theme_file} echo "" >> ${load_theme_file} echo "NFCOLOR=\"#bbbbbb\"" >> ${load_theme_file} echo "NBCOLOR=\"#1f1f35\"" >> ${load_theme_file} echo "SFCOLOR=\"#eeeeee\"" >> ${load_theme_file} echo "SBCOLOR=\"#664477\"" >> ${load_theme_file} source "${load_theme_file}" fi } function generate_spaces() { num_spaces=${1} count_spaces=1 while [ ${count_spaces} -le ${num_spaces} ] ; do echo -n " " count_spaces=$(expr ${count_spaces} + 1) done } function check_wmctrl() { wmctrl -h &> /dev/null error=$? if [ ${error} -ne 0 ] ; then echo " Error: You need install 'wmctrl'" | dmenu -i -nb "${NBCOLOR}" -nf "${NFCOLOR}" -sb "${SBCOLOR}" -sf "${SFCOLOR}" -l 18 -p " window:" exit fi } function list_applications_icons() { wmctrl -l | while read current_app ; do echo " ${current_app}" done generate_spaces 75 } load_theme check_wmctrl list_output=$(list_applications_icons | dmenu -i -nb "${NBCOLOR}" -nf "${NFCOLOR}" -sb "${SBCOLOR}" -sf "${SFCOLOR}" -l 18 -p " window:") run_output=$(echo ${list_output} | cut -c 5-999) echo "# Selected: ${run_output}" run_output=$(echo "${run_output}" | cut -d " " -f 1) if [ -z "${run_output}" ] ; then echo "# Selection window canceled" else wmctrl -ia "${run_output}" &> /dev/null fi