From 13f2cd964103741f6290c5e004e2edd388b8415e Mon Sep 17 00:00:00 2001 From: John Schmidt Date: Tue, 26 Aug 2025 11:57:39 +0200 Subject: [PATCH] fix multiple word app names (#1087) * fix multiple word app names * fix multiple words string handling * upstream selector and tui-remove multi-select --------- Co-authored-by: David Heinemeier Hansson --- bin/omarchy-tui-remove | 29 +++++++++++++++++------------ bin/omarchy-webapp-remove | 14 ++++++++++---- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/bin/omarchy-tui-remove b/bin/omarchy-tui-remove index 05e89c13..b2bb0723 100755 --- a/bin/omarchy-tui-remove +++ b/bin/omarchy-tui-remove @@ -3,8 +3,8 @@ ICON_DIR="$HOME/.local/share/applications/icons" DESKTOP_DIR="$HOME/.local/share/applications/" -if [ "$#" -ne 1 ]; then - # Find all web apps +if [ "$#" -eq 0 ]; then + # Find all TUIs while IFS= read -r -d '' file; do if grep -q '^Exec=.*alacritty.*-e' "$file"; then TUIS+=("$(basename "${file%.desktop}")") @@ -14,23 +14,28 @@ if [ "$#" -ne 1 ]; then if ((${#TUIS[@]})); then IFS=$'\n' SORTED_TUIS=($(sort <<<"${TUIS[*]}")) unset IFS - APP_NAME=$(gum choose --no-limit --header "Select TUI to remove..." --selected-prefix="✗ " "${SORTED_TUIS[@]}") + APP_NAMES_STRING=$(gum choose --no-limit --header "Select TUI to remove..." --selected-prefix="✗ " "${SORTED_TUIS[@]}") + # Convert newline-separated string to array + APP_NAMES=() + while IFS= read -r line; do + [[ -n "$line" ]] && APP_NAMES+=("$line") + done <<< "$APP_NAMES_STRING" else echo "No TUIs to remove." exit 1 fi else - APP_NAME="$1" + # Use array to preserve spaces in app names + APP_NAMES=("$@") fi -if [[ -z "$APP_NAME" ]]; then - echo "You must provide TUI name." +if [[ ${#APP_NAMES[@]} -eq 0 ]]; then + echo "You must provide TUI names." exit 1 fi -rm "$DESKTOP_DIR/$APP_NAME.desktop" -rm "$ICON_DIR/$APP_NAME.png" - -if [ "$#" -ne 1 ]; then - echo -e "Removed $APP_NAME\n" -fi +for APP_NAME in "${APP_NAMES[@]}"; do + rm -f "$DESKTOP_DIR/$APP_NAME.desktop" + rm -f "$ICON_DIR/$APP_NAME.png" + echo "Removed $APP_NAME" +done diff --git a/bin/omarchy-webapp-remove b/bin/omarchy-webapp-remove index 34f4c99f..833e8989 100755 --- a/bin/omarchy-webapp-remove +++ b/bin/omarchy-webapp-remove @@ -14,21 +14,27 @@ if [ "$#" -eq 0 ]; then if ((${#WEB_APPS[@]})); then IFS=$'\n' SORTED_WEB_APPS=($(sort <<<"${WEB_APPS[*]}")) unset IFS - APP_NAMES=$(gum choose --no-limit --header "Select web app to remove..." --selected-prefix="✗ " "${SORTED_WEB_APPS[@]}") + APP_NAMES_STRING=$(gum choose --no-limit --header "Select web app to remove..." --selected-prefix="✗ " "${SORTED_WEB_APPS[@]}") + # Convert newline-separated string to array + APP_NAMES=() + while IFS= read -r line; do + [[ -n "$line" ]] && APP_NAMES+=("$line") + done <<< "$APP_NAMES_STRING" else echo "No web apps to remove." exit 1 fi else - APP_NAMES="$*" + # Use array to preserve spaces in app names + APP_NAMES=("$@") fi -if [[ -z "$APP_NAMES" ]]; then +if [[ ${#APP_NAMES[@]} -eq 0 ]]; then echo "You must provide web app names." exit 1 fi -for APP_NAME in $APP_NAMES; do +for APP_NAME in "${APP_NAMES[@]}"; do rm -f "$DESKTOP_DIR/$APP_NAME.desktop" rm -f "$ICON_DIR/$APP_NAME.png" echo "Removed $APP_NAME"