---
name: "desktop-file-edit"
section: "1"
platform: "linux"
package: "desktop-file-utils"
version: "0.28-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/desktop-file-edit"
---

# desktop-file-edit(1)

Installation and edition of desktop files

## NAME

desktop-file-install, desktop-file-edit - Installation and edition of desktop files

## SYNOPSIS

**desktop-file-install \[--dir=DIR\] \[-m MODE\|--mode=MODE\]** **\[--vendor=VENDOR\] \[--delete-original\]** **\[--rebuild-mime-info-cache\]** **\[EDITOPTION\]... FILE...**

**desktop-file-edit \[EDITOPTION\]... FILE**

## DESCRIPTION

The *desktop-file-install* program is a tool to install, and optionally edit, desktop files. The *desktop-file-edit* program is a tool to edit a desktop file. They are mostly useful for developers and packagers.

Various options are available to edit the desktop files. The edit options can be specified more than once and will be processed in the same order as the options passed to the program.

*desktop-file-install* and *desktop-file-edit* will always try to validate the resulting desktop file. A failure to validate might lead to the abortion of the installation of the desktop files.

The list of registered categories and desktop environments is defined in the Menu specification: *http://freedesktop.org/wiki/Specifications/menu-spec*.

## OPTIONS

The following options are supported:

- *--dir=DIR*

  Install desktop files to the *DIR* directory.

- *-m, --mode=MODE*

  Set the permissions of the destination files to *MODE*.

- *--vendor=VENDOR*

  Add a vendor prefix to the desktop files. If a file already has this prefix, nothing happens; else, the file will be named *VENDOR*-*FILE*. For example: if *VENDOR* is **freedesktop.org** and *FILE* is **specification.desktop**, the result file will be **freedesktop.org-specification.desktop**.

- *--delete-original*

  Delete the source desktop files, leaving only the target files. Effectively "renames" the desktop files.

- *--rebuild-mime-info-cache*

  Rebuild the MIME types application database after installing the desktop files. See *[update-desktop-database(1)](/update-desktop-database/1.md)* for information about this database.

## EDIT OPTIONS

The following edit options are supported:

- *--set-key=KEY*

  Set the KEY key to the value passed to the next *--set-value* option. A matching *--set-value* option is mandatory.

- *--set-value=VALUE*

  Set the key specified with the previous *--set-key* option to VALUE. A matching *--set-key* option is mandatory.

- *--set-name=NAME*

  Set the name (key **Name**) to NAME. If a name was already set, it will be overridden. Localizations of the old name will be removed.

- *--copy-name-to-generic-name*

  Copy the value of the **Name** key to the **GenericName** key. Note that a desktop file requires a **Name** key to be valid, so this option will always have an effect.

- *--set-generic-name=GENERIC-NAME*

  Set the generic name (key **GenericName**) to GENERIC-NAME. If a generic name was already set, it will be overridden. Localizations of the old generic name will be removed.

- *--copy-generic-name-to-name*

  Copy the value of the **GenericName** key to the **Name** key, if the **GenericName** key is present.

- *--set-comment=COMMENT*

  Set the comment (key **Comment**) to COMMENT. If a comment was already set, it will be overridden. Localizations of the old comment will be removed.

- *--set-icon=ICON*

  Set the icon (key **Icon**) to ICON. If an icon was already set, it will be overridden. Localizations of the old icon will be removed.

- *--add-category=CATEGORY*

  Add *CATEGORY* to the list of categories (key **Categories**). If *CATEGORY* was already present in the list, this operation is a no-op. A non-registered category should be prefixed with **X-**.

- *--remove-category=CATEGORY*

  Remove *CATEGORY* from the list of categories (key **Categories**). If *CATEGORY* was not present in the list, this operation is a no-op.

- *--add-mime-type=MIME-TYPE*

  Add *MIME-TYPE* to the list of MIME types (key **MimeType**). If *MIME-TYPE* was already present in the list, this operation is a no-op.

- *--remove-mime-type=MIME-TYPE*

  Remove *MIME-TYPE* from the list of MIME types (key **MimeType**). If *MIME-TYPE* was not present in the list, this operation is a no-op.

- *--add-only-show-in=ENVIRONMENT*

  Add *ENVIRONMENT* to the list of desktop environments where the desktop files should be displayed (key **OnlyShowIn**). If *ENVIRONMENT* was already present in the list, this operation is a no-op. A non-registered desktop environment should be prefixed with **X-**. Note that an empty **OnlyShowIn** key in a desktop file means that the desktop file will be displayed in all environments.

- *--remove-only-show-in=ENVIRONMENT*

  Remove *ENVIRONMENT* from the list of desktop environments where the desktop files should be displayed (key **OnlyShowIn**). If *ENVIRONMENT* was not present in the list, this operation is a no-op.

- *--add-not-show-in=ENVIRONMENT*

  Add *ENVIRONMENT* to the list of desktop environments where the desktop files should not be displayed (key **NotShowIn**). If *ENVIRONMENT* was already present in the list, this operation is a no-op. A non-registered desktop environment should be prefixed with **X-**. Note that an empty **NotShowIn** key in a desktop file means that the desktop file will be displayed in all environments.

- *--remove-not-show-in=ENVIRONMENT*

  Remove *ENVIRONMENT* from the list of desktop environments where the desktop files should not be displayed (key **NotShowIn**). If *ENVIRONMENT* was not present in the list, this operation is a no-op.

- *--remove-key=KEY*

  Remove the *KEY* key from the desktop files, if present.

## ENVIRONMENT

Some environment variables change the behavior of *desktop-file-install*:

**DESKTOP\_FILE\_VENDOR**

-

  This variable can be used as an alternative to the *--vendor* option. If the *--vendor* option is used, this environment variable will be ignored.

**DESKTOP\_FILE\_INSTALL\_DIR**

-

  This variable can be used as an alternative to the *--dir* option. If the *--dir* option is used, this environment variable will be ignored.

**RPM\_BUILD\_ROOT**

-

  This variable is set when building RPM packages. If the *--dir* option and the **DESKTOP\_FILE\_INSTALL\_DIR** environment variable are not used, it will automatically be prepended to the default install directory to install the desktop files appropriately when building packages.

## BUGS

If you find bugs in the *desktop-file-install* program, please report these on https://bugs.freedesktop.org.

## SEE ALSO

**[desktop-file-validate(1)](/desktop-file-validate/1.md)** **[update-desktop-database(1)](/update-desktop-database/1.md)**
