From 5d2b8abdddd969977e12b356d060b2dc2d6f616b Mon Sep 17 00:00:00 2001 From: Shivesh Mandalia Date: Sun, 26 Sep 2021 18:59:31 +0100 Subject: Configure with files/folders support --- sway-launcher-desktop.sh | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) (limited to 'sway-launcher-desktop.sh') diff --git a/sway-launcher-desktop.sh b/sway-launcher-desktop.sh index 6c795be..1d06933 100755 --- a/sway-launcher-desktop.sh +++ b/sway-launcher-desktop.sh @@ -12,9 +12,12 @@ trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR IFS=$'\n\t' DEL=$'\34' -TERMINAL_COMMAND="${TERMINAL_COMMAND:="$TERM -e"}" -GLYPH_COMMAND="${GLYPH_COMMAND- }" -GLYPH_DESKTOP="${GLYPH_DESKTOP- }" +TERMINAL_COMMAND="st -e" +# TERMINAL_COMMAND="${TERMINAL_COMMAND:="$TERM -e"}" +GLYPH_COMMAND="${GLYPH_COMMAND-📟 }" +GLYPH_DESKTOP="${GLYPH_DESKTOP-🖥️ }" +GLYPH_FILES="${GLYPH_FILES-📄 }" +GLYPH_FOLDERS="${GLYPH_FOLDERS-📂 }" CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/sway-launcher-desktop" PROVIDERS_FILE="${PROVIDERS_FILE:=providers.conf}" if [[ "${PROVIDERS_FILE#/}" == "${PROVIDERS_FILE}" ]]; then @@ -26,7 +29,7 @@ fi # list_cmd,preview_cmd,launch_cmd declare -A PROVIDERS if [ -f "${PROVIDERS_FILE}" ]; then - eval "$(awk -F= ' + eval "$(gawk -F= ' BEGINFILE{ provider=""; } /^\[.*\]/{sub("^\\[", "");sub("\\]$", "");provider=$0} /^(launch|list|preview)_cmd/{st = index($0,"=");providers[provider][$1] = substr($0,st+1)} @@ -47,6 +50,7 @@ if [ -f "${PROVIDERS_FILE}" ]; then else PROVIDERS['desktop']="${0} list-entries${DEL}${0} describe-desktop \"{1}\"${DEL}${0} run-desktop '{1}' {2}" PROVIDERS['command']="${0} list-commands${DEL}${0} describe-command \"{1}\"${DEL}${TERMINAL_COMMAND} {1}" + PROVIDERS['files']="${0} list-files${DEL}${0} describe-files \"{1}\"${DEL}xdg-open {1}" if [[ ! -v HIST_FILE ]]; then HIST_FILE="${XDG_CACHE_HOME:-$HOME/.cache}/${0##*/}-history.txt" fi @@ -76,6 +80,9 @@ function describe-command() { echo -e "\033[33m${1}\033[0m" echo "${description:-No description}" } +function describe-files() { + echo -e "\033[33m${1}\033[0m" +} function provide() { # shellcheck disable=SC2086 @@ -86,7 +93,7 @@ function list-commands() { IFS=: read -ra path <<<"$PATH" for dir in "${path[@]}"; do printf '%s\n' "$dir/"* | - awk -F / -v pre="$GLYPH_COMMAND" '{print $NF "\034command\034\033[31m" pre "\033[0m" $NF;}' + gawk -F / -v pre="$GLYPH_COMMAND" '{print $NF "\034command\034\033[31m" pre "\033[0m" $NF;}' done | sort -u } function list-entries() { @@ -97,7 +104,8 @@ function list-entries() { if [[ ! -d "${DIRS[i]}" ]]; then unset -v 'DIRS[$i]' else - DIRS[$i]="${DIRS[i]}/applications/**/*.desktop" + # DIRS[$i]="${DIRS[i]}/applications/**/*.desktop" + DIRS[$i]=$(find ${DIRS[i]}/applications -type f -name "*.desktop" | tr -s '/') fi done # shellcheck disable=SC2068 @@ -105,7 +113,7 @@ function list-entries() { } function entries() { # shellcheck disable=SC2068 - awk -v pre="$GLYPH_DESKTOP" -F= ' + gawk -v pre="$GLYPH_DESKTOP" -F= ' function desktopFileID(filename){ sub("^.*applications/", "", filename); sub("/", "-", filename); @@ -155,6 +163,10 @@ function entries() { $@ &3)" echo "Generated Launch command from .desktop file: ${CMD}" >&3 @@ -172,7 +184,7 @@ function generate-command() { # 3. We see an Exec= line during search: remove field codes and set variable # 3. We see a Path= line during search: set variable # 4. Finally, build command line - awk -v pattern="${PATTERN}" -v terminal_cmd="${TERMINAL_COMMAND}" -F= ' + gawk -v pattern="${PATTERN}" -v terminal_cmd="${TERMINAL_COMMAND}" -F= ' BEGIN{a=0;exec=0;path=0} /^\[Desktop/{ if(a){ a=0 } @@ -218,7 +230,7 @@ function list-autostart() { done # shellcheck disable=SC2068 - awk -v pre="$GLYPH_DESKTOP" -F= ' + gawk -v pre="$GLYPH_DESKTOP" -F= ' function desktopFileID(filename){ sub("^.*autostart/", "", filename); sub("/", "-", filename); @@ -250,7 +262,7 @@ function list-autostart() { } case "$1" in -describe | describe-desktop | describe-command | entries | list-entries | list-commands | list-autostart | generate-command | autostart | run-desktop | provide) +describe | describe-desktop | describe-command | describe-files | entries | list-entries | list-commands | list-files | list-autostart | generate-command | autostart | run-desktop | provide) "$@" exit ;; -- cgit v1.2.3