Вопрос или проблема
Я скачал Cursor, AI-редактор, в формате AppImage, а затем создал файл .desktop для удобного запуска.
Однако ярлык вскоре становится непригодным, так как AppImage обновляется до новой версии и имя файла изменяется (например, номера сборки меняются в “cursor-0.42.5-build-24111460bf2loz1-x86_64.AppImage”).
Я не уверен, как это происходит (возможно, автоматические обновления?), но хочу узнать, есть ли способ использовать регулярное выражение в файле .desktop, чтобы захватить любые номера сборки.
Ответ или решение
Создание .desktop-файла для запуска приложений в Linux является распространённой практикой, обеспечивающей удобный доступ к приложениям из меню или панели задач. Однако, как вы уже заметили, использование AppImage-файлов может привести к возникновению проблем с запускаемыми ярлыками, особенно при обновлении версий приложений, когда имена файлов меняются. В данном контексте возникает необходимость в применении более гибкого подхода к созданию .desktop-файла, который бы учитывал изменения в именах файлов.
Проблема с .desktop-файлом для AppImage
Когда вы создаете .desktop-файл для AppImage, вы указываете конкретное имя файла, например:
[Desktop Entry]
Type=Application
Name=Cursor
Exec=/path/to/cursor-0.42.5-build-24111460bf2loz1-x86_64.AppImage
Icon=/path/to/icon.png
Terminal=false
Однако при обновлении приложения ваш .desktop-файл становится неработоспособным, так как имя файла меняется (например, на cursor-0.42.6-build-3521563edbf3-x86_64.AppImage
).
Решение проблемы
-
Создание скрипта для замены имени файла: Один из подходов к решению этой проблемы заключается в создании простого Bash-скрипта, который будет находит актуальное имя AppImage-файла и запускать его. Вот пример такого скрипта:
#!/bin/bash APPIMAGE_DIR="/path/to/directory/" APPIMAGE_NAME=$(ls $APPIMAGE_DIR/cursor-*-x86_64.AppImage | sort -V | tail -n 1) exec "$APPIMAGE_NAME"
Этот скрипт ищет все AppImage-файлы с желаемым префиксом в указанной директории и выбирает последний по версии.
-
Обновление .desktop-файла: Вам нужно изменить .desktop-файл, чтобы он запускал скрипт вместо конкретного файла AppImage. Исправленный .desktop-файл будет выглядеть следующим образом:
[Desktop Entry] Type=Application Name=Cursor Exec=/path/to/launch_cursor.sh Icon=/path/to/icon.png Terminal=false
Теперь при каждом запуске он будет использовать скрипт, который подбирает актуальную версию файла.
Обзор альтернативных методов
-
Использование символических ссылок: Вы можете создать символическую ссылку на последний AppImage, обновляя ссылку при каждой новой версии. Например:
ln -sf /path/to/cursor-0.42.5-build-24111460bf2loz1-x86_64.AppImage /path/to/cursor-latest.AppImage
Тогда в .desktop-файле просто укажите путь к
cursor-latest.AppImage
. -
Проверка наличия автоматических обновлений: Некоторые AppImage-пакеты поддерживают автоматические обновления. Убедитесь, что функция обновления включена, что позволит вам избежать этих проблем в будущем.
Заключение
Использование AppImage-файлов в Linux предоставляет вам свободу, но требует некоторых усилий для поддержания эффективности ваших ярлыков. Применение скриптов или символических ссылок поможет вам легко справляться с изменениями имен файлов. Выберите подходящий для вас способ, чтобы каждый раз без лишних усилий запускать необходимое приложение.