Running applications expose information on what information they can provide and what they will accept. Bring type systems up into the desktop environment. Everything - including programs, have a type and have typed parameters. A system should help you fulfil type arguments for running programs. For example:
You have window open that is requesting an IP address.
Your machine exposes an IP address and your work VPN provides an IP address. Your online friends provide an IP address for a game server in a window.
You can pick the IP address from the available sources without having to type it in.
You have an email open in a browser which is listing attachments. In essence, this window is 'offering' you files. You should be able to see these files listed in file selection dialogs.
drag and drop is no longer handled by clumsy drag and drop APIs