Как создать ярлык для AppImage на рабочем столе?

Вопрос или проблема

Я хочу создать ярлык для Inkscape AppImage. У меня возникли некоторые проблемы, так как у меня нет всех типов MIME или ясного представления о запуске такого приложения через ярлык.

Кто-нибудь знает, как я могу достичь этого?

Вы можете сделать это вручную или следовать описанию, представленному здесь: Регистрация файла AppImage как приложения на рабочем столе в KDE.

Так как вы хотите сделать это вручную, вы можете выполнить следующие действия.

  1. Скачайте официальный Inkscape AppImage.

  2. Сделайте его исполняемым, выполните команду: chmod +x inkscape.AppImage.

  3. Переместите его в подходящее место, например, ~/.local/bin.

  4. Извлеките AppImage, выполните inkscape.AppImage --appimage-extract; будет создан каталог с названием squashfs-root в текущий рабочий каталог.

  5. Перейдите в каталог squashfs-root и скопируйте ярлык рабочего стола org.inkscape.Inkscape.desktop в ~/.local/share/applications.

  6. Отредактируйте ярлык рабочего стола, чтобы указать путь к AppImage, за которым следует %F или %U или %u, т.е. Exec=/home/username/.local/bin/inkscape.AppImage %F.

  7. Убедитесь, что у файла .desktop есть права на выполнение:

    chmod +x ~/.local/share/applications/org.inkscape.Inkscape.desktop
    
  8. Удалите каталог squashfs-root.

Примечание: Имя файла AppImage не обязательно должно содержать .AppImage; система узнает, что это такое. Если значок не отображается, возможно, в используемой вами теме значков отсутствует файл org.inkscape.Inkscape. Вы также можете отредактировать ярлык рабочего стола, чтобы использовать любой значок, предоставленный темой значков.

Сначала убедитесь, что он исполняем: chmod u+x Inkscape.AppImage.

Затем отформатируйте свой файл рабочего стола следующим образом:

[Desktop Entry]
Name=InkScape
Exec=/path/to/appimage.AppImage
Icon=Inkscape
Type=Application
Categories=GTK;GNOME;Utility;

Используя другие ответы, я создал bash-скрипт, который автоматически извлекает PNG значок из appimage и создает .desktop файл.

https://github.com/un1t/appimage-desktop-entry

Использование:

./appimage-desktop-entry.sh /path/to/Example.AppImage

Вот что сработало для меня.

  1. Скачайте Inkscape-xxx.AppImage с inkscape.org.

  2. Скопируйте его в папку /opt/inkscape/ и переименуйте в Inkscape.AppImage.

  3. Сделайте его исполняемым chmod u+x Inkscape.AppImage.

  4. Скачайте файл inkscape-logo.svg и скопируйте его в /opt/inkscape/.

  5. Создайте новый файл ~/.local/share/application/inkscape.desktop.

с следующими записями.

[Desktop Entry]
Name=Inkscape
Exec=/opt/inkscape/Inkscape.AppImage %u
Icon=/opt/inkscape/inkscape-logo.svg
Comment=Рисуйте свободно
Type=Application
Terminal=false
Encoding=UTF-8
Categories=Utility;
StartupNotify=true
StartupWMClass=org.inkscape.Inkscape

Редактирование: Выполните эту команду в терминале, чтобы отобразить приложение в списке приложений:

update-desktop-database ~/.local/share/applications

Примечание: StartupWMClass=org.inkscape.Inkscape очень важно, чтобы связать запущенный экземпляр с ярлыком .desktop. Также параметр %u в конце поля Exec необходим для отображения приложения в списке открыть с помощью.

Чтобы найти запись StartupWMClass для вашего приложения, используйте следующие команды:

  1. для Wayland используйте looking-glass.
  2. для Xorg выполните xprop | grep WM_CLASS в терминале и кликните на окно вашего приложения.

В дополнение к предыдущим отличным ответам, я нашел следующую команду полезной, чтобы пропустить шаги извлечения и удаления:

timeout 1 ./<whatever>.AppImage --appimage-mount \
   | xargs -I {} bash -c 'cp {}/*.desktop . -v'

которая монтирует AppImage (--appimage-mount) вместо извлечения; перенаправляет вывод этой команды (путь монтирования) в xargs, вызывая новую bash, чтобы мы могли использовать расширение командной оболочки после монтирования; затем в этой новой оболочке копирует все файлы рабочего стола в текущий каталог; и наконец закрывает монтирование через 1 секунду.

Аналогичным образом, вы даже можете автоматизировать всю процедуру (на свой страх и риск :))

APPIMAGE=<whatever>.AppImage
chmod +x "$APPIMAGE"
timeout 1 ./"$APPIMAGE" --appimage-mount \
   | xargs -I {} find {} -name '*.desktop' \
   | head -n 1 \
   | xargs cat \
   | sed 's:^Exec=.*:Exec=""$(readlink -f "$APPIMAGE")"":' \
   > ~/.local/share/applications/"$APPIMAGE".desktop \
   && chmod +x ~/.local/share/applications/"$APPIMAGE".desktop

при условии, что в полном пути AppImage нет знака :.

Чтобы также получить значок, я использую:

APPIMAGE=<whatever>.AppImage
timeout 1 ./"$APPIMAGE" --appimage-mount \
   | xargs -I {} find {} -name '*.desktop' \
   | head -n 1 \
   | sed 's/\.desktop$/.png/' \
   | xargs -I {} cp {} ~/.local/share/icons -v

В этом случае предполагается, что файлы рабочего стола и значков просто имеют разное расширение; так было с несколькими AppImage, которые я проверял, но я не уверен, является ли это частью спецификации.

Это ответ, который документация AppImage предоставляет:

Интеграция AppImage в рабочий стол

AppImage – это самостоятельные пакеты, и их не нужно устанавливать. Тем не менее, некоторые пользователи могут захотеть, чтобы их AppImage были доступны, как приложения, предоставляемые дистрибутивом. Это в первую очередь связано с возможностью запускать десктопные приложения из лаунчеров их рабочих окружений. Эта концепция называется интеграция рабочего стола.

appimaged

appimaged – это демон, который мониторит систему и интегрирует AppImage. Он следит за заранее определенным набором каталогов на системе пользователя в поисках AppImage и интегрирует их в систему с помощью libappimage.

Смотрите также: больше информации о appimaged можно найти в appimaged.

AppImageLauncher

AppImageLauncher – это вспомогательное приложение для дистрибутивов Linux, которое служит своего рода «точкой входа» для запуска и интеграции AppImage. Оно делает систему пользователя готовой к AppImage™.

AppImageLauncher должен быть установлен в системе, чтобы правильно интегрироваться в систему. Он использует технологии, которые независимы от функций рабочего окружения, и поэтому должен работать на большинстве дистрибутивов.

После установки AppImageLauncher вы можете просто дважды щелкнуть на AppImage в файловых менеджерах, браузерах и т.д. Вам будет предложено интегрировать AppImage или запустить его только один раз. Когда вы выбираете интеграцию вашего AppImage, файл будет перемещен в каталог ~/Applications. Это помогает уменьшить беспорядок AppImage в вашей файловой системе и предотвращает необходимость искать фактический файл AppImage, если вы хотите, например, удалить его.

Чтобы предоставить полное решение для управления AppImage в системе, AppImageLauncher дополнительно предлагает решения для обновления и удаления AppImage из системы. Эти функции можно найти в контекстных меню записей в лаунчере рабочего стола.

Смотрите также: больше информации о AppImageLauncher можно найти в AppImageLauncher.

Ответ или решение

Для создания десктопного файла для приложения Inkscape в формате AppImage, выполните следующие шаги:

Шаги по созданию десктопного файла для Inkscape AppImage:

  1. Скачайте Inkscape AppImage: Перейдите на официальный сайт Inkscape и загрузите последнюю версию AppImage.

  2. Сделайте файл исполняемым: Откройте терминал и выполните команду:

    chmod +x Inkscape.AppImage
  3. Переместите файл в подходящее место: Рекомендуется переместить его в директорию ~/.local/bin:

    mv Inkscape.AppImage ~/.local/bin/
  4. Извлеките содержимое AppImage: Для этого выполните:

    ~/.local/bin/Inkscape.AppImage --appimage-extract

    Это создаст директорию squashfs-root в текущем рабочем каталоге.

  5. Скопируйте файл десктопного запуска: Перейдите в созданную директорию:

    cd squashfs-root

    Найдите файл десктопного запуска, обычно он называется org.inkscape.Inkscape.desktop, и скопируйте его в директорию ~/.local/share/applications:

    cp org.inkscape.Inkscape.desktop ~/.local/share/applications/
  6. Отредактируйте файл десктопного запуска: Откройте файл ~/.local/share/applications/org.inkscape.Inkscape.desktop в текстовом редакторе и измените строку Exec= так, чтобы она указывала на путь к вашему AppImage, например:

    Exec=/home/username/.local/bin/Inkscape.AppImage %F

    Замените username на ваше имя пользователя.

  7. Дайте права на выполнение файлу десктопного запуска:

    chmod +x ~/.local/share/applications/org.inkscape.Inkscape.desktop
  8. Удалите директорию squashfs-root:

    cd ..
    rm -rf squashfs-root

Дополнительные рекомендации:

  • Иконка приложения: Убедитесь, что иконка приложения доступна. Если в файле .desktop иконка не отображается, измените запись Icon= на путь к иконке, если она у вас есть, или используйте стандартные иконки из системы.

  • Обновление базы данных: Чтобы обновления отобразились в меню приложений, выполните:

    update-desktop-database ~/.local/share/applications
  • Использование сторонних инструментов: Вы можете использовать такие инструменты, как AppImageLauncher или appimaged, которые автоматически интегрируют AppImage-файлы в вашу систему, упрощая процесс установки и удаления.

Пример файла .desktop:

Вот как может выглядеть ваш .desktop файл:

[Desktop Entry]
Name=Inkscape
Exec=/home/username/.local/bin/Inkscape.AppImage %u
Icon=/path/to/inkscape/icon.svg
Comment=Draw Freely
Type=Application
Terminal=false
Encoding=UTF-8
Categories=Graphics;Utility;
StartupNotify=true
StartupWMClass=org.inkscape.Inkscape

Следуя этим шагам, вы сможете успешно создать десктопный файл для Inkscape AppImage и использовать приложение, как обычно, через меню вашего рабочего стола.

Оцените материал
Добавить комментарий

Капча загружается...