Overview
Complexity: Low
Target branch: main
The Kolibri desktop app menu (src/kolibri_app/view.py) contains several items that are either redundant or auto-generated OS defaults that add noise without value. This task cleans up three specific areas: removes a standalone History menu, trims redundant File menu items, and takes explicit control of the Window menu to pare it down to essentials.
Context
The app menu is built in src/kolibri_app/view.py in KolibriView.__init__. Three areas need attention:
File menu: Currently contains "New Window", "Close Window", and "Open Kolibri Home Folder". The first two are redundant — "New Window" is rarely useful for a single-server app, and "Close Window" duplicates standard OS-level close shortcuts (Cmd+W, Alt+F4, Ctrl+W).
History menu: Currently a top-level menu containing only Back (Ctrl+[) and Forward (Ctrl+]). These
keyboard shortcuts function natively in the webview without the menu being present.
Window menu: The Window menu visible in the app is auto-generated by wxPython on macOS and is not defined in view.py. It currently includes Minimize, Zoom, Fill, Center, Move & Resize, Full Screen Tile, Remove Window from Set, Bring All to Front, and the window list — many of which are unnecessary for this app. Explicitly defining a Window menu in the menubar overrides the auto-generated one.
The Change
Three changes to the app menu in src/kolibri_app/view.py:
-
Remove the History menu. The History menu and its two items (Back, Forward) should be removed from the menubar entirely.
-
Trim the File menu. Remove the "New Window" and "Close Window" menu items. The File menu remains, containing only "Open Kolibri Home Folder". Reorganising where the remaining item ultimately belongs (per Figma, it moves to the macOS app menu) is out of scope.
-
Take explicit control of the Window menu. Add a Window menu to the menubar in view.py that includes
only: Minimize, Zoom, Bring All to Front, and the open window list. This overrides the verbose macOS
auto-generated Window menu from wxPython. The window list entry should reflect the current window title.
How to Get There
After fetching and preparing the Kolibri wheel (see README), run the app in development mode:
To verify the menu changes:
- Click each top-level menu item in the menu bar to inspect its contents
- On macOS, confirm the Window menu reflects the explicitly defined version (not the wx auto-generated one)
- Verify Back and Forward navigation still works in the webview via the native shortcuts (
Alt+Left / Alt+Right, mouse side-buttons) after the History menu is removed
Out of Scope
- Adding new menu items or menus not present today (e.g. Server menu, Settings submenu, About Kolibri, Check for
Updates, Troubleshooting)
- Changes to the tray/system menu bar icon or its menu
- Reorganizing the View menu, or restructuring where the remaining File menu item ultimately belongs
- Any changes to the Edit menu or its handlers
- Any changes to keyboard shortcut behavior in the webview itself
Acceptance Criteria
General
Testing
References
AI usage
Drafted with Claude Code. The scope, approach, and all acceptance criteria were reviewed and approved by a human before issue creation. The brainstorming session that produced this issue explored t-shirt sized options for the broader menu cleanup work; this issue captures the first increment.
Overview
Complexity: Low
Target branch: main
The Kolibri desktop app menu (
src/kolibri_app/view.py) contains several items that are either redundant or auto-generated OS defaults that add noise without value. This task cleans up three specific areas: removes a standalone History menu, trims redundant File menu items, and takes explicit control of the Window menu to pare it down to essentials.Context
The app menu is built in
src/kolibri_app/view.pyinKolibriView.__init__. Three areas need attention:File menu: Currently contains "New Window", "Close Window", and "Open Kolibri Home Folder". The first two are redundant — "New Window" is rarely useful for a single-server app, and "Close Window" duplicates standard OS-level close shortcuts (
Cmd+W,Alt+F4,Ctrl+W).History menu: Currently a top-level menu containing only Back (
Ctrl+[) and Forward (Ctrl+]). Thesekeyboard shortcuts function natively in the webview without the menu being present.
Window menu: The Window menu visible in the app is auto-generated by wxPython on macOS and is not defined in
view.py. It currently includes Minimize, Zoom, Fill, Center, Move & Resize, Full Screen Tile, Remove Window from Set, Bring All to Front, and the window list — many of which are unnecessary for this app. Explicitly defining aWindowmenu in the menubar overrides the auto-generated one.The Change
Three changes to the app menu in
src/kolibri_app/view.py:Remove the History menu. The
Historymenu and its two items (Back, Forward) should be removed from the menubar entirely.Trim the File menu. Remove the "New Window" and "Close Window" menu items. The File menu remains, containing only "Open Kolibri Home Folder". Reorganising where the remaining item ultimately belongs (per Figma, it moves to the macOS app menu) is out of scope.
Take explicit control of the Window menu. Add a
Windowmenu to the menubar inview.pythat includesonly: Minimize, Zoom, Bring All to Front, and the open window list. This overrides the verbose macOS
auto-generated Window menu from wxPython. The window list entry should reflect the current window title.
How to Get There
After fetching and preparing the Kolibri wheel (see README), run the app in development mode:
To verify the menu changes:
Alt+Left/Alt+Right, mouse side-buttons) after the History menu is removedOut of Scope
Updates, Troubleshooting)
Acceptance Criteria
General
Historymenu is removed from the menubar entirelyAlt+Left/Alt+Right, mouse side-buttons)Windowmenu is explicitly defined inview.pyand contains only: Minimize, Zoom, Bring All to Front,and the open window list
Testing
make run-devReferences
https://www.figma.com/design/MWOFJFBW3NEj12cFMo6isW/Mac-app?node-id=124-3237&p=f&t=DlpG1enJaOMTJCWB-0
AI usage
Drafted with Claude Code. The scope, approach, and all acceptance criteria were reviewed and approved by a human before issue creation. The brainstorming session that produced this issue explored t-shirt sized options for the broader menu cleanup work; this issue captures the first increment.