Here are two things I like:
- Tabs produced by window managers. For example, Fluxbox. This encourages applications to not do it themselves, forming consistency in the overall desktop experience.
- The non-overlapping nature of Blender’s user interface. Really, it’s cool design and completely makes sense for any workflow.
However, I don’t like that applications keep implementing these two things themselves, in different ways. For example, The GIMP and Inkscape both have systems for docking / undocking windows. They both feel profoundly different. One nice thing about IDEs is docks, but many developers prefer working in a text editor with a terminal for the extra speed and flexibility.
How about we get the window manager to do this? Could be super simple. Drag a window to sit right beside another, press a magic button and they “glue” to each other. Now they share the same border, so resize operations influence both windows at once and when dragging both windows get moved. Perhaps the title bar of the glued window could change to reflect its new status as a child window, of sorts.
This could happen automatically (or semi-automatically, such as not requiring the magic button) for Utility windows and dialogs when they are dragged beside their parent window.
For extra points, the data about docked windows could be available to other software. For example, if we ever get a framework for applications to find and control what files (from a user perspective) they are working on, we can have a program set a group of docked windows to all jump to the same file.
This would be another nice step towards the Unix philosophy, allowing us to rid the world of redundant shells that dock windows :)