D-Bus Activation

Applications that support being launched by D-Bus must implement the following interface (given in D-Bus introspection XML format):

  <interface name='org.freedesktop.Application'>
    <method name='Activate'>
      <arg type='a{sv}' name='platform_data' direction='in'/>
    </method>
    <method name='Open'>
      <arg type='as' name='uris' direction='in'/>
      <arg type='a{sv}' name='platform_data' direction='in'/>
    </method>
    <method name='ActivateAction'>
      <arg type='s' name='action_name' direction='in'/>
      <arg type='av' name='parameter' direction='in'/>
      <arg type='a{sv}' name='platform_data' direction='in'/>
    </method>
  </interface>
    

The application must name its desktop file in accordance with the naming recommendations in the introduction section (e.g. the filename must be like org.example.FooViewer.desktop). The application must have a D-Bus service activatable at the well-known name that is equal to the desktop file name with the .desktop portion removed (for our example, org.example.FooViewer). The above interface must be implemented at an object path determined as follows: starting with the well-known D-Bus name of the application, change all dots to slashes and prefix a slash. If a dash ('-') is found, convert it to an underscore ('_'). For our example, this is /org/example/FooViewer.

The Activate method is called when the application is started without files to open.

The Open method is called when the application is started with files. The array of strings is an array of URIs, in UTF-8.

The ActivateAction method is called when Desktop Actions are activated. The action-name parameter is the name of the action.

All methods take a platform-data argument that is used in a similar way to how environment variables might be used. Currently, only one field is defined by the specification: desktop-startup-id. This should be a string of the same value as would be stored in the DESKTOP_STARTUP_ID environment variable, as specified by the Startup Notification Protocol Specification.