Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

AppImageで配布されてるやつをタスクバーに固定できるようにする

Ubuntu22.04LTSにCursorをいれる際、公式推奨だとAppImageで入れることになります。
が、最初は良くても毎回毎回AppImageを展開するのはどうも文化的ではないような気がします。
というわけで、こいつを通常のアプリと同様ランチャーで起動できるようにし、ついでにアイコンもちゃんと読み出すようにします。

実際のところ

単純にlnで紐付けするだけだとコマンドライン以外で呼べない上、アイコンもつかんのでアプリランチャーに認識できるように登録してみます。

#!/bin/bash

# 設定ファイルのパスを指定
APPIMAGE_PATH="$HOME/path/to/cursor-0.42.4x86_64.AppImage"
DESKTOP_FILE="$HOME/.local/share/applications/cursor.desktop"
ICON_DIR="$HOME/.local/share/icons"
ICON_FILE="$ICON_DIR/cursor.png"
BIN_LINK="/usr/local/bin/cursor"

# 必要なディレクトリの作成
mkdir -p "$ICON_DIR"
mkdir -p "$HOME/.local/share/applications"

# AppImageに実行権限を付与
chmod +x "$APPIMAGE_PATH"

# アイコンの抽出と設定
if [ ! -d "squashfs-root" ]; then
    "$APPIMAGE_PATH" --appimage-extract
fi

# アイコンのコピー
if [ -f "squashfs-root/usr/share/icons/hicolor/256x256/apps/cursor.png" ]; then
    cp "squashfs-root/usr/share/icons/hicolor/256x256/apps/cursor.png" "$ICON_FILE"
    echo "アイコンをコピーしました"
fi

# デスクトップエントリの作成
cat << EOF > "$DESKTOP_FILE"
[Desktop Entry]
Version=1.0
Type=Application
Name=Cursor Editor
Comment=Modern IDE powered by AI
Exec=$APPIMAGE_PATH
Icon=$ICON_FILE
Terminal=false
Categories=Development;IDE;TextEditor;
MimeType=text/plain;text/x-python;text/x-java;text/x-c;text/x-c++;
StartupWMClass=Cursor
EOF

# デスクトップファイルに実行権限を付与
chmod +x "$DESKTOP_FILE"

# システムワイドなコマンドとしてシンボリックリンクを作成
echo "システムワイドなコマンドを設定します。パスワードを要求される場合があります。"
sudo ln -sf "$APPIMAGE_PATH" "$BIN_LINK"
sudo chmod +x "$BIN_LINK"

# システムのキャッシュを更新
update-desktop-database "$HOME/.local/share/applications"
gtk-update-icon-cache -f -t "$ICON_DIR"

# バックアップ用のスタートアップスクリプトを作成
cat << EOF > "$HOME/.config/autostart/cursor-setup.desktop"
[Desktop Entry]
Type=Application
Name=Cursor Setup
Exec=update-desktop-database $HOME/.local/share/applications && gtk-update-icon-cache -f -t $ICON_DIR
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
EOF

echo "セットアップが完了しました。以下の点を確認してください:"
echo "1. 'cursor' コマンドがターミナルで使用可能"
echo "2. アプリケーションメニューにCursorが表示される"
echo "3. アイコンが正しく表示される"
echo ""
echo "問題が発生した場合は、以下のコマンドを実行してください:"
echo "update-desktop-database ~/.local/share/applications"
echo "gtk-update-icon-cache -f -t ~/.local/share/icons"
echo ""
echo "システムを再起動することをお勧めします。"

# cleanup
read -p "展開したsquashfs-rootディレクトリを削除しますか? (y/N): " response
if [[ "$response" =~ ^[Yy]$ ]]; then
    rm -rf squashfs-root
    echo "squashfs-rootディレクトリを削除しました"
fi

無事にいくと、起動したらアイコンがちゃんとつくようになります。