-
-
Save msanjeevkumar/edbfebbae976ab7b2cb2e4f22cb6b374 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
set -euo pipefail | |
# Directory setup | |
APP_DIR="${HOME}/Applications" | |
ICON_DIR="${HOME}/.local/share/icons" | |
DESKTOP_DIR="${HOME}/.local/share/applications" | |
BIN_DIR="${HOME}/.local/bin" | |
# File paths | |
DOWNLOAD_URL="https://downloader.cursor.sh/linux/appImage/x64" | |
ICON_DOWNLOAD_URL="https://www.cursor.com/brand/icon.svg" | |
APPIMAGE_NAME="cursor.AppImage" | |
APPIMAGE_PATH="${APP_DIR}/${APPIMAGE_NAME}" | |
ICON_PATH="${ICON_DIR}/cursor-icon.png" | |
DESKTOP_FILE_PATH="${DESKTOP_DIR}/cursor.desktop" | |
LAUNCHER_SCRIPT="${BIN_DIR}/cursor" | |
# Utility functions | |
log() { printf '%s\n' "$*"; } | |
error() { printf 'Error: %s\n' "$*" >&2; exit 1; } | |
# Create necessary directories | |
mkdir -p "${APP_DIR}" "${ICON_DIR}" "${DESKTOP_DIR}" "${BIN_DIR}" | |
# Download the latest Cursor AppImage | |
log "Downloading the latest Cursor AppImage..." | |
curl -L "${DOWNLOAD_URL}" -o "${APPIMAGE_PATH}" || error "Failed to download Cursor AppImage" | |
chmod +x "${APPIMAGE_PATH}" | |
log "Downloaded and made executable: ${APPIMAGE_PATH}" | |
# Download the Cursor icon if it doesn't exist | |
if [ ! -f "${ICON_PATH}" ]; then | |
curl -sSo "${ICON_PATH}" "${ICON_DOWNLOAD_URL}" || error "Failed to download icon" | |
log "Downloaded logo to: ${ICON_PATH}" | |
fi | |
# Create or update the .desktop file | |
cat > "${DESKTOP_FILE_PATH}" << EOF | |
[Desktop Entry] | |
Name=Cursor | |
Exec=${LAUNCHER_SCRIPT} %F | |
Terminal=false | |
Type=Application | |
Icon=${ICON_PATH} | |
StartupWMClass=Cursor | |
X-AppImage-Version=latest | |
Comment=Cursor is an AI-first coding environment. | |
MimeType=x-scheme-handler/cursor; | |
Categories=Utility;Development | |
EOF | |
chmod +x "${DESKTOP_FILE_PATH}" | |
log "Updated .desktop file at: ${DESKTOP_FILE_PATH}" | |
# Create the launcher script | |
cat > "${LAUNCHER_SCRIPT}" << EOF | |
#!/bin/bash | |
nohup ${APPIMAGE_PATH} "\$@" > ~/.cursor_log 2>&1 & | |
EOF | |
chmod +x "${LAUNCHER_SCRIPT}" | |
log "Created launcher script: ${LAUNCHER_SCRIPT}" | |
# Update the desktop database | |
update-desktop-database "${DESKTOP_DIR}" || log "Failed to update desktop database. You may need to restart your session." | |
# Update icon cache | |
gtk-update-icon-cache -f -t ~/.local/share/icons || log "Failed to update icon cache. You may need to restart your session." | |
log "Cursor has been successfully installed and updated." | |
log "To run Cursor, you can now:" | |
log "1. Look for 'Cursor' in your application launcher" | |
log "2. Run it from the terminal with: cursor" | |
log "3. Run it directly with: ${APPIMAGE_PATH}" | |
log "You can also open files or directories with Cursor by using: cursor <file_or_directory>" | |
log "You may need to log out and log back in for all changes to take effect." | |
log "If you encounter any issues, check the ~/.cursor_log file for error messages." |
@Potato-Ninja, IDK why it seems pixelated on my Ubuntu setup, but let me, re-check
@Potato-Ninja Thank you it worked like a charm. Let me know if I want to update the Cursor AI, I have to run the script each time.
Can you make a script to completely remove the Cursor AI from my system?
You can easily update Cursor using in app button.
Everytime there is and update you will find a button in the bottom left (Update Cursor). You can just click it and get the latest update.
@Potato-Ninja Thank you.
Great script! I've also developed a version that allows users to interactively select specific tasks to run, providing more control over the installation and update process.
Here's my gist: cursor_appimage_manager.sh
Some screenshots:
Downloading the Latest Cursor App Version
Local Version Is Up-to-Date
Reinstalling or Updating to the Latest Downloaded Version
@jorcelinojunior does this script run in WSL Ubuntu 22.04? Do we need to modify it to suit WSL Ubuntu 22.04?
@Another-DevX
Lol mate. It's a SVG, it can never be pixelated.
You sent the same image.