The multi-program facet of this reminds me of Plan9's [plumber](http://doc.cat-v.org/plan_9/4th_edition/papers/plumb) concept, which is an OS component allowing communication between programs in the form of "plumbing messages". The plumber processes plumbing messages according to a rules file, passing them on to other applications. This rules file allows the user to easily configure which piece of data gets delivered where in a uniform fashion.
Plan9's plumber was mostly text data oriented, but it could in principle work with any kind of resource (images, audio files, documents). It seems naturally extensible to URIs. It goes a bit deeper than your idea by saying URIs and browsers aren't special and that all kinds of data should be plumbed between all kinds of applications (for instance, a text editor detecting a DOI in a text file and converting it into a clickable link that sends a plumbing message to the browser, which would then open the corresponding doi.org page).
Plan9's plumber was mostly text data oriented, but it could in principle work with any kind of resource (images, audio files, documents). It seems naturally extensible to URIs. It goes a bit deeper than your idea by saying URIs and browsers aren't special and that all kinds of data should be plumbed between all kinds of applications (for instance, a text editor detecting a DOI in a text file and converting it into a clickable link that sends a plumbing message to the browser, which would then open the corresponding doi.org page).