Desktop entry files should have the .desktop
      extension, except for files of Type
      Directory which should have the
      .directory extension. Determining file type on basis
      of extension makes determining the file type very easy and quick.
      When no file extension is present, the desktop system should
      fall back to recognition via "magic detection".
    
      For applications, the part of the name of the desktop file before the
      .desktop extension should be a valid
      D-Bus
        well-known name. This means that it is a sequence of
      non-empty elements separated by dots (U+002E FULL STOP), none of
      which starts with a digit, and each of which contains only
      characters from the set [A-Za-z0-9-_]: ASCII
      letters, digits, dash (U+002D HYPHEN-MINUS) and underscore
      (U+005F LOW LINE).
    
      The name of the desktop entry should follow the "reverse DNS"
      convention: it should start with a reversed DNS domain name
      controlled by the author of the application, in lower case. The
      domain name should be followed by the name of the application, which
      is conventionally written with words run together and initial capital
      letters (CamelCase). For example, if the owner of
      example.org writes "Foo Viewer", they might choose
      the name org.example.FooViewer, resulting in a file
      named org.example.FooViewer.desktop.
    
Well-known names containing the dash are allowed but not recommended, because the dash is not allowed in some related uses of reversed DNS names, such as D-Bus object paths and interface names, and Flatpak app IDs. If the author's domain name contains a dash, replacing it with an underscore is recommended: this cannot cause ambiguity, because underscores are not allowed in DNS domain names.
      If the author's domain name contains a label starting with a digit,
      (which is not allowed in D-Bus well-known names), prepending an
      underscore to that element of the desktop entry name is recommended.
      For example, 7-zip.org might release an application named
      org._7_zip.Archiver.
    
Each desktop entry representing an application is identified by its desktop file ID, which is based on its filename.
          To determine the ID of a desktop file, make its full path relative to
          the $XDG_DATA_DIRS component in which the desktop file is installed, remove the "applications/"
          prefix, and turn '/' into '-'.
       
          For example /usr/share/applications/foo/bar.desktop has
          the desktop file ID foo-bar.desktop.
       
If multiple files have the same desktop file ID, the first one in the $XDG_DATA_DIRS precedence order is used.
          For example, if $XDG_DATA_DIRS contains the default paths /usr/local/share:/usr/share, then
          /usr/local/share/applications/org.foo.bar.desktop and
          /usr/share/applications/org.foo.bar.desktop both have
          the same desktop file ID org.foo.bar.desktop, but only the first
          one will be used.
       
          If both foo-bar.desktop and foo/bar.desktop exist,
          it is undefined which is selected.
       
          If the desktop file is not installed in an applications subdirectory of one
          of the $XDG_DATA_DIRS components, it does not have an ID.