Improved interoperability between screenlets and other applications (e.g. GtkScreenletDockWidget)

Registered by Rico Pfaus

Currently the screenlets are stand-alone applications that "exist" on your desktop or screen. They are able to communicate with each other, but they are fairly useless for third-party (gtk-)applications. My idea/plan (and also suggested by others) is to enable the screenlets to be embedded into other applications, preferably using a simple drag/drop mechanism. If a screenlet is embedded into another application it should continue working as usual and keep all its input-handling and interaction. It should just get scaled down to fit into the "host".

Ideally the embedding app should have full access to the screenlet's API and functions. That way existing applications could be extended by special screenlets (e.g. a rythmbox-control-panel could be "plugged out" of the player to offer a more simplified and windowless control). Combining the "two worlds" (widget-apps and "real" gtk apps) would offer an amazing flexibility and a whole new dimension of application design, (much like plasma on KDE, just faster).

To realize this I thought of having a general ScreenletDock-widget (maybe derived from gtk.Container) which other apps (e.g. AWN or gnome-panel) can embed and then offer a screenlet-docking-area. It could hopefully use a gtk.Socket/gtk.Plug for that (based on XEmbed). It would require several significant changes to the screenlets core, but should still be fairly simple to implement.

The only disadvantage I can see is that the screenlets would then be very closely tied to gnome/gtk-oriented systems. The possibility of abstracting the drawing code from the underlying toolkit would decrease (or at least get more difficult). But meanwhile I am more or less sure that KDE4's plasma will become the desktop-widget-engine of choice for most KDE-users, so maybe it is time to decide for gtk to be able to completely focus on gtk/gnome-integration. KDE-users will still be able to use the screenlets either way.

EDIT: On the long run this feature could allow to completely modularize modern desktop applications. Imagine having a ruler within Gimp that can be simply dragged out of the gimp and work as stand-alone ruler until you drag it into inkscape and use it in there. The same could work for color-palettes and other often used widgets. An imageviewer could have a pluggable image-viewing-area that becomes a picture-frame-screenlet once dragged out of its embedding imageviewer.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Essential
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
Drafting
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.