#!/bin/bash set -e ICON_DIR="$HOME/.local/share/applications/icons" if (( $# < 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") if [[ ! $APP_URL =~ ^[a-zA-Z][a-zA-Z0-9+.-]*: ]]; then APP_URL="https://$APP_URL" fi # Try to fetch favicon automatically first. FAVICON_URL="https://www.google.com/s2/favicons?domain=${APP_URL}&sz=128" mkdir -p "$ICON_DIR" if curl -fsSL -o "$ICON_DIR/$APP_NAME.png" "$FAVICON_URL" && [[ -s $ICON_DIR/$APP_NAME.png ]]; then ICON_REF="$APP_NAME.png" else ICON_REF=$(gum input --prompt "Icon URL> " --placeholder "Could not fetch favicon automatically. Enter PNG icon URL (see https://dashboardicons.com)") fi CUSTOM_EXEC="" MIME_TYPES="" INTERACTIVE_MODE=true else APP_NAME="$1" APP_URL="$2" if [[ ! $APP_URL =~ ^[a-zA-Z][a-zA-Z0-9+.-]*: ]]; then APP_URL="https://$APP_URL" fi ICON_REF="$3" CUSTOM_EXEC="$4" # Optional custom exec command MIME_TYPES="$5" # Optional mime types INTERACTIVE_MODE=false fi # Ensure valid execution if [[ -z $APP_NAME || -z $APP_URL ]]; then echo "You must set app name and app URL!" exit 1 fi # Resolve icon from URL or from a local icon name. mkdir -p "$ICON_DIR" if [[ -z $ICON_REF ]]; then ICON_REF="https://www.google.com/s2/favicons?domain=${APP_URL}&sz=128" fi if [[ $ICON_REF =~ ^https?:// ]]; then ICON_PATH="$ICON_DIR/$APP_NAME.png" if ! curl -fsSL -o "$ICON_PATH" "$ICON_REF" || [[ ! -s $ICON_PATH ]]; then echo "Error: Failed to download icon." exit 1 fi else ICON_PATH="$ICON_DIR/$ICON_REF" fi # Use custom exec if provided, otherwise default behavior EXEC_COMMAND="${CUSTOM_EXEC:-nomarchy-launch-webapp $APP_URL}" # Create application .desktop file DESKTOP_FILE="$HOME/.local/share/applications/$APP_NAME.desktop" cat >"$DESKTOP_FILE" <>"$DESKTOP_FILE" fi chmod +x "$DESKTOP_FILE" if [[ $INTERACTIVE_MODE == "true" ]]; then echo -e "You can now find $APP_NAME using the app launcher (SUPER + SPACE)\n" fi