- Вопрос или проблема
- Инструкции по созданию приложения Gnome с помощью gnome-desktop-item-edit
- Тестирование новосозданного Gnome Приложения
- Чтобы создать для всех пользователей, используйте:
- Если команда отсутствует в debian/ubuntu, попробуйте:
- Ответ или решение
- Шаги по добавлению приложения в меню GNOME
- 1. Определите местоположение для файла .desktop
- 2. Создайте файл .desktop
- 3. Заполните содержимое файла
- 4. Сделайте файл исполняемым
- 5. Установите флаг доверия (при необходимости)
- 6. Перезагрузите GNOME или обновите меню
- Альтернативные методы
- Заключение
Вопрос или проблема
У меня есть приложение, которое я запускаю только из командной строки. Как я могу добавить команду (и, желательно, красивую иконку) в меню приложений Gnome?
В GNOME и других окружениях рабочего стола, совместимых с freedesktop.org, таких как KDE и Unity, приложения добавляются в меню рабочего стола через desktop entries, определенные в текстовых файлах с расширением .desktop
(называемых desktop files). Окружения рабочего стола формируют меню для пользователя из собранной информации, извлеченной из доступных записей рабочего стола.
Файлы рабочего стола могут быть созданы в одном из двух мест:
/usr/share/applications/
для записей рабочего стола, доступных каждому пользователю в системе~/.local/share/applications/
для записей рабочего стола, доступных одному пользователю
Вам может понадобиться перезапустить GNOME, чтобы новые добавленные приложения заработали.
По соглашению, файлы рабочего стола не должны содержать пробелов или международных символов в своем названии.
Каждый файл рабочего стола разделен на группы, каждая из которых начинается с заголовка группы в квадратных скобках ([]
). Каждый раздел содержит ряд ключ, значение пар, разделенных знаком равенства (=
).
Ниже приведен образец файла рабочего стола:
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Название приложения
Comment=Описание приложения
Icon=/path/to/icon.xpm
Exec=/path/to/application/executable
Terminal=false
Categories=Tags;Describing;Application
Пояснение
[Desktop Entry]
заголовок группыDesktop Entry
идентифицирует файл как запись рабочего столаType
тип записи, допустимые значения:Application
,Link
иDirectory
Encoding
кодировка символов файла рабочего столаName
название приложения, отображаемое в меню или лаунчерахComment
описание приложения, используемое в подсказкахIcon
иконка, отображаемая для приложения в меню или лаунчерахExec
команда, используемая для запуска приложения из оболочки.Terminal
должно ли приложение запускаться в терминале, допустимые значения:true
илиfalse
Categories
список категорий меню, в которых должна отображаться запись, разделенный точкой с запятой (;
)
Аргументы командной строки в ключе Exec
могут обозначаться следующими переменными:
%f
одно имя файла.%F
несколько имен файлов.%u
один URL.%U
несколько URL.%d
один каталог. Используется вместе с%f
для нахождения файла.%D
несколько каталогов. Используется вместе с%F
для нахождения файлов.%n
одно имя файла без пути.%N
несколько имен файлов без путей.%k
URI или локальное имя файла расположения файла рабочего стола.%v
имя записи устройства.
Обратите внимание, что ~
или переменные окружения, такие как $HOME
, не развертываются внутри файлов рабочего стола, поэтому все исполняемые файлы, на которые ссылаются, должны либо находиться в $PATH
, либо указаны через абсолютный путь.
Полная спецификация записи рабочего стола доступна в репозитории спецификаций Freedesktop.org.
Скрипты запуска
Если приложение, которое нужно запустить, требует выполнения определенных шагов перед вызовом, вы можете создать оболочечный скрипт, который запускает приложение, и указать запись рабочего стола на оболочечный скрипт. Предположим, что приложение нужно запускать из определенного текущего рабочего каталога. Создайте скрипт запуска в подходящем месте (~/bin/
, например). Скрипт может выглядеть примерно так:
#!/bin/bash
pushd "/path/to/application/directory"
./application "$@"
popd
Установите разрешение на выполнение для скрипта:
$ chmod +x ~/bin/launch-application
Затем укажите ключ Exec
в записи рабочего стола на скрипт запуска:
Exec=/home/user/bin/launch-application
Очень хороший ответ от Томаса Неймана.
Gnome поставляется с графическим инструментом gnome-desktop-item-edit
, который помогает в создании файлов *.desktop.
Нам нужно использовать его из командной строки или создать файл рабочего стола для него.
Инструкции по созданию приложения Gnome с помощью gnome-desktop-item-edit
-
Откройте окно терминала и введите следующую команду:
gnome-desktop-item-edit --create-new /home/[ваше имя пользователя]/.local/share/applications
-
В открывшемся окне заполните следующие поля:
Название: Gnome Приложение
Команда: gnome-desktop-item-edit --create-new /home/[ваше имя пользователя]/.local/share/applications
Нажмите на иконку, чтобы выбрать другую иконку.
-
Нажмите OK, чтобы закрыть окно
-
Закройте окно терминала
Тестирование новосозданного Gnome Приложения
- Откройте панель запусков
- Введите Название приложения
- Вы должны увидеть
Gnome Приложение
, введенное ранее - Выберите его
- Создайте другое приложение
Чтобы создать для всех пользователей, используйте:
sudo gnome-desktop-item-edit --create-new /usr/share/applications
Если команда отсутствует в debian/ubuntu, попробуйте:
sudo apt-get install gnome-panel
Графическое решение – установить MenuLibre
Он доступен для дистрибутивов на базе Ubuntu через
apt install menulibre
или вы можете установить его из источника
Он позволяет категоризировать приложения по категориям Gnome и хорошо работает с приложениями Chrome.
Предыдущие ответы от Томаса Неймана и Дуди Боя очень хорошие и подробные. Я публикую это, потому что не нашел ответа на свой вопрос в других постах, и мне пришлось искать в вопросах на Git.
После того как я выполнил шаги, предложенные Томасом Нейманом, я смог заставить иконку моего приложения появиться в меню приложений. Проблема в том, что я использую Dash to Dock в качестве боковой панели, и я не мог прикрепить иконку в избранное, как другие иконки. После поиска я нашел, что вам нужно добавить строку StartupWMClass=ApplicationName
в файл .desktop
.
После этого опция добавления в избранное появится при правом клике на иконке в Dash to Dock.
В моем случае для AndroidStudio.
Находясь в директории ~
vi .local/share/applications/androidstudio.desktop
Затем добавьте конфигурацию
[Desktop Entry]
Version=2022.3.1 Patch 2
Name=Android Studio
Comment=Android Studio для linux
Type=Application
Icon=/home/mariot/Downloads/android-studio-2022.3.1.20-linux/android-studio/bin/studio.png
Exec=sh /home/mariot/Downloads/android-studio-2022.3.1.20-linux/android-studio/bin/studio.sh
Terminal=false
Categories=Utility;
Установите разрешения с помощью команды:
gio set .local/share/applications/androidstudio.desktop "metadata::trusted" yes
Затем, если все пути верны, вы можете протестировать с помощью:
gio launch .local/share/applications/androidstudio.desktop
Вы можете запустить приложение через лаунчер поиска.
С уважением.
Ответ или решение
Чтобы добавить приложение в меню GNOME, которое вы запускаете только из командной строки, вам нужно создать файл .desktop
. Этот файл содержит всю необходимую информацию, чтобы интегрировать приложение в интерфейс GNOME. Вот подробное руководство по созданию такого файла.
Шаги по добавлению приложения в меню GNOME
1. Определите местоположение для файла .desktop
Вы можете создать файл .desktop
в одном из двух мест:
- Для приложения, доступного всем пользователям системы:
/usr/share/applications/
- Для приложения, доступного только вашему пользователю:
~/.local/share/applications/
Рекомендуется использовать второй вариант, так как он требует меньше прав (необходимы права суперпользователя только для первой опции).
2. Создайте файл .desktop
- Откройте терминал.
- Используйте текстовый редактор для создания нового файла:
vi ~/.local/share/applications/имя_вашего_приложения.desktop
3. Заполните содержимое файла
Пример содержимого файла .desktop
для вашего приложения:
[Desktop Entry]
Version=1.0
Type=Application
Name=Имя вашего приложения
Comment=Описание вашего приложения
Icon=/путь/к/вашему/иконке.png
Exec=/путь/к/вашему/исполняемому/файлу
Terminal=false
Categories=Utility;Application;
StartupWMClass=ИмяВашегоПриложения
Объяснения ключей:
- Version: версия формата файла.
- Type: тип записи, в данном случае всегда
Application
. - Name: название вашего приложения, которое будет отображаться в меню.
- Comment: краткое описание, появляющееся при наведении курсора.
- Icon: путь к иконке приложения.
- Exec: команда для запуска приложения.
- Terminal:
false
, если приложение не требует терминала для запуска. - Categories: категории, к которым принадлежит приложение (разделяются точкой с запятой).
- StartupWMClass: поможет закрепить значок в панели, особенно если у вас установлен Dash to Dock.
4. Сделайте файл исполняемым
После того, как вы создали файл, необходимо установить для него права на выполнение. Это можно сделать с помощью следующей команды:
chmod +x ~/.local/share/applications/имя_вашего_приложения.desktop
5. Установите флаг доверия (при необходимости)
В некоторых случаях GNOME может игнорировать ваши .desktop
файлы. Чтобы это исправить, используйте следующую команду:
gio set ~/.local/share/applications/имя_вашего_приложения.desktop "metadata::trusted" yes
6. Перезагрузите GNOME или обновите меню
После всех изменений может потребоваться перезагрузить GNOME. Вы можете сделать это, выйдя из текущего сеанса и войдя снова, или просто перезагрузив компьютер.
Альтернативные методы
-
Графический интерфейс: Вы можете использовать утилиты, такие как
gnome-desktop-item-edit
, для создания.desktop
файлов через графический интерфейс. Просто выполните команду:gnome-desktop-item-edit --create-new ~/.local/share/applications
-
Менеджеры меню: Утилита
MenuLibre
предоставляет еще более удобный графический интерфейс для управления вашими приложениями в меню.
Заключение
Добавление приложений в меню GNOME через .desktop
файлы — это простой и эффективный способ сделать ваши приложения легче доступными. С помощью правильной настройки вы можете улучшить свой рабочий процесс, имея все необходимые инструменты под рукой. Якщо ваше приложение требует специфических условий запуска, не забудьте использовать скрипт для его корректного запуска.