** Changed in: bamf Status: Fix Released => Fix Committed -- You received this bug notification because you are a member of Desktop Packages, which is subscribed to unity in Ubuntu. Matching subscriptions: dp-unity, dp-unity2d https://bugs.launchpad.net/bugs/692462
Title: unity confused with chrome/chromium web apps Status in BAMF Application Matching Framework: Fix Committed Status in Chromium: Unknown Status in The Window Navigator Construction Kit: libwnck: Fix Released Status in Unity: Fix Released Status in Unity 2D: Invalid Status in Unity Distro Priority: Fix Committed Status in “bamf” package in Ubuntu: Confirmed Status in “chromium-browser” package in Ubuntu: Fix Released Status in “unity” package in Ubuntu: Fix Released Status in “unity-2d” package in Ubuntu: Invalid Status in “bamf” source package in Precise: Confirmed Status in “chromium-browser” source package in Precise: Fix Released Status in “unity” source package in Precise: Fix Released Status in “unity-2d” source package in Precise: Invalid Bug description: SRU testcase 1. start chromium-browser 2. create a webapp for twitter.com 3. drag it to launcher while chromium is already running 4. click its icon you will see twitter.com is opened in a new window but is still associated with chromium icon 5. now install Bamf from precise-proposed 6. note that twitter window is associated to the newly dropped icon in the launcher. On my classic desktop panel, i have 2 webapps launchers in the gnome-panel. Basically, they are just "chromium-browser --app=http://some.web.site --some-other-flags ..." + a nice icon Chromium is my default browser. In the new unity based desktop mode, those webapps now appear nicely. The problem is that when i start my default web browser, unity highlights on the left one of my webapp launchers, instead of creating one for the browser itself. And worse.. once the browser is running, i can't start this webapp anymore as unity keeps raising the main browser instead. For the other webapp, it works as expected. ii libunity-misc0 0.1.1-0ubuntu3 Miscellaneous functions for Unity - shared library ii libunity0 0.2.46-0ubuntu5 binding to get places into the launcher - shared library ii libunity3 3.2.8-0ubuntu1 binding to get places into the launcher - shared library ii unity 3.2.8-0ubuntu1 Interface for Ubuntu Desktop Edition ii unity-asset-pool 0.8.18-0ubuntu2 Unity Assets Pool ii unity-common 3.2.8-0ubuntu1 Common files for the interface for Ubuntu Desktop Edition ii unity-place-applications 0.2.26-0ubuntu2 Application place for unity ii unity-place-files 0.5.32-0ubuntu1 File place for unity ========================================================================= This bug would be an ideal bug for someone to get started hacking on Unity, here's some information: * Time to fix: unknown but large * Difficulty: brutal * Implementation: This is a complex issue to solve correctly. The most correct implementation associates URI's with windows inside of bamf. Such that bamf's exported tree becomes BamfApplication -> BamfWindow ->BamfUri (currently called BamfTab and incomplete in source). To achieve this goal there are three primary components. The first is a BamfUriSource. This source is a class used by an application to export its known URI's over dbus to BAMF. The implementation details are not that important, however it is important that it be trackable (so if it crashes we can eliminate references to it) and that it provide two way communication. In short, it needs to tell the bamf daemon about all the uri's it has, and the bamf daemon needs to in turn be able to ask a bamf uri source to "show" a specific uri in its window. Bamf Daemon will then convert the BamfUriSource into many BamfUri's for exporting over the bus. A bamf uri should look something like and inherit from BamfView: char * bamf_uri_get_uri (BamfUri *self) char * bamf_uri_get_icon (BamfUri *self) char * bamf_uri_get_title (BamfUri *self) void bamf_uri_show (BamfUri *self) In short: that part sucks The second part is making web browsers export tab uri information over dbus using BamfUriSource. This should be somewhat simple if you know the browser plugin API's using a standard NPAPI plugin. The C potion of the plugin can consume bamf and pass data along, while the javascript can communicate with the browser to get relevant information about the state of the system. The third and final task is to hook this all into unity. This is relatively straightforward to do. By making a launcher shortcut that points to a uri rather than an application, unity can associate an BamfUri with it, watching when it opens and closes. When clicked, unity can call bamf_uri_show () on the proper uri, which will result in the window raising itself and flipping to the appropriate tab. Excellent. The most clarifying thing I can think to say here is that when you call bamf_uri_show, what should happen is libbamf will call Show on the correct dbus object that was exported by bamfdaemon. Bamfdaemon will then find the associated BamfUriSource for that BamfUri object, can call show back on it, passing along the id of the uri it wishes to have shown. The NPAPI plugin will receive this call, and pass the information up to the javascript layer, which should then raise the window and switch tabs. Like a boss. * Where to look: lp:bamf and lp:unity are the primary consumers. -lp:bamf requires the most work. BamfTabSource and BamfTab need to be converted, exported, and consumed in libbamf -lp:unity would simply consume the newly exported information * Workflow information: http://unity.ubuntu.com/getinvolved/ To manage notifications about this bug go to: https://bugs.launchpad.net/bamf/+bug/692462/+subscriptions -- Mailing list: https://launchpad.net/~desktop-packages Post to : desktop-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~desktop-packages More help : https://help.launchpad.net/ListHelp