🤖
Ubuntu 24.04にcursorをインストールしてデスクトップに登録する
検証環境
- Distribution: Kubuntu 24.04
- Desktop Environment: KDE Plasma 5.27.11
- Graphics Platform: X11
- Kernel: 6.8.0-51-generic (64-bit)
- PC: ThinkPad E14 Gen 6 AMD
- Cursor version: cursor-0.44.11x86_64.AppImage
インストール
Bash Script for Cursor App Desktop Integration on Linux Environments #844 を参考に、一部修正を加えました。
以下のスクリプトを適当な場所に保存し、実行してください。
ちなみにこの記事も以下のスクリプトでインストールしたCursorで書いています。
どんどん補完されるし書き換えも簡単で非常に便利です。
install_cursor_to_ubuntu2404.sh
#!/bin/bash
set -euo pipefail
# Step 1: Declare installation paths and variables
CURSOR_DIR="$HOME/Applications/cursor"
APPIMAGE_DIR="$CURSOR_DIR/images"
EXTRACTED_DIR="$CURSOR_DIR/squashfs-root"
BIN_PATH="$EXTRACTED_DIR/cursor"
DESKTOP_DIR="$HOME/.local/share/applications"
DESKTOP_FILE_PATH="$DESKTOP_DIR/cursor.desktop"
SCRIPT_PATH="$HOME/.local/bin/cursor"
ICON_PATH="$HOME/.local/share/icons/cursor.png"
LOG_FILE_PATH="$HOME/.local/share/cursor/cursor.log"
DOWNLOAD_URL="https://downloader.cursor.sh/linux/appImage/x64"
APPIMAGE_PREFIX="cursor-"
APPIMAGE_SUFFIX="x86_64.AppImage"
MAX_KEEP_INSTALLED_VERSIONS=3
# Step 2: Create required directories
mkdir -p "$APPIMAGE_DIR" \
"$DESKTOP_DIR" \
"$(dirname "$SCRIPT_PATH")" \
"$(dirname "$ICON_PATH")" \
"$(dirname "$LOG_FILE_PATH")"
cd "$CURSOR_DIR"
# Step 3: Download latest version if not already installed
# 3.1: Check current installation
CURRENT_APPIMAGE_PATH=$(find "$APPIMAGE_DIR" -name "$APPIMAGE_PREFIX*$APPIMAGE_SUFFIX" -printf '%f\n' \
| sort -r \
| head -n 1)
CURRENT_VERSION=$(basename "$CURRENT_APPIMAGE_PATH" | sed "s/^$APPIMAGE_PREFIX//; s/$APPIMAGE_SUFFIX$//")
# 3.2: Fetch latest version information
LATEST_APPIMAGE=$(curl --range 0-0 -si "$DOWNLOAD_URL" \
| grep -i 'Content-Disposition' \
| awk -F'filename=' '{print $2}' \
| tr -d '\r\n"')
LATEST_VERSION=$(echo "$LATEST_APPIMAGE" | sed "s/^$APPIMAGE_PREFIX//; s/$APPIMAGE_SUFFIX$//")
echo "Current: $CURRENT_VERSION"
echo "Latest : $LATEST_VERSION"
# 3.3: Download new version if not installed
if [ "$CURRENT_VERSION" != "$LATEST_VERSION" ]; then
echo "Downloading $LATEST_APPIMAGE..."
trap "rm -f ""$APPIMAGE_DIR"/"$LATEST_APPIMAGE""; echo -e '\nDownload cancelled. Cleaning up...'; exit 1" SIGINT
curl -LOJ --remove-on-error "$DOWNLOAD_URL" --output-dir "$APPIMAGE_DIR"
chmod +x "$APPIMAGE_DIR/$LATEST_APPIMAGE"
# Remove old AppImages, keeping only a constant number of versions
find "$APPIMAGE_DIR" -name "$APPIMAGE_PREFIX*$APPIMAGE_SUFFIX" \
| sort -r \
| tail -n +$((MAX_KEEP_INSTALLED_VERSIONS + 1)) \
| xargs rm -f
else
echo "Already downloaded the latest version ($LATEST_VERSION)"
fi
# Step 4: Extract application binary
rm -rf "$EXTRACTED_DIR"
"$APPIMAGE_DIR/$LATEST_APPIMAGE" --appimage-extract
chmod +x "$BIN_PATH"
# Step 5: Configure application launcher
cat <<EOF > "$SCRIPT_PATH"
#!/bin/bash
# Show version number when --version or -v flag is used
if [ "\$1" = "--version" ] || [ "\$1" = "-v" ]; then
echo "Cursor version: $LATEST_VERSION"
exit 0
fi
"$BIN_PATH" --no-sandbox "\$@" 2>&1 \
| grep -v '@todesktop/runtime: skipping autoUpdater initialization because application is not in AppImage.' \
>> "$LOG_FILE_PATH"
EOF
chmod +x "$SCRIPT_PATH"
# Step 6: Install application icon
cp "$EXTRACTED_DIR/cursor.png" "$ICON_PATH"
# Step 7: Create desktop integration
if [ ! -f "$DESKTOP_FILE_PATH" ] \
|| [ "$(grep -oP '(?<=^Exec=).*' "$DESKTOP_FILE_PATH")" != "$SCRIPT_PATH" ] \
|| [ "$(grep -oP '(?<=^Icon=).*' "$DESKTOP_FILE_PATH")" != "$ICON_PATH" ]; then
cat <<EOF > "$DESKTOP_FILE_PATH"
[Desktop Entry]
Name=Cursor
Exec=$SCRIPT_PATH
Terminal=false
Type=Application
Icon=$ICON_PATH
StartupWMClass=Cursor
Comment=AI-powered code editor
MimeType=x-scheme-handler/cursor;
Categories=Utility;Development
EOF
chmod +x "$DESKTOP_FILE_PATH"
echo "Desktop shortcut created successfully"
fi
# Step 8: Update system's desktop database
update-desktop-database "$DESKTOP_DIR"
ポイント
- 最新のCursorをチェックし、更新があれば自動でダウンロードするようにした
- AppImageを使うとmiseがエラーを吐くので、バイナリで実行するようにした
- VS Codeの
code
のように、ターミナルからcursor
と打つとCursorが起動するようにした- ※事前に
${HOME}/.local/bin
にPATHを通しておく必要があります - 本来は元々それ用のオプションがあるが、うまく動かなかったので自分で追加した
-
cursor --version
(またはcursor -v
) と打つとCursorのバージョンが表示されるようにした
- ※事前に
Discussion