#!/bin/bash get_file_extension() { local url="$1" # Remove query parameters and fragments local clean_url="${url%%\?*}" clean_url="${clean_url%%\#*}" # Get the filename part local filename="${clean_url##*/}" # Check if there's a dot in the filename if [[ "$filename" == *.* ]]; then echo "${filename##*.}" else echo "" fi } if [ "$#" -ne 3 ]; then echo -e "\e[32mLet's create a new web app you can start with the app launcher.\n\e[0m" APP_NAME=$(gum input --prompt "Name> " --placeholder "My favorite web app") APP_URL=$(gum input --prompt "URL> " --placeholder "https://example.com") ICON_URL=$(gum input --prompt "Icon URL> " --placeholder "See https://dashboardicons.com (must use PNG!)") else APP_NAME="$1" APP_URL="$2" ICON_URL="$3" fi if [[ -z "$APP_NAME" || -z "$APP_URL" || -z "$ICON_URL" ]]; then echo "You must set app name, app URL, and icon URL!" exit 1 fi ICON_EXT=$(get_file_extension "$ICON_URL") ICON_DIR="$HOME/.local/share/icons" DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop" ICON_PATH="$ICON_DIR/$APP_NAME.$ICON_EXT" mkdir -p "$ICON_DIR" if ! curl -sL -o "$ICON_PATH" "$ICON_URL"; then echo "Error: Failed to download icon." exit 1 fi cat >"$DESKTOP_FILE" <