## Background This is an effort to document what work needs to be done to round out existing work for npe2 menu and keybinding contributions. ## Checklist - [ ] app-model menu refactors implemented - [ ] decision to be made for [NAP 6](https://github.com/napari/docs/blob/main/docs/naps/6-contributable-menus.md) on what menus should be contributable to - [ ] file menu (#4865) - [ ] plugins menu (#4991) - [ ] window menu (#4997) - [ ] new keybindings system implemented - [ ] consensus gathered on backend handling of keybindings, multi-part keybindings, and special cases in to-be-created NAP (see discussion in #5747) - [ ] bug fixes related to proper display of keybindings as text (#5604) - [ ] keybinding contributions handled from npe2 manifest (on-hold #5338) - [ ] enable editing of plugin-set keybindings via GUI (on-hold #5338) - [ ] npe1 code extracted into functions and separated into single file or module for easier deprecation and removal (on-hold #4692) - [ ] action manager removed, since old action system is replaced by `app-model`'s ## Dependencies - menus - **custom action** / wrapper that allows one to take the output of a function and do something with it - file menu - open sample menu needs to be able to take the output of the action to populate the viewer [see **custom action**] - plugins menu - widgets menus need to be able to take the output of the action to create the widget [see **custom action**] - NAP 6 needs live demo to gather consensus, requires [**custom action**] for demo - window menu - testing errors: pytest fixture problem where `init_qactions` are persisting across tests - for npe1 deprecation, the menu contributions don't need to be completed, just the internal app-model menu migrations - keybindings - NAP needs to be created and consensus gathered to determine how we will handle keybindings on the backend - a design for the new GUI for setting shortcuts may be needed ## API Changes Once these changes have been made, npe1 will need to be deprecated and eventually removed. The action manager will also be removed. Existing APIs for keybindings will be changed as documented in the to-be-created keybinding NAP.