README: PackageKit installs missing GStreamer plugins as it requested: this is how the whole system is designed to work. Introduction: 1. Package installs pk-gstreamer-install into /usr/libexec 2. _If_ the distro wants PackageKit to handle the codec install, and not an application like codeina then you need to symlink pk-gstreamer-install to gst-install-plugins-helper 4. Distribution patches /etc/PackageKit/Vendor.conf with URLs to wiki pages. 3. Done. It's really that simple. Detecting the calling application: When an application calls the DBUS interface to install plugins or codecs then the XID and timestamp along with the codec string is passed on the interface. The caller (the exe from ConsoleKit) is then sent to SearchFile and the result used in the GUI. This ensures that all applications can use the interface, but they cannot pretend to be other applications by changing application window properties. This of course, causes a problem as all installs will be resolved to the PackageKit-gstreamer-plugin as this owns the /usr/libexec/pk-gstreamer-install file. This file, /usr/libexec/pk-gstreamer-install is treated specially (as it is compiled, and cannot be modified without root access). In this special case we use the XID of the calling window (provided by GStreamer) and lookup the program name and icon from the window properties. Notes: * You will need to restart any applications using GStreamer before they will request plugings using PackageKit. * Although PackageKit 0.3.4 supports codec installing, 0.3.6 is the first release that returns the correct return values to GStreamer. * Totem versions less than 2.24.1 have a bug where it sends the wrong XID, you need to upgrade for focus stealing prevention to work and for the title and icon to be set correctly.