Я создал файл рабочего стола в /usr/share/applications, но он не отображается в Dash

Я создал файл рабочего стола в /usr/share/applications, но он не отображается в Dash

Я создал файл .desktop.

[Desktop Entry]
Exec=cd /opt/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $*
Terminal=false
StartupNotify=true
Categories=GNOME;Oracle;Utility;Development;
Type=Application
Icon=/opt/sqldeveloper/icon.png
Name=Oracle SQL Developer
Comment=what to say
Version=s.0.m.t.h.i.n.g
GenericName=ORACLE SQL DEVELOPER

Он присутствует в /usr/share/applications. Он даже показывает значок, если просматривать его в Nautilus, но когда я нажимаю alt (клавишу тире или Windows) и ищу его, он не отображается.

Также я попробовал:

sudo update-desktop-database

решение1

Какая критическая проблема в вашем файле .desktop?

Я попробовал ваш файл .desktop, заменив Exec=команду на другую (простую и работающую), и файл, похоже, работает и не отклоняется Dash.

Распространенное заблуждение, что можно использовать Exec=строку файла .desktop, как если бы это было окно терминала. Это не так; расширение типа ~/или $HOMEне работает, например. Хорошей (то есть простой) практикой является размещение более сложных команд в отдельном файле скрипта, который будет выполняться из файла запуска (вашего .desktopфайла)

Выполнение сложных команд из файла .desktop

Если вы хотите сохранить свою командувнутриваш .desktopфайл, вы должны сделать его следующим образом:

Exec=sh -c "your_complicated_command_here && the_rest_of_it"
(command inside quotes)

Запуск скрипта из файла .desktop для выполнения задания

Предполагая, что ваша команда

cd /opt/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $*

работает из окна терминала, однако я бы просто создал небольшой скрипт:

#!/bin/bash
cd /opt/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $*

Сохраните его как scriptname.shи измените Exec=строку вашего файла .desktop на:

Exec=sh /path/to/scriptname.sh

После этого ваш .desktopфайл появится в Dash.

Примечание

Что есть еще проблемы с вашим файлом .desktop, как отметили @Braiam и @MrVaykadji. Несколько примеров:

  • Вам не следует использовать только выдуманные значения в Categories=строке, как вы можете прочитатьздесь
  • Поле версии не обязательно, но если вы его используете, используйте 1.0

Больше можно найтиздесь. Хорошие инструменты, которые вы можете найтиздесь(также спасибо @Braiam и @MrVaykadji).

Однако критически важным моментом, из-за которого ваш файл .desktop не отображается в Dash, является строка Exec=.

Связанный контент