Вопрос или проблема
Я хочу создать ярлык для Inkscape AppImage. У меня возникли некоторые проблемы, так как у меня нет всех типов MIME или ясного представления о запуске такого приложения через ярлык.
Кто-нибудь знает, как я могу достичь этого?
Вы можете сделать это вручную или следовать описанию, представленному здесь: Регистрация файла AppImage как приложения на рабочем столе в KDE.
Так как вы хотите сделать это вручную, вы можете выполнить следующие действия.
-
Скачайте официальный Inkscape AppImage.
-
Сделайте его исполняемым, выполните команду:
chmod +x inkscape.AppImage
. -
Переместите его в подходящее место, например,
~/.local/bin
. -
Извлеките AppImage, выполните
inkscape.AppImage --appimage-extract
; будет создан каталог с названиемsquashfs-root
в текущий рабочий каталог. -
Перейдите в каталог
squashfs-root
и скопируйте ярлык рабочего столаorg.inkscape.Inkscape.desktop
в~/.local/share/applications
. -
Отредактируйте ярлык рабочего стола, чтобы указать путь к AppImage, за которым следует
%F
или%U
или%u
, т.е.Exec=/home/username/.local/bin/inkscape.AppImage %F
. -
Убедитесь, что у файла
.desktop
есть права на выполнение:chmod +x ~/.local/share/applications/org.inkscape.Inkscape.desktop
-
Удалите каталог
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
Вот что сработало для меня.
-
Скачайте
Inkscape-xxx.AppImage
с inkscape.org. -
Скопируйте его в папку
/opt/inkscape/
и переименуйте вInkscape.AppImage
. -
Сделайте его исполняемым
chmod u+x Inkscape.AppImage
. -
Скачайте файл inkscape-logo.svg и скопируйте его в
/opt/inkscape/
. -
Создайте новый файл
~/.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 для вашего приложения, используйте следующие команды:
- для Wayland используйте looking-glass.
- для 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:
-
Скачайте Inkscape AppImage: Перейдите на официальный сайт Inkscape и загрузите последнюю версию AppImage.
-
Сделайте файл исполняемым: Откройте терминал и выполните команду:
chmod +x Inkscape.AppImage
-
Переместите файл в подходящее место: Рекомендуется переместить его в директорию
~/.local/bin
:mv Inkscape.AppImage ~/.local/bin/
-
Извлеките содержимое AppImage: Для этого выполните:
~/.local/bin/Inkscape.AppImage --appimage-extract
Это создаст директорию
squashfs-root
в текущем рабочем каталоге. -
Скопируйте файл десктопного запуска: Перейдите в созданную директорию:
cd squashfs-root
Найдите файл десктопного запуска, обычно он называется
org.inkscape.Inkscape.desktop
, и скопируйте его в директорию~/.local/share/applications
:cp org.inkscape.Inkscape.desktop ~/.local/share/applications/
-
Отредактируйте файл десктопного запуска: Откройте файл
~/.local/share/applications/org.inkscape.Inkscape.desktop
в текстовом редакторе и измените строкуExec=
так, чтобы она указывала на путь к вашему AppImage, например:Exec=/home/username/.local/bin/Inkscape.AppImage %F
Замените
username
на ваше имя пользователя. -
Дайте права на выполнение файлу десктопного запуска:
chmod +x ~/.local/share/applications/org.inkscape.Inkscape.desktop
-
Удалите директорию
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 и использовать приложение, как обычно, через меню вашего рабочего стола.