[UI Proposal / discussion] macOS-specific Title bar

Having used Blender for quite some time I have grown accustomed to its interface. However, there’s always room for improvement. I’m looking to help improve the software in the area of usability, consistency and adoption of standards such as the ones discussed in this post.

Being very new to the Blender developer community, I’m still trying to find my way around. What would be the best way for me to work on these UI projects? I have currently looked into the “User Interface” project on developer.blender.org but I don’t know how to get in contact there.

Current implementation

The following screenshot is the current implementation (Blender 2.83 on macOS)

Proposal

I’m proposing to change the title bar and menu bar to better fit standard practices for macOS and improve usability.

  1. Implement the menu items (File, Edit, Render, Window and Help) in the macOS menu bar to free up space
  2. Integrate the workspace tabs, scene selector and view layer selector into the title bar.
  3. Keep enough draggable space (on the left of the workspace tabs and above the workspace tabs, scene selector and view layer selector)
  4. Have the add workspace button always visible, with a gradient to communicate scrollability
  5. Make the active workspace tab the colour of the space in between windows to communicate hierarchy.

Mockups

Dark interface:

Light interface:

Full window:


Argumentation

  • In line with the human interface guidelines of macOS - Menus in the menu bar instead of the title bar in macOS are used by all programs and are expected from users.
  • Reduction in vertical height
  • More workspace tabs on smaller screens
  • A clear indication of the workspace tab bar being scrollable and an always visible add button might entice people working in smaller windows to explore more workspaces.

Considerations

  1. The scene selector and view layer selector could be redesigned to take up less space or adaptively resize when the window becomes smaller. That way the workspace tabs get priority and draggable space could be increased. (This would have implications for other “asset link browsers” however)

  2. Contrast between the main interface and the title bar

  3. Feasibility. How much effort does platform specific integration of the title bar take?

  4. When the window is out of focus, the title bar should reflect this (e.g. become lighter and greyed out) How can this be implemented with taking themes into account?

  5. Windows and Linux implementation.

10 Likes

I would like to add some objections to this design proposal myself:

It could create a separation between Blender users who use macOS or Windows, for example in following tutorials or documentation. There’s thus something to be said for trading some platform specific standards for true identical user interfaces across platforms.

To truly understand the impact this could have, it is important to look at how other programs have tackled this problem and how that turned out for the aforementioned areas.

Maybe a first step would be to have double menu bars, one that stays in the platform independent user interface and the other that fits the macOS standards. Just a thought.

Are there maybe discussions I’m missing about this sort of topic? About platform specific UI implementations?

1 Like

Currently all the menus all coded in space_topbar.py and can be uniformly edited for all platforms at once. (without learning a new language, I’m assuming objective-c would be used)

People develop addons and may want to add a new menu item. Can the macOS menus be edited by Python API ?

Lastly, menu items in macOS cannot be right-clicked upon.
image

3 Likes

There’s not much of a design argument against this. We always wanted it to be something like that. Blender in general could integrate itself much better inside each host OS.

The main issue is a technical one: Since Blender’s menus are defined in Python, and since addons can extend any menu, we can’t just statically include these items easily in the native macOS menu bar.

In theory it is possible to write some kind of wrapper that would take the Python menus as an input and output native macOS menus. The main issue then is a lack of macOS developers with this kind of focus. I would love if we could get to do this

6 Likes

I’m on Windows, not Mac, but I’d love to see exactly this level of platform integration. The Mac version should feel part of that ecosystem, and the Windows version should follow those conventions. The changes shown really wouldn’t be disruptive for tutorials as it is just outer-edge interface changes. This is normal for many other cross-platform apps. Done properly it could still be extended by python addons.

3 Likes

Let’s see: the lates incarnations of developer tools for Mac and Windows (Xcode, Visual Studio) do get away with the top bar, title bar, caption bar, etc.
An application should follow/addapt the trends for each specific platform and not enforce unique workflow, or Windows workflow on MacOS, Linux workflow on Haiku OS or Haiku OS workflow on Windows.

After I have experienced this design in Xcode and Visual Studio among many applications adopting this design. I really hope Blender will implement this.
Wouldn’t be enough to just remove (maybe as an option for those who want to keep it) the title bar and custom render these buttons inside the Blender UI according to the platform? The biggest implementation issue I can imagine would be the drag&move, double click to maximize/minimize window support.

What was not clear to me if Blender developer were OK with this design proposal: