No comments yet, so I fleshed this out some more. Please comment on this proposal.
The proposal is to implement user-customizable toolbars in Inkscape and a drag-and-drop interface to modify them, familiar from Firefox and Evince. This includes the main toolbar and the tools bar.
One of the motivations for this project is that Inkscape is quickly becoming unusable on small screens due to the amount of new features and tools added. Additionally, there is a planned project to create a simplified version of Inkscape, intented for children and small form factor devices. Customizable toolbars would be the first step to allow this project to be completed without having to maintain a separate source tree for it (i.e. just by shipping a modified preferences file).
The toolbar code in Inkscape dates back to Sodipodi, and as such uses GTK via its C interface. The implementation will involve porting this code to use the C++ bindings. Drag-and-drop will be implemented using the methods exposed by the Gtk::Toolbar class.
Implementation plan: 1. Port the toolbar code to gtkmm. 2. Create the preferenes infrastructure to store the toolbar layout. 3. Modify the toolbar code to create the toolbar from the preferences file. 4. Create a dialog that will allow the user to customize the toolbar contents by dragging and dropping buttons onto the toolbar. 5. Create an API to allow extensions to define new toolbar buttons. Modify one extension to make use of this API.
Evince can be used as an UI blueprint.
Actualy, this is very much in scope of the Kidscape project: https://blueprints.launchpad.net/inkscape/+spec/kidscape-project
Regards, Krzysztof Kosiński