Menus & shortcuts
Every menu of tratto, every item and every key comes from one file, menu.json. The app builds the menu bar, the context menus, the keyboard shortcuts sheet and Quick Command from it.
How an item is declared
{ "command": "view.zen", "label": "menu.view.zen", "shortcut": "meta+control+z", "linux_shortcut": "control+alt+z" }
commandis one of the commands the app knows; a file that names another is refused.labelis a key of the texts, so the menu follows the language.shortcutis written with the macOS modifiers (metais⌘).scope,homeoride, limits a key to one module, where it may reuse a key the rest of the app has.
Menus that follow the module
The menu bar shows only what belongs to the module on screen. A menu, a submenu or an item may name its modules:
{ "label": "menu.repository", "modes": ["git", "ide"], "groups": [ … ] }
modeslists modules by name:home,git,ide,database,agents,pm. An unknown name or an empty list is refused.- Without
modes, the element shows in every module. - A group or a menu left empty in a module leaves the bar there. Its keys go with it.
So Database and PM show File, Edit, View, Window and Help, without Repository, Format or Actions.
The keys on Linux
On Linux, ⌘ is read as Ctrl. When that would collide with what the desktop keeps for itself (the list taken_by_desktop: Ctrl+Alt+T and Ctrl+Alt+L) or with another item, the item either has a linux_shortcut of its own or no key at all. The shortcuts reference shows the result for every item.
Can I change a key?
Not from the configuration folder yet: menu.json ships with the app and is read only from there. Changing a key today means changing the file in tratto's source and building the app.