Application Menubar states and usability
Open, NormalPublic

Description

Right now we have many states for app menubars:

  • Full menubar inside the app window, below the titlebar (default)
  • ^^, but hidden on a per-app basis using Ctrl+M or SettingsHide Menubar
  • Button in the titlebar with the full menu in it
  • Full menu widget inside a panel on the top of the screen, to make a global menu
  • Button in the toolbar that has most but not all menu functionality (only Dolphin does this to my knowledge)

We have a few usability issues:

  1. Dolphin does something completely different from everyone else and has a different default
  1. When in-window menubars are in use, you can hide them on a per-app basis, and most apps offer a fairly sub-par user experience in this case: a dialog box warns you about what you're going to do, but thereafter there is no GUI way to get the menubar back and all the menu functionality becomes invisible, accessible only via keyboard shortcuts). Other apps don't even give you a dialog box.
  1. Changing the global menu location setting is done in multiple places; you add a widget to get a global menubar, or add a window decoration button to add a titlebar menu. There's no simple single UI to globally choose the menu states like this:
Application Menu location: (o) App window
                           ( ) Titlebar button
                           ( ) Panel at the top of the screen

I think Dolphin should drop its Control menu and use the current set of options, defaulting to whatever the global default is (currently in-app menus). And we should create a really easy UI to control the global menu state that will create window decoration buttons and panels+widgets as needed depending on what you choose. Finally, we should make this the only UI to control menu location and visibility, and remove the ability to turn on or off menus on a per-app basis; people who don't want menus in their windows should use a global menu or the titlebar button. That way the functionality never becomes totally invisible and lost.

ngraham created this task.Oct 10 2018, 2:46 PM
ngraham triaged this task as Normal priority.
ngraham updated the task description. (Show Details)Oct 10 2018, 3:05 PM
ngraham updated the task description. (Show Details)
rizzitello added a subscriber: rizzitello.EditedOct 10 2018, 3:12 PM

Just to add a few things.

  • This should be transparent to applications (add to Kwin ?)
  • In addition to a setting, adding or removing a global menu widget should move the menu to the correctly place. I feel this will make the feature more more intuitive as when you add a global menu widget they the menus will move there and when removing the menu bar the applications will get their menu bars back automagicly.
  • The global menu should allow for a hamburger menu button as well as the normal menu bar.

Settings could be something like

Menu bar location:

(o) Automaticly
(o) Always show in app
(o) Always show in global menu
[x] Show menu button in title bar when show in app.

(o) = Radio button

  • = Checkbox
Codezela added a subscriber: Codezela.EditedOct 10 2018, 6:56 PM

what about another option global menu titlebar like unity ubuntu
I mean full menu not only titlebar button

it may secure more space in the vertical window spacing and in the panel

i think its good idea because kde wont go dwd or csd

Personally I like the approach dolphin uses right now. I am no friend of having a global menu nor I like to have another button cluttering my title bar but the worst case would be to have the complete menubar shown in dolphin just becuase the other options does not suit me. I think it is a good idea to keeps the things clean and simple and this is was dolphin does. Instead of proposing to remove this feature just because is it not following the other applications we maybe could think the way around and implement such simpler menu structures inside the applications.

Personally I like the approach dolphin uses right now. I am no friend of having a global menu nor I like to have another button cluttering my title bar but the worst case would be to have the complete menubar shown in dolphin just becuase the other options does not suit me. I think it is a good idea to keeps the things clean and simple and this is was dolphin does. Instead of proposing to remove this feature just because is it not following the other applications we maybe could think the way around and implement such simpler menu structures inside the applications.

In order to be consistent across all our applications we need to decide do we extend the button idea of dolphin or do we just drop it? If we extend it (and i think we should) then it should be done in a way where its independent of the applications it would prevent us from having to update each app and hopefully done in a way where not qt apps also get their menus moved to wherever. I would also rather have hamburgers menus in the toolbar area instead of the title bar, I think those should both be options and we let the user have the option to change to one or the other.

ngraham added a comment.EditedOct 11 2018, 11:10 PM

I agree, if we keep the Dolphin-style menu-in-a-toolbar-button, we need to radically alter how it's generated, because right now it has many problems. Right now Dolphin just has a bunch of custom code to build it up from scratch, which does not scale as every single app would have to do the same. Also it actually omits quite a few of the items in the real menu (e.g. see D15609). Obviously it is not ideal for functionality to be invisible like this, which runs counter to the entire purpose of having a main menu.

ndavis added a subscriber: ndavis.Oct 13 2018, 2:10 AM

what about another option global menu titlebar like unity ubuntu
I mean full menu not only titlebar button

it may secure more space in the vertical window spacing and in the panel

i think its good idea because kde wont go dwd or csd

I like this idea.
Here are a bunch of mockups I made:


A related idea I thought of while making those was that the locally integrated titlebar appmenu could collapse into a titlebar appmenu button when the window becomes too small.

I like that idea too. My favorite is #2, but without the hamburger menu when there's enough room to display the whole thing. I think it's plenty clear that it's a menubar.

ndavis added a comment.EditedOct 13 2018, 2:46 AM

I like that idea too. My favorite is #2, but without the hamburger menu when there's enough room to display the whole thing. I think it's plenty clear that it's a menubar.

Part of the idea behind #1 was this:

  1. The appmenu button will remain highlighted as long as the horizontal appmenu is active
  2. When the window becomes too small, the horizontal appmenu will slide/collapse into the appmenu button
  3. The appmenu button will stop being highlighted until someone activates the vertical appmenu or increases the size of the window so that the horizontal appmenu comes back.
  4. The user can activate/deactivate a titlebar appmenu at any time by clicking the appmenu button.
    1. The reason for this is that having a whole appmenu in the titlebar could lead to a lot of visual clutter, so a user may want to occasionally reduce the amount of visual clutter without needing to go into system settings.

Ah, I see. That seems like a fairly well-thought-out proposal!

I think we would need to keep the older style menu area as an option as well (I also like #2). needed for thin titlebars, windows without them, users who do not want them in the title bar.

ndavis added a comment.EditedOct 15 2018, 6:59 PM

The horizontal titlebar appmenu would also need to be automatically disabled when KWin titlebar tabs are in use since the two would naturally be incompatible.

ngraham updated the task description. (Show Details)Dec 19 2018, 2:22 PM

Let me get specific about this proposal.

We pput a new setting in the workspace KCM:

Application Menu location: (o) Beneath window titlebar
                           ( ) Window titlebar button
                           ( ) Panel at the top of the screen

Clicking the second radio button would add the appropriate window decoration button to the titlebar, on the left side.

Clicking the third radio button would add a new panel with a global menu widget in it to the top of the screen.

The window decoration button and/or panel would likewise automatically disappear if a different option was selected. In the case of the panel holding the global menu plasmoid, we should probably remember any panel customizations and additional widgets that were added to it, such that if the user re-enables the global menu option, the old panel will re-appear, including all the customizations they made to it.

The setting would immediately affect all apps.

Thereafter, the per-application options to hide and show menubars could be removed, because the options to have a more space-saving menubar would be more discoverable.

abetts added a subscriber: abetts.Dec 19 2018, 3:12 PM

Let me get specific about this proposal.

We pput a new setting in the workspace KCM:

Application Menu location: (o) Beneath window titlebar
                           ( ) Window titlebar button
                           ( ) Panel at the top of the screen

Clicking the second radio button would add the appropriate window decoration button to the titlebar, on the left side.

Clicking the third radio button would add a new panel with a global menu widget in it to the top of the screen.

The window decoration button and/or panel would likewise automatically disappear if a different option was selected. In the case of the panel holding the global menu plasmoid, we should probably remember any panel customizations and additional widgets that were added to it, such that if the user re-enables the global menu option, the old panel will re-appear, including all the customizations they made to it.

The setting would immediately affect all apps.

Thereafter, the per-application options to hide and show menubars could be removed, because the options to have a more space-saving menubar would be more discoverable.

I like your proposal Nate. My only thing is on the language used for the options. Since we are talking about placement, how about we provide words that indicate placement more explicitly:

Place Application Menu: (o) Below window titlebar
                           ( ) Within Window titlebar button
                           ( ) At the top of the screen Panel

Let me get specific about this proposal.

We pput a new setting in the workspace KCM:

Application Menu location: (o) Beneath window titlebar
                           ( ) Window titlebar button
                           ( ) Panel at the top of the screen

Clicking the second radio button would add the appropriate window decoration button to the titlebar, on the left side.

Clicking the third radio button would add a new panel with a global menu widget in it to the top of the screen.

The window decoration button and/or panel would likewise automatically disappear if a different option was selected. In the case of the panel holding the global menu plasmoid, we should probably remember any panel customizations and additional widgets that were added to it, such that if the user re-enables the global menu option, the old panel will re-appear, including all the customizations they made to it.

The setting would immediately affect all apps.

Thereafter, the per-application options to hide and show menubars could be removed, because the options to have a more space-saving menubar would be more discoverable.

The window titlebar button and global menu don't need to be mutually exclusive options. Having both works, except that shortcuts like Alt+f for the File menu don't always work well.