startup-notification package is a startup notification protocol for GNOME desktop.
The startup notification protocol involves sending X messages with the message_type atom _NET_STARTUP_INFO_BEGIN/_NET_STARTUP_INFO to the
root window. In multihead setups, the messages should go to the root window of the X screen where the launchee application is being launched.
As a general convention, any key-value pairs in startup notification messages that aren't understood by a given client should be ignored by that client. Also, any keys or message types not documented here must be prefixed by the two bytes "X-" as in "X-myproperty" or "X-mymessage".
All messages in the startup notification protocol refer to a "startup sequence"; a "startup sequence" reflects a single launch event.
Here are the message types ("message types" here means the type at the beginning of the message string, not the type of the X message):
new: message indicating that a new startup sequence has been initiated. The key-value pairs in this message indicate the properties of the startup sequence. If this startup sequence already exists, "new:" message is equivalent to "change:"(i.e. the values are updated instead of creating a new startup sequence).
change: message changing a startup sequence. Clients should update information about the matching startup sequence to the newly provides information. "change" messages contain a subset of the keys allowed in a "new" message. Not all attributes of the startup sequence are allowed to change over time.
"change:" messages not be taken as a "new:" message, i.e. they should not cause any feedback or similar.
If a client has not seen a "new:" message for the same sequence, then it should remember the information for later use in case a "new:" message comes later. "change:" messages without a following "new:" message can be discarded after a reasonable timeout (>= 1 minute). Rationale: The application may want to send certain information like timestamp or description first, before handling control to library code deciding if there should be actually any feedback for the launch.
remove: message ending a startup sequence. Once this message has been seen for a given sequence, any further messages referring to the sequence should be ignored.