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.

Mockups

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