App Menu Migration
This is an old page that has been superceded by the application menu retirement initiative, which has its own design guidelines.
Problem
The app menu as it exists today has a few pretty big problems:
- It's disconnected from the app window
- It doesn't make sense with multiple monitors
- No other plaform has this pattern
- The distinction between app-level and view-level menu items can be murky
- It's only accessible for the app which currently has focus
- Our own apps use it inconsistently
- Third-party apps have not widely adopted it, so it mostly sits there empty
- Some new users don't seem to find it, and e.g. assume that there are no preferences
Proposal
The proposed solution is to move the menu entries to the app window, into the hamburger menu most GNOME apps already have. This would be relatively easy to implement, and even blend in nicely with some third-party apps like Firefox and Chromium, which already use a similar pattern.
One loose end we'd need to tie up is the use of hamburger menus for things other than the "main" menu in apps. In order to solve this we could use the 3 dot menu for other view-specific menus.
Migration Plan
Since moving the app menu entries to the hamburger menu wouldn't really break anything, it would probably be fine to just start migrating apps now, while keeping the app menu in GNOME Shell in 3.30. This gives developers another cycle to adapt their apps, which should be plenty of time given that the effort required is minimal in most cases. In the next release we could remove the menu from the shell, and have apps that still use the old app menu use the fallback mechanism GTK already uses when running GNOME apps on other desktops.
So the timeline would be:
Summer 2018
- Announce initiative
- Update HIG
- Apps can start migrating during the 3.30 cycle
Fall 2018
- 3.30 ships with app menu support in the shell, but most apps don't use it anymore
- We warn developers that it will be deprecated in 3.32
Spring 2019
- 3.32 removes the menu from the shell, non-migrated apps use the GTK fallback
Examples
See Also