#!/bin/sh #app_path="/usr/share/applications/" app_path="$HOME/.local/share/applications/" scrape_apps() { grep '^Name=\|^Exec=' "$app_path"/*.desktop | grep ':Name=' | cut -d= -f2- } exclude() { grep -v "Qube Settings" } tidy() { sed 's/Rxvt Color Unicode Terminal/urxvt/' } untidy() { sed 's/urxvt/Rxvt Color Unicode Terminal/' } find_file() { grep "^Name=$1" "$app_path"/*.desktop | cut -d: -f1 } # Expects the contents of a desktop file execute_app() { local cmd="$(grep '^Exec=' "$1" | cut -d= -f2-)" eval " $cmd" } choice=$(scrape_apps | exclude | tidy | sort | wrap_dmenu -p "Run" $* | untidy) [ -z "$choice" ] && exit file="$(find_file "$choice")" [ -z "$file" ] && exit execute_app "$file"