# Desktop file

In order for your application to show up in menus and/or be automatically associated with MIME types in file browsers, you need to provide a `.desktop` file like follows:

```ini
[Desktop Entry]
Type=Application
Exec=your-app %u
TryExec=your-app
MimeType=application/x-your-mime-type;
Icon=some-icon
X-DocPath=yourapp/index.html
Terminal=false
Name=Your App
GenericName=Some Generic Name
Comment=Short Description Of Your App
Categories=Qt;KDE;
```

Take a look at the [.desktop Freedesktop Spec](http://standards.freedesktop.org/desktop-entry-spec/latest/) to find out more about the key/value pairs above.

The `Name`, `Type`, and `Exec` fields are essential. `Name` is self explanatory. `Type=Application` defines your application as a program that shows up on the menu. `Exec` is the command used to run your application.

The command passed to `TryExec` is used to test to see if the application is actually installed on the system. That is to say, if a command cannot be accessed from the `$PATH` (usually the case when the user creates their own custom `.desktop` files and uninstalls the application), the entry will not show up on the menu.

`Icon` can use the path to an icon shipped with your application or a file name available in the system. `Terminal=false` states your application doesn't need to be run in a terminal before it is executed, and it is commonly used for GUI applications.

It's important to pick a good set of `Categories` to make your application discoverable. If this is left blank, your application will be put into a category called "Lost N Found". The list of categories is separated by colons `;`.

The `MimeType` field describes the MIME types used by your application, meaning it will influence whether your app will show up as an available option to open or run a certain file. For example, a plain text editor would use `plain/text` to show up when right clicking a text file and selecting "Open With", and an email application could use `x-scheme-handler/mailto` to respond to `mailto:/` URIs. The list of MIME types is separated by colons `;`, and you can find a comprehensive list of MIME types used on Linux over the [shared-mime-info repository](https://gitlab.freedesktop.org/xdg/shared-mime-info).

### Translations

Like you can see on the example `.desktop` file, only an English version is available. To translate it to more languages, you can add a \[lang] suffix to the keys you want to translate. A comprehensive list of suffixes is available [here](https://l10n.kde.org/teams-list.php). For example:

```ini
Name=Your Application
Name[fr]=Ton application
...
GenericName=Some Generic Name
GenericName[fr]=Un nom générique
```

If you are using KDE infrastructure, you should **not** translate your `.desktop` file yourself. We have a bot named "Scripty" that extracts the text from `.desktop` files into `.po` (gettext) files, which are then sent to KDE translators. In turn, once the translators have done their work, Scripty fetches the translated text back and inserts it into the `.desktop` file.

### Install the .desktop file

In your `CMakeLists.txt`, you can add the following lines to install your `.desktop` file:

```cmake
install(FILES org.example.my-app.desktop DESTINATION ${KDE_INSTALL_APPDIR})
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.novaflowos.com/start/kde-developer-platform/readme/features/_index-4.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
